昨日の記事の続き。
how-to-make-stock-trading-system.dogwood008.com
ここまでで作成したDataFrameから、特定期間のリターンとその配当利回りをグラフにプロットする。グラフにはヒストグラム付き散布図と回帰直線を描画する。
pip install japanize_matplotlib
class Prices: (昨日の記事参照) class Statements: (昨日の記事参照) my_refresh_token: str = '(token)' cli = jquantsapi.Client(refresh_token=my_refresh_token) parent_path = '/content/drive/MyDrive/drive_ws/marketdata' prices = Prices(parent_path, cli) df_prices = prices.fetch_prices_from_api_with_cache() statements = Statements(parent_path, cli) df_statements = statements.fetch_from_api_and_append( start_dt='2017-01-01', end_dt='2022-12-31' ) yields = Yields(statements=df_statements, prices=df_prices) df = yields.df
import os from datetime import datetime import japanize_matplotlib import jquantsapi import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns ''' Original: J-Quants/jquants-api-client-python https://github.com/J-Quants/jquants-api-client-python/blob/da16a23d85c80a0106673f0a0deaec3437016418/examples/20220825-003-dividend.ipynb ''' # プロット用の設定をします sns.set(rc={'figure.figsize': (15, 10)}) sns.set(font_scale=1.5) sns.set_style('whitegrid') japanize_matplotlib.japanize() # 横軸に配当利回り、縦軸に1,3ヶ月リターンとして関係性をプロットします display("1ヶ月リターン") sns.jointplot(x='配当利回り', y='1ヶ月リターン', data=df.loc[df["配当利回り"] > 0.00], kind="reg") plt.show() display("3ヶ月リターン") sns.jointplot(x='配当利回り', y='3ヶ月リターン', data=df.loc[df["配当利回り"] > 0.00], kind="reg") plt.show() # 横軸に予想配当利回り、縦軸に1,3,6ヶ月リターンとして関係性をプロットします display("1ヶ月リターン") sns.jointplot(x='予想配当利回り', y='1ヶ月リターン', data=df.loc[df["予想配当利回り"] > 0.00], kind="reg") plt.show() display("3ヶ月リターン") sns.jointplot(x='予想配当利回り', y='3ヶ月リターン', data=df.loc[df["予想配当利回り"] > 0.00], kind="reg") plt.show() # 予想配当利回りが5%以上の銘柄とリターンの関係性をプロットします display("1ヶ月リターン") sns.jointplot(x='予想配当利回り', y='1ヶ月リターン', data=df.loc[df["予想配当利回り"] >= 0.05], kind="reg") plt.show() display("3ヶ月リターン") sns.jointplot(x='予想配当利回り', y='3ヶ月リターン', data=df.loc[df["予想配当利回り"] >= 0.05], kind="reg") plt.show()