概要
昨日はCSVから読み込んだDataFrameに、調整後終値を付加したが、1日適用するのが早かったため、直す必要があった。今日はこれを直す。
結果、調整後終値を無事に付加することができた。調整後終値を付加する連載はこれで一旦完了である。次回からはCSV取得の自動化周りを進めていきたい。
昨日の記事:
how-to-make-stock-trading-system.dogwood008.com
先に出力結果を紹介
上が昨日の出力、下が今日の出力である。
昨日のものは、調整後終値が「2千円台→5千円台→2千円台」と推移し、中間の10月28日の調整結果が誤りである事を示唆している。
一方、今日のものは「2千円台→2千円台→2千円台」というように、大きな振れ幅がないため、正しく調整できたと推測できる。
修正点
修正部は極僅かである。日付けに対してそれ以外の情報を全て下方向(日付けの新しい方)へずらす(シフトする)ことで解決された。
def hist_data_with_adj_close(code: str, year: str, adj_rate_df: pd.DataFrame) -> pd.DataFrame: ''' 銘柄コード、年、終値調整用比のDFから、調整後終値付きのDFを返す。 ''' bizdays = pd.DataFrame({'date': jpbizday.year_bizdays(year)}).set_index('date') adj_rate_for_current_stock: pd.DataFrame = adj_rate_df[adj_rate_df['code'] == code] ret = bizdays.merge(adj_rate_for_current_stock, \ - on='date', how='left').set_index('date').fillna(method='ffill').fillna(1.0) + on='date', how='left').set_index('date').shift().fillna(method='ffill').fillna(1.0)