バックテスト方法論
Drogoが過去のストラテジー・パフォーマンスをどのように再現するか、組み込まれている前提、明示的に制御している各種バイアスについて。
最終確認:
データソースと解像度
Drogoのバックテストは、ライブチャートを動かしているのと同じ過去バー・データの上で動く。米国株とETFはPolygonの日足OHLCV、同じ銘柄について1分・5分・15分・60分の日中解像度も利用できる。暗号資産ペアはBinanceのspotデータ、Forexペアは Polygon FXを用いる。すべてのデータはDrogoデータAPIの /history エンドポイントを経由して配信され、エッジでキャッシュされて単一のバックテスト実行内における読み取りの一貫性を担保する。
各銘柄はプライマリー上場で識別される。コーポレートアクション(株式分割、特別現金配当、ティッカー変更)は過去シリーズに反映され、2014年に買い付けた100株のAAPLポジションは現在の株価で700株として表示され、平均取得単価もそれに合わせて調整される。スピンオフはPolygonが比率を公開している場合、当該日に現金等価の入金として処理する。比率が無い場合はスピンオフ前日の終値でポジションをクローズし、実行ログに注記を残す。
注文モデルとスリッページ
デフォルトでは、Drogoはバー終値でシグナルが発火した直後の次バーの始値で約定する成行注文を再現する。これによりルックアヘッド・バイアスを避ける。日足で15:30に発火したストラテジーは、同日16:00の終値で取引できない。
スリッページはバーのレンジに対する固定割合としてモデル化する。デフォルトは流動性のある米国株で5 bps、流動性の低い銘柄(ADV < 2,000万USD)で10 bps、暗号資産のメジャーで15 bps、暗号資産アルトコインで30 bps。スリッページはエントリーとイグジットに対称的に適用され、往復コストは片道の2倍となる。ユーザーは実行単位でこれらのデフォルトを上書きできる。
指値・逆指値注文はバーの高値/安値に対して再現する。101 USDのバイ・ストップは、当該バーの高値が ≥ 101 USDの場合のみ発火し、約定価格は max(stop, open) を用いる。買い持ちのストップロスは low ≤ stop で発火し、約定は min(stop, open) として下方ギャップによる損失を正直にモデル化する。
計算例:AAPLのシグナルが2024-01-10の終値185.92 USDで発火する。デフォルトのスリッページ階層は5 bps。次バーの始値は186.40 USD。シミュレートされた約定 = 186.40 × (1 + 0.0005) = 186.49 USD。5日後に始値192.10 USDでイグジットする際、シミュレートされた約定 = 192.10 × (1 − 0.0005) = 192.00 USD。往復スリッページコスト = (186.49 − 186.40) + (192.10 − 192.00) = 1株あたり0.19 USD ≈ 往復で約10 bps。報告されるP&L = 192.00 − 186.49 = 1株あたり5.51 USD(売却サイドのSEC/FINRA手数料は別途)。
手数料とファンディング
米国株:手数料0 USD(現代のリテール証券会社に整合)。売却時のSEC手数料0.00229 %および売却時のFINRA TAFの1株あたり0.000119 USDは、ユーザーが無効化しない限り適用する。暗号資産:デフォルトでmaker 10 bps / taker 10 bps(Binance VIP-0準拠)。Forex:手数料0 USDで、スプレッドはスリッページモデルに織り込む。
マージンとショート資金調達:エンジンはショート・ポジションに対しSOFR + 50 bps年率でオーバーナイト・ファンディングを日割りで課す。買い持ちポジションはデフォルトでファンディングなし(現物口座)。ユーザーは、株式評価額の100 %を超える借入現金にSOFR + 200 bpsを課すマージン口座モデルへ切り替えられる。
生存者バイアスとルックアヘッド・バイアスの制御
Drogoの過去ユニバースには、データ提供者が提供している限り上場廃止銘柄や倒産銘柄も含まれる。「2015〜2024年のS&P 500銘柄」を対象にバックテストするストラテジーは、現在の構成銘柄ではなく、その年の 過去 インデックス構成銘柄に対して実行される。インデックスのリバランス・イベントは、利用可能であればPolygonの過去インデックスファイルを用い、そうでなければ四半期ごとに更新する手動キュレーションのCSVへフォールバックする。
決算日、配当日、その他のコーポレートイベントは、各イベントの アナウンス タイムスタンプを用いる。レポート タイムスタンプは用いない。「決算2日前に買う」というストラテジーは、決算日を一般公開された後でのみ知ることになり、後付けで知ることはない。
四半期末から75日以内のファンダメンタルズ・データは使用しない。提出後75日以内のGAAP数値の修正は珍しくないためである。これは保守的な設定で、ユーザーは引き下げられる。
報告される統計量
各バックテスト実行は次を報告する:トータルリターン、CAGR、最大ドローダウン、Sharpe(rf = 1年Tビル、日次リターン)、Sortino(下方半偏差)、Calmar(CAGR / |max DD|)、勝率、プロフィットファクター(粗利益 / 粗損失)、平均勝ちトレード/負けトレード、トレードあたり期待値、平均保有期間、エクスポージャー(市場滞在時間の比率)、および完全なエクイティ・カーブ。
SharpeとSortinoは、日次ストラテジーは √252、1分足の暗号資産ストラテジーは √(365×24×60) で年率換算する。デフォルトでは "月次Sharpe" を 計算しない。高頻度ストラテジーの数字を膨らませるからである。必要であれば明示的にオプトインする。
ドローダウンは、未実現損益も含めたエクイティ・カーブで計算する。実現損益のみではない。これは実際の口座保有者が日々目にするものに整合する。
バックテストが教えてくれないこと
バックテストは、コードに記述されたストラテジーが、行動的な逸脱なしに実行されたであろうものと同一だと仮定する。実際にはほとんどの個人トレーダーは3〜4回連続で負けると戦略を逸脱する。報告される最大ドローダウンは、人間が経験し得るものの下限である。
バックテストは、起こらなかった 流動性イベント をモデル化できない。常にAAPLを1万USDで取引していた戦略は、1億USDに拡大すれば市場を動かしただろう。Drogoは平均日次出来高に応じてポジションサイズを自動縮小しない。これはユーザーの責任である。
バックテストは投資助言では なく 、戦略が将来も機能することを 証明しない 。Drogoはポートフォリオ・レベルのリスク・レビューを行わず、受託者として行動するものではない。
変更履歴
- — Initial publication.
- — Added survivorship-bias and look-ahead-bias control sections; clarified default slippage tiers.
参考文献
Drogo Research — クオンツ編集部
Reviewed for factual accuracy; methodology linked below.