株価データは「調整後」だけじゃダメ?バックテストの精度を劇的に上げる「生データ」の秘密

シストレ環境構築

こんにちは!
システムトレードのプログラム作成やバックテスト、順調に進んでいますか?

シストレで勝てるロジックを作るために、避けて通れないのが「正しい株価データの準備」です。

有料サイトから株価データを取得して、株式分割や併合、配当金の落ち分を修正した「調整後データ」を作ろうされていると思います。

チャートの連続性を保つため、あるいは正しいシグナルを発出させるために、この調整は絶対に欠かせません。

でも……実はそれだけでは、完璧なバックテストにはならないということをご存知でしょうか?

今回は、多くの人が見落としがちな「生データ(未調整データ)」の重要性と、プロが実践しているデータの使い分けについて分かりやすくお話しします。

これを読むと、なぜ有料サイトがわざわざ調整をしていない生データを配信しているのかがわかるようになります。

「調整後データ」と「生データ」って何が違うの?

まずは、2つのデータの違いをサクッと復習しておきましょう。

ある銘柄が過去に「1株を2株に分割」したとします。
分割前に1株4,000円だった株価が1対2で分割されることによって1株2,000円になりました。

  • 生データ(未調整): 分割前の時点の「1株 4,000円」と、当時の市場で取引されていたリアルな価格。
  • 調整後データ: チャートを滑らかに繋ぐため、株式分割よりも過去のデータに対して、半分(1/2)に書き換えた価格。

生データのままではある日突然株価が半分になり大暴落に見えてしまいますから、移動平均線やRSIなどのテクニカル指標を計算して「ここで買う!」というシグナルを出すためには、チャートに窓(隙間)ができない調整後データが必須です。

「じゃあ、全部調整後データで計算すればいいのでは?」

実は、ここが大きな落とし穴なのです。

なぜ「生データ」も必要なのか?3つの理由

調整後データだけでエントリー/イグジットしたり、「いくら儲かったか」の損益計算(資金シミュレーション)まで行ってしまうと、現実の取引ではあり得ない幻のバックテスト結果が生まれてしまいます。

その理由は以下の3つです。

1. 資金不足で「本当は買えていない」かもしれない

あなたの手元に投資資金が「50万円」あったとします。

調整後データを見ると過去の株価が「1,000円」になっていたので、システムは「100株単位だから10万円。よし、50万円あるから 500株買える!」と判断して買いの記録をつけます。

しかし、当時の「生データ」を見たら実は株式分割の影響で「4,000円」だったとしたらどうでしょう?
100株買うのに40万円必要なので、本当は100株しか買えなかったはずです。

このように、当時の手元資金で本当にその株数を買えたのか?を正確に判定するには、当時のリアルな価格(生データ)を知る必要があります。

2. 現実には存在しない「小数点」による計算バグ

システムトレードのプログラムを組む際、調整後データが引き起こす最大の厄介事が「小数点の発生」です。

日本の株式市場は、原則として「1円」単位(あるいはそれ以上)の整数で取引されています。

しかし、株式分割などを考慮して過去の株価を割り算で修正すると、どうしてもデータに小数点が混じってしまいます。

例えば、過去に「1,000円」だった株が「1株 → 3株」に分割されたとします。 調整後データを作るには株価を3で割るため、過去の株価は「333.3333…円」という無限小数になってしまいます。

この「小数点を含んだ調整後データ」だけで利益や損失の計算(バックテスト)を行ってしまうと、どうなるでしょうか?

  • 「333.33円で100株買ったから、必要資金は33,333円だな」
  • 「そこから株価が10%上がったから、利益は3,333.3円だな」

このように、現実の市場では絶対に注文できない価格や、1円未満の存在しない利益がバックテスト上で生み出されてしまいます。

さらに、プログラム上で浮動小数点の丸め誤差(Rounding error)が蓄積し、結果がどんどん不正確になっていくというシステム上のバグも引き起こします。

「システム上での計算」と「現実の口座残高」を1円の狂いもなく一致させるためには、小数点の存在しないリアルな「生データ」での約定シミュレーションが不可欠なのです。

またレアケースではありますが、過去数十年にわたり猛烈に株式分割を繰り返した銘柄(ITバブル期のヤフーなど)を現在の株価に合わせて逆算していくと、過去の調整後株価が計算上「1円未満(0.X円)」になるケースも実際に存在します。

3. 呼値(値幅)とスリッページのズレ

株の世界には、株価帯によって1回の注文で動く最小単位(呼値)が決まるルールがあります。「3,000円以下の株は1円刻み、3,000円超は5円刻み」といった具合です。

バックテストで「注文時の価格の滑り(スリッページ)」などのコストを厳密に計算したい場合、当時の実際の株価水準(生データ)を基準にしないと、正確なシミュレーションができません。

シストレの鉄則:「シグナルは調整後、約定は生データ」

結論として、精度の高いシステムトレード環境を構築するための「黄金ルール」は以下の通りです。

  1. 戦略シミュレーション:
    「調整後データ」を使って、チャートの形やテクニカル指標から売買タイミングを判定する。
  2. 運用シミュレーション:
    シグナルが出たら「生データ」を参照し、当時のリアルな株価で「何株買えるか」「資金は足りるか」「手数料やスリッページはいくらか」を計算し、損益を記録する。

データの整備は地味で大変な作業ですが、ここをサボると「バックテストでは億万長者なのに、実運用では全然勝てない…」という悲しい結末になりかねません。

これからシステムトレードに挑戦する方は、ぜひ「調整後データ」と「生データ」の二刀流で、現実に即した強力なロジックを見つけ出してくださいね!

コメント

タイトルとURLをコピーしました