いろんな銘柄のアノマリーを調べる。
前回も、アノマリーの記事を書いているのだが、
今回は、10年間の株価を1つのチャートに合成しシンプルに表してみた。
1.コーディング
下記のコードをコピペしてライブラリをインストール。
pip install yfinance
下記のコードをコピペして実行。
「期間」や「銘柄」を変更したり、
集計方法を「標準値」から「平均値」に変更して使ってみてください。
詳細はコメントに記載しました。
(機能追加:今年の株価を赤のチャートで追加)
import yfinance as yf
import pandas as pd
from datetime import datetime as dt
import datetime
from matplotlib import dates
import matplotlib.pyplot as plt
%matplotlib inline
# データ取得期間設定
year_s="2011"
year_e="2021"
start = year_s+'-01-01'
end = datetime.date.today().strftime("%Y-%m-%d")
# 銘柄の指定 S&P500,NASDAQ,Nikkei225
codelist = ['^GSPC','^IXIC','^N225',
# 半導体関連
'SMH',"SOXX",
# 10Y金利,債券,ドルインデックス,ドル円
"^TNX","TLT","DX=F","USDJPY=X",
# ゴールド,銅,原油
"GC=F","HG=F","CL=F"]
for i in range(len(codelist)):
ticker=codelist[i]
# 株価データ取得
data_stock = pd.DataFrame(yf.download(ticker, start=start, end=end)["Adj Close"])
# 株価を年で分割(開始処理)
df_tmp=data_stock[year_s].copy()
df_tmp.rename(columns={'Adj Close': year_s },inplace=True)
df_tmp=df_tmp.reset_index()
df_tmp=df_tmp.drop("Date",axis=1)
# 株価を年で分割(繰り返し処理)
for i in range(int(year_s)+1,int(year_e)):
df_tmp2=data_stock[str(i)].copy()
df_tmp2.rename(columns={'Adj Close': i },inplace=True)
df_tmp2=df_tmp2.reset_index()
df_tmp2=df_tmp2.drop("Date",axis=1)
df_tmp=df_tmp.join(df_tmp2)
# 株価を増加率に変換
df_tmp=(1+df_tmp.pct_change()).cumprod()
# 経過日毎に10年間の中央値を計算
df_st=df_tmp.dropna().median(axis=1)
# 経過日毎に10年間の平均値で計算したい場合
# df_st=df_tmp.dropna().mean(axis=1)
fig, ax1 = plt.subplots(figsize=(8,4))
fig.patch.set_facecolor('black')
ax1.patch.set_facecolor('black')
# グラフ作成と光沢感を出す繰り返し処理
for n in range(1,10):
ax1.plot(df_st,linewidth=(2*n),alpha=0.4/(1*n),color="#00ff41")
ax1.plot(df_st,color="white",alpha=0.9,linewidth=1)
# 今年の株価 version02
df_tmp3=data_stock[(year_e)].copy()
df_tmp3.rename(columns={'Adj Close': i },inplace=True)
df_tmp3=df_tmp3.reset_index()
df_tmp3=df_tmp3.drop("Date",axis=1)
# 株価を増加率に変換(今年の株価 version02)
df_tmp3=(1+df_tmp3.pct_change()).cumprod()
# グラフ作成と光沢感を出す繰り返し処理(今年の株価 version02)
for n in range(1,10):
ax1.plot(df_tmp3,linewidth=(2*n),alpha=0.4/(1*n),color="deeppink")
ax1.plot(df_tmp3,color="white",alpha=0.9,linewidth=1)
# グラフ関連処理
plt.title(ticker, color="white",fontsize=30)
ax1.set_xlabel(' hippen_research Ltd.',fontsize=15,color="gray",ha='left')
ax1.tick_params(axis='x', colors='#565656',labelsize=12)
ax1.tick_params(axis='y', colors='#565656',labelsize=12)
ax1.axhline(y=1,color="#565656",alpha=0.3)
##本日の日付(年初来の営業日数を計算し縦線を引く処理)
df_date=data_stock[year_e].copy()
ax1.axvline(x=len(df_date),color="white",alpha=0.2)
##年初来の営業日数###
ax1.set_xticks([1,20,39,62,83,103,125,147,168,189,211,231])
##月をメモリに設定###
ax1.set_xticklabels(["1","2","3","4","5","6","7","8","9","10","11","12"])
plt.show()
plt.close()
# ここまで
2.実行結果
10年間の株価を中央値で合成したチャートは以下の通り。
チャートの見方
縦軸:年初来リターンの標準値
横軸:月(年初からの経過日数を月へ換算)
縦線:現在日付(6/26時点)
S&P500
年初から2月中旬まで上昇し、その後下落。
3月中旬に底を付け、5月初旬まで上昇。
5月初旬から6月末まで横這い。
6月末から9月初旬まで上昇。
9月初旬から10月中旬まで下落し、年末へ向け上昇へ。
Nasdaq
年初から9月初旬まで上昇。
9月下旬に下落して、11月中旬に底を付け、少し上昇して横這い。
日経225
3月初旬から4月中旬まで下落。
4月中旬から5月初旬まで上昇後、10月中旬まで横這い。
10月中旬から年末へ向け上昇。
ヴァンエック・ベクトル半導体
6月末ぐらいから上昇。10月中旬に調整がありつつも上昇。
iシェアーズ・セミコンダクターETF
6月末ぐらいから上昇。10月中旬に調整がありつつも上昇。
金利10Y
8月末ぐらいまで下落。そこから上昇へトレンド転換。
長期債
8月末ぐらいまで上昇。そこから下落へトレンド転換。
ドルインデックス
5月中旬、8月下旬、11月初旬が高くなっている。
ドル円
2月から8月中旬まで下落し、上昇へトレンド転換。10月中旬からもみ合い。
ゴールド
6月初旬までもみ合い。6月初旬から9月初旬まで上昇。その後、下落。
銅
6月末に底値をつけ、上昇。7月中旬に上昇後、下落し、もみ合い。
原油
6月まで上昇。しばらくもみ合ったあと7月中旬から下落。
10月初に底値を付け上昇後、下落し、もみ合い。
今後も同じようになるとは限らないけれど、
何かの参考になれば幸いです。
では!
おつかれさん「缶コーヒー1杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
参考になったら「ハートボタン、フォロー、リツイート」をお願いします。
読まれる可能性があがるので、次の記事を書くやる気が出ます。
おまけ
おまけには、上記のプログラムで、いくつかの個別銘柄を見た結果を、おまけ程度ですが、つけておきます。
ここから先は
94字
/
3画像
¥ 100
この記事が気に入ったらサポートをしてみませんか?