Yen Currency Trend

 I found the trend by this code.

This trend is from Japanese Workers' Pay Day(Every 25th day in a month).



'''python

import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

# 分析期間の設定
dateStart = "2015-01-01"
dateEnd = "2026-05-23"

ticker = "JPY=X" # ドル円

# yfinanceから取得(仕様変更の警告回避のため auto_adjust を明示)
df = yf.download(
ticker,
start=dateStart,
end=dateEnd,
auto_adjust=False,
progress=False
)

# yfinanceの仕様変更(MultiIndex化)に対応して終値を安全に抽出
if isinstance(df.columns, pd.MultiIndex):
close = df["Close"][ticker].dropna()
else:
close = df["Close"].dropna()

# 前日比の変化率(%)を計算
# ドル円の場合、プラス = ドル買い/円売り、マイナス = ドル売り/円買い
daily_return = close.pct_change() * 100

# 分析用のDataFrameを作成
analysis_df = pd.DataFrame({"Return": daily_return})
analysis_df.index = pd.to_datetime(analysis_df.index)

# 「第何週目か」を計算(1日〜7日=第1週、8日〜14日=第2週...)
analysis_df["Day_of_Month"] = analysis_df.index.day
analysis_df["Week_of_Month"] = (analysis_df["Day_of_Month"] - 1) // 7 + 1

# 「何曜日か」を取得 (0=月曜, 1=火曜, ..., 4=金曜)
days_map = {0: "1_Mon", 1: "2_Tue", 2: "3_Wed", 3: "4_Thu", 4: "5_Fri"}
analysis_df["Day_of_Week"] = analysis_df.index.dayofweek.map(days_map)

# 為替市場のメインである平日(月〜金)のみに絞る
analysis_df = analysis_df[analysis_df.index.dayofweek < 5]

# 第何週 × 曜日 ごとの「平均変化率」を集計
pivot_table = analysis_df.pivot_table(
values="Return",
index="Week_of_Month",
columns="Day_of_Week",
aggfunc="mean"
)

# ヒートマップで可視化
plt.figure(figsize=(10, 6))
# ゼロを基準(center=0)にして、赤=ドル買い/円売り、青=ドル売り/円買い
sns.heatmap(pivot_table, annot=True, cmap="coolwarm", center=0, fmt=".3f",
cbar_kws={'label': 'Average Daily Return (%)'})

plt.title("USD/JPY Average Daily Return by Week and Day\n(Positive[Red] = USD Buy / JPY Sell)")
plt.xlabel("Day of the Week")
plt.ylabel("Week of the Month (1st to 5th)")
plt.tight_layout()
plt.show()

'''

Popular posts from this blog

Ratios Between Gold, Platinum and Silver

Difference between Type Stack (S) and Type Queue (Q)

Learning Methods and Result Curves