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

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

アイデアメモ - CSVに調整後終値を付与(自然言語を倍数表記に換算)

前回の振り返り

前回は、調整後終値を計算するためにHTMLを解析してCSVを作成した。

how-to-make-stock-trading-system.dogwood008.com

今回の内容

今回は、「●株→●株」のような表記になっている 併合比率 カラムについて、「●倍」のように倍数表記に変更することで、プログラムから扱いやすいようにする。

今回の変更

heigou.py の変更内容

# heigou.py

-pd.DataFrame(csv)
 df = pd.DataFrame(csv, columns=csv.pop(0))

+def convert_to_ratio(nl: str): 
+    before, after = nl.replace('株', '').split('→')  # 「株」を取り除き、「→」で分割する
+    return float(after) / float(before)
+
+df['併合比率(倍)'] = df['併合比率'].apply(convert_to_ratio)
+df

出力

f:id:dogwood008:20201119011050p:plain
Jupyter Notebook での実行結果

これでは不十分

一見、この出力でうまくいったように見えるが、実はそうではない。試しに 1808 の銘柄コードをもつ長谷工コーポレーションで検索すると、過去に2回併合していることがわかる。

1808長谷工コーポレーション は、2度併合している
1808 長谷工コーポレーション は、2度併合している

このとき、インデックス番号 8732013/10/01 に効力が発生した併合は、併合比率自体は正しいが、「調整後終値を算出するために、終値にかけられる数」としては正しくない。その値は現在から見て 0.2 * 0.2 = 0.041になっているべきである。

次回はこれも正しく扱うように変更していく。


  1. 2013年以前に持っていた100株は、現在の株数に換算すると100*0.04 = 4株 相当である。1回目の併合で100株→20株、2回目の併合で20株→4株である。ただし、2013年以前と現在では、当然ながら1株あたりの価値が異なる。

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