株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

J-Quantas API Clientを使って、特定期間のリターンとその配当利回りをプロット:ヒストグラム付き散布図と回帰直線を描画する

昨日の記事の続き。

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()

配当利回り1ヶ月リターン
配当利回り1ヶ月リターン

配当利回り3ヶ月リターン
配当利回り 3ヶ月リターン

予想配当利回り1ヶ月リターン
予想配当利回り 1ヶ月リターン

予想配当利回り3ヶ月リターン
予想配当利回り3ヶ月リターン

予想配当利回りが5%以上の銘柄とリターンの関係性・1ヶ月リターン
予想配当利回りが5%以上の銘柄とリターンの関係性・1ヶ月リターン

予想配当利回りが5%以上の銘柄とリターンの関係性・3ヶ月リターン
予想配当利回りが5%以上の銘柄とリターンの関係性・3ヶ月リターン

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.