見出し画像

決算予定日 を 可視化する!

前回の記事でS&P500の銘柄の決算予定日を取得したので、それを利用して、決算予定日がパッと見てわかる図を作ってみた

個別企業の予定日だけでなく、業種別時価総額全体で見た時の決算の山場がわかるように図にしてみた。

0.準備

下記の項目を含むCSVファイルを用意する。(前回のデータから作成)

Ticker:ティッカー
NextDate:決算日予定日
GICS Sector:業種
Marketcap:時価総額

スクリーンショット 2021-06-21 12.07.50

次に下記のコーディング。

1.コーディング

下記のコードを実行。

import pandas as pd
from datetime import datetime as dt
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib import gridspec
%matplotlib inline

# CSVを読み込んでデータフレームに格納
df=pd.read_csv("result_cap.csv")
df=df.loc[:,{"Ticker","NextDate","GICS Sector","Marketcap"}]
df['Date'] = pd.to_datetime(df["NextDate"], format='%Y-%m-%d')
df["Marketcap2"]=(df["Marketcap"].astype(int)/10000000000).round().astype(int)
df=df.set_index('NextDate')
df = df.sort_index(axis='index',ascending=True)

# スタートとエンドを設定
start = datetime.date.today().strftime("%Y-%m-%d")
end = (datetime.date.today() + datetime.timedelta(days=120)).strftime("%Y-%m-%d")
df=df.loc[start:end,:]
labels = df["GICS Sector"].unique()

# 業種別でわけるためのY軸の値を設定
j=0
for i in range(len(labels)):
 df.loc[df["GICS Sector"]==labels[i],"secno"]=100+j
 j=j+100

# グラフを描画
fig = plt.figure(facecolor='white',figsize=(20,6),tight_layout=True)
spec = gridspec.GridSpec(ncols=1, nrows=1,height_ratios=[1],width_ratios=[1])
ax1 =  fig.add_subplot(spec[0,0], title='S&P500')

# グラフの色を設定("Set3" "Paired" "tab20")
cmap = plt.get_cmap("tab10") 

# グラフを描画
for i in range(len(labels)):
 df2=df.loc[df["GICS Sector"]==labels[i],:]
 ax1.scatter(df2["Date"],df2["secno"], s=df2["Marketcap2"]*2, c=[cmap(i)], alpha=0.5)

# 時価総額が高いものでデータを絞り込み(文字の重なりを抑制)
df.loc[df["Marketcap2"]<10,"Ticker"]=""
# ティッカーの文字列をグラフに挿入
for i, txt in enumerate(df.index.values):
   ax1.annotate(df["Ticker"].values[i], (df["Date"].values[i], df["secno"].values[i]-50+i%9*10),fontsize=10)

# 軸等のグラフの設定
ax1.set_ylim([0, 1200])
ax1.set_yticks([100,200,300,400,500,600,700,800,900,1000,1100])
ax1.set_yticklabels(labels)
ax1.xaxis.set_major_locator(mdates.DayLocator(bymonthday=None, interval=1, tz=None))
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d"))
ax1.tick_params(width=0.01,length=0.01, colors='gray', grid_color='gray', grid_alpha=0.1,labelsize=14)
ax1.xaxis.set_tick_params(rotation=90,size=4)
plt.grid(True)
plt.show()
plt.close()

# ここまで

2.実行結果

実行すると業種別120日後までの決算予定日がプロットされる。

画像1

縦軸:業種
横軸:日付
円の大きさ:時価総額
文字:ティッカー(時価総額の大きいものを抜粋)

表示する期間を絞ると、下記のような感じ。

画像3

3.コメント

決算の予定なので、変更になる可能性はあるが、毎回、同じ感じのスケジュールなので、順番をざっくりと知っておいて、損はないだろう。例えば、このスケージュールを頭に入れて、どのような展開になるか、予想して見るのも面白いかもしれない。

順番について、少しコメントを

6月下旬にNKEが決算予定。
7月中旬にJPM等の金融系が決算予定
7月20日頃にNFLX、TSLA、MSFT等が決算予定。
この辺りが1つ目の山場
7月26日以降にV、MA、AMD、AAPL、AMZN、GOOGL、FB、MCD、SBUX等が決算予定。
この辺りが決算のピーク
8月中旬にWMT、TGT、HD、LOWなどの小売系と、NVDA、AMATなどの半導体関連が決算予定。
主要な顔ぶれなのに、他と少し違うタイミングで発表されるのが面白い。

これらを把握して、例えば、住宅ローンやカーローンやクレジットカード等に関係する企業に投資をしているなら最初に発表される金融系・銀行系の決算をチェックするとか、NFLXの決算を見て、DISのディズニープラスの業績を考えてるとか、「先に発表される関係がありそうな企業の決算日」を把握して決算をチェックするのも良いだろう。

また、決算の山場が過ぎてから、全体状況を見てポジションを取るというような使い方も良いかもしれない。

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

関連企業をイメージするのに、この過去記事が参考になるかも知れません。

おまけ

おまけに、少し雑ですが、縦軸の業種をなくして、文字が被らないようにして全て表示させるバージョンのコーディングをつけておきます。

下記の画像を作成したコーディングです。

画像4

ここから先は

2,100字

¥ 100

この記事が気に入ったらチップで応援してみませんか?