私は移動平均線において、リークが生じていたのにも関わらず、2年ほど気づかず、リークしたシミュレーション結果を元に自動売買をしていました。
リークとは株価のシミュレーションにおいて、現在から過去のデータのみを使用するべきところを未来の値も含まれることを言います。
未来の株価を含めないことを当たり前ですが、その当たり前ができていませんでした。
なぜリークが発生したか?
まず終値などの情報を取得して、移動平均線の値を取得します。
#span = 5
df1[‘SMA0’] = df1[‘Close’].rolling(window=span).mean()
求めた値は株探のチャート表示(左下)で値が同じになることは確認済みです。
次に
df1[‘Slope0’] = (numpy.gradient(df1[‘SMA0’],span))*100000/c_0
以下はChatGPTの解答ーーーーー
この方法は中心差分法(central difference method)を使用して、各点の傾きを計算します。例えば、5日間の移動平均線の傾きを計算する場合、中心の3日目の株価が含まれるようになります。
これで、移動平均線の傾きをより正確に計算できるようになります。試してみてください。
だから後方差分が必要になってきます。
ーーーーー
修正コード
df[‘SMA0’] = df[‘Close’].rolling(window=span).mean()
df[‘Slope0’] = ((df[‘SMA0’].diff())10000)/df[‘Close’]
df[‘Slope0_0’] = (df[‘SMA0’].diff().diff()10000)/df[‘Close’]
確認方法
以下の写真のように、新しい日付順に消す。
一番新しい日付ではリークが起こらないから、正しい値と言えます。
(追記:傾きを載せるのを忘れていました)
ちなみに、上の写真は株探のチャート図になりますが、移動平均線の表示はリークがあります。
左下の移動平均値はリークがなく正しい値です。
ただし、赤丸の移動平均線の傾きは上向きですが、リークがあるためそのように見えるだけです。
実際にリークがなく、移動平均線の傾きを計算させると傾きはマイナスになります。
ですので、株探のチャートをみながら、(どのサイトのチャートもそうだと思いますが)移動平均線を参考にするのは注意が必要です。