見出し画像

いろんな銘柄のアノマリーを調べる。

前回も、アノマリーの記事を書いているのだが、

今回は、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

画像14

年初から2月中旬まで上昇し、その後下落。
3月中旬に底を付け5月初旬まで上昇
5月初旬から6月末まで横這い
6月末から9月初旬まで上昇
9月初旬から10月中旬まで下落し、年末へ向け上昇へ。

Nasdaq

画像14

年初から9月初旬まで上昇
9月下旬に下落して、11月中旬に底を付け、少し上昇して横這い。

日経225

画像14

3月初旬から4月中旬まで下落。
4月中旬から5月初旬まで上昇後、10月中旬まで横這い
10月中旬から年末へ向け上昇

ヴァンエック・ベクトル半導体

画像14

6月末ぐらいから上昇。10月中旬に調整がありつつも上昇。

iシェアーズ・セミコンダクターETF

画像14

6月末ぐらいから上昇。10月中旬に調整がありつつも上昇。

金利10Y 

画像14

8月末ぐらいまで下落。そこから上昇へトレンド転換。

長期債

画像14

8月末ぐらいまで上昇。そこから下落へトレンド転換。

ドルインデックス

画像14

5月中旬8月下旬11月初旬が高くなっている。

ドル円

画像14

2月から8月中旬まで下落し、上昇へトレンド転換。10月中旬からもみ合い。

ゴールド

画像14

6月初旬までもみ合い。6月初旬から9月初旬まで上昇。その後、下落。

画像14

6月末に底値をつけ、上昇。7月中旬に上昇後、下落し、もみ合い。

原油

画像14

6月まで上昇。しばらくもみ合ったあと7月中旬から下落
10月初に底値を付け上昇後、下落し、もみ合い。


今後も同じようになるとは限らないけれど、
何かの参考になれば幸いです。
では!

おつかれさん「缶コーヒー1杯ぐらい、ご馳走してあげよう」という太っ腹な方がいれば、よろしくお願いします!
参考になったら「ハートボタン、フォロー、リツイート」をお願いします。
読まれる可能性があがるので、次の記事を書くやる気が出ます。

おまけ

おまけには、上記のプログラムで、いくつかの個別銘柄を見た結果を、おまけ程度ですが、つけておきます。

ここから先は

94字 / 3画像

¥ 100

この記事が気に入ったらサポートをしてみませんか?