inflearn logo
知識共有
inflearn logo

クオンツ投資のバックテスト検証から — Pythonの過剰最適化を防ぐ

バックテストエンジンを外部ライブラリなしで約300行で自作し、未来データの混入やコストの計上漏れを自動テストで防ぎます。後半は検証です。スリッページ・約定遅延、ウォークフォワード、データスヌーピングのチェックでルールを絞り込み、ルールごとに検証レポートを1枚自動生成します。

1名 が受講中です。

難易度 初級

受講期間 無制限

Python
Python
Statistics
Statistics
Financial Technology
Financial Technology
Investment
Investment
Python
Python
Statistics
Statistics
Financial Technology
Financial Technology
Investment
Investment

この講座で身につくこと

  • 将来データの混入やコストの計上漏れを構造的に防ぐPythonバックテストエンジン(約300行)とpytestテスト28件

  • スリッページ・呼値単位・1日遅延・出来高上限を考慮した約定モデルと損益分岐スリッページ

  • ウォークフォワード検証とデータスヌーピングのチェック(ランダムシフト検定・補正p値・ブロックブートストラップ)

  • 各ルールごとに自動生成される8項目の検証レポート、Excelレポート・資産曲線グラフ

📏 分量:レッスン16本+ボーナス1本・本文25,750字・コードブロック91個(ボーナスを除く)・添付コードのテスト34件合格(ボーナス6件を含む)—コードも一緒に進めると約234分(ボーナスを除く、前提:コードブロック1個につき2分・1分あたり500字)

この講義の実測結果 — 原稿のコードと結果そのまま

  • 学習期間で選んだ移動平均の組み合わせは9つの窓すべてでプラス(3.0~24.8%)でしたが、すぐ次の期間にそのまま適用すると、4回は0以下でした。検証期間をつなぎ合わせたウォークフォワードの結果は22.1%、全期間をあらかじめ見て選んだ「『反則』」の結果は38.4% — その差が過剰最適化の大きさです(例A、授業13)

  • 16個の候補のうち1位(MA10/40、+47.9%)は単独で見るとp値が0.103ですが、16個の中から選んだという事実を反映した補正後のp値は0.746――偶然と区別できません(例A、レッスン14)

  • 同じRSIルールが例Aでは+65.5%、例Bでは-75.9%でした。例Aの勝率100%は、取引5回によるものです(授業10)

  • 累積リターン65.5% vs. 保有3.8%で最も良く見えたルールも、検証レポートの8項目中5/8しか通過できず、取引5回、ブートストラップCAGRの下位5%が-0.3%、悪いケースのMDDの下位5%が-35.7%という点でつまずきます(授業15)

  • レッスン0・1を無料でプレビュー — 講義の利用方法と「バックテストが嘘をつく5つの方法」を購入前に読むことができます。

  • 上記の数値は、検証方法を示すためにシードを固定した仮想データの例であり、将来の利益を保証するものではありません。

「このルール、過去に本当に通用したのか?」 お金を入れる前にコードで確かめましょう

チャートを目視で見ると、うまくいった場面だけを覚えてしまいます。手数料や税金は考慮されず、今日の終値を見て今日の終値で買ったと勘違いします。
外部ライブラリを使わず、約300行でこのような勘違いをコードで防ぐバックテストエンジンを自作し、エンジンが嘘をつかないことを自動テストで確認します。後半は検証です。スリッページ・約定の遅延、ウォークフォワード、データスヌーピングのチェックを通じてルールをふるいにかけ、ルールごとに検証レポートを1枚自動で作成します。

仮想銘柄の直近100日分の価格を意図的に2倍にして動かしてみました。最初の683日間のシグナルと資産曲線が少しも変わらなければ、このバックテストは未来の価格をこっそり使っていないということです(第8章の例で実際に確認できます)。

学習区間(灰色)で最も良かった移動平均の組み合わせを選び、そのまま次の区間(青色、63取引日・データ終了時の最後のウィンドウのみ27取引日)に適用してみると、9回中4回は損失または0%でした。ウォークフォワードでつなぎ合わせた結果は22.1%、全期間をあらかじめ見て選んだ「反則」の結果は38.4%――その差が過剰最適化の大きさです。WFE 0.74は、検証区間の1日平均リターンが学習区間の74%だったという意味です(仮想データ、13章の例。過去の実績は将来を保証しません)。

このような方におすすめです

  • 自分の売買ルールを数値(累積リターン・CAGR・MDD・勝率)で確かめたい個人投資家

  • Pythonの基本文法(変数・リスト・関数・for文)は分かるけれど、バックテストをどこから作り始めればよいか分からない方。

  • バックテストライブラリの結果を信じてよいのか確信が持てない開発者

受講後に手に入るもの

  • バックテストに潜む5つの落とし穴(先読みデータ、コストの計上漏れ、生存者バイアス、過剰最適化、単一サンプル)と、それぞれを防ぐコード

  • シグナルは終値で判定し、約定は翌日の始値で行う――未来データの使用を構造的に防ぐ約定シミュレーション

  • 手数料・取引税の1ウォン未満切り捨てまで合わせたコスト計算

  • 「未来を変えても過去のシグナルはそのままか」テスト — どんなルールにも付けられる嘘発見器

  • サマリー・売買履歴のExcelレポート、資産曲線・ドローダウングラフ

  • スリッページ・呼値単位・1日遅延・出来高上限を組み込んだ約定モデルと「損益分岐スリッページ」

  • ウォークフォワード検証:学習→検証を繰り返し、「事前に知っていたなら」という前提で水増しされた数値を確認

  • データスヌーピング検査:候補16個の中で最高値が偶然と区別できるか(ランダムシフト検定・補正p値・ブロックブートストラップ)

  • 検証レポートの8項目を自動生成、バックテストのチェックリスト、実データへ移行する際のチェックリスト

授業一覧(16項目+ボーナス)

  • レッスン0. この講座の使い方――何を作り、どう進めるか

  • レッスン1. バックテストが嘘をつく5つの方法

  • レッスン2・3. 環境構築とデータ:日足CSVと公開データの取得

  • レッスン4. 指標を自分で実装する

  • レッスン5. ルールを「保有の有無」リストに変換する

  • レッスン6. 約定シミュレーション

  • レッスン7. パフォーマンス指標

  • 授業 8. テストで嘘を防ぐ

  • 授業 9. レポート:Excelとグラフ

  • レッスン10. 結果の読み方と過剰最適化のチェック

  • レッスン11. 自分のルールを追加する

  • レッスン12. スリッページと約定遅延: 「始値ですべて買う」という仮定を解く

  • 第13課。ウォークフォワード検証:期間分割を回す

  • レッスン14. データスヌーピング:何度も試すと偶然でも良く見える

  • レッスン15. 検証レポート1枚:資金を投入する前の関門

  • ボーナス. 検証ゲートを通過したルールだけで模擬注文を行う

  • 付録。チェックリスト・よくあるエラー・演習の解答・実データの点検・用語集

添付コード (book_code.zip)

エンジン・検証モジュール7個、テスト34件(pytest、ボーナス6件を含む)、各レッスンのサンプル14個と一括実行スクリプト、仮想サンプルデータ3種類と生成スクリプト、設定ファイル、実行結果のサンプル(Excelレポート・グラフ・検証レポート)、ボーナスレッスン用の模擬注文コード(bonusフォルダ内に5ファイル)。pandasは使わず、リストとfor文だけを使います。Python 3.11以上。Excelレポート・グラフ・自動テストには、openpyxl・matplotlib・pytestのインストールが必要です。

知っておいてください

  • 本講義は投資助言ではなく、特定の銘柄や戦略を推奨するものでもありません。実口座での注文(自動売買)との接続は扱いません。ボーナスレッスンでは、ローカル環境での模擬約定のみを扱います。

  • 講義内の移動平均・RSIルールはコーディング練習用の例であり、サンプルデータはシードを固定した乱数で生成した架空の銘柄です。

  • データの取得方法は国内(pykrx)のみを扱います。海外株式は日足CSVがあればエンジンは動きますが、コスト設定は自分で調整する必要があります。

  • 過去の実績は将来の利益を保証するものではなく、投資判断とその結果に対する責任は投資家本人にあります。

  • 草案はAI(Claude Code)の助けを借りて作成し、添付コードのテスト34件と各レッスンのサンプル14件を実行して合格を確認したうえで、リリース前に別途AIによるレビューを行い、事実関係と表現を確認しました。

  • この講座のレッスンは文章(テキスト)とコードで構成されています。無料プレビューの動画1本(約3分)は、同じテーマの解説動画から冒頭部分を抜粋したお試し版です。

次のような方に
おすすめです

受講対象

  • 自分の売買ルールを数値(累積リターン・CAGR・MDD・勝率)で確認したい個人投資家

  • Pythonの基本文法は知っているけれど、バックテストをどこから書き始めればよいかわからない方

  • バックテストライブラリの結果を信頼してよいのか確信が持てない開発者

前提知識

  • Pythonの基礎文法(変数・リスト・関数・for文)、Python 3.11以上

  • Excelレポート・グラフ・自動テストには、openpyxl・matplotlib・pytestのインストールが必要です。

こんにちは
Hypothesis Labです。

現役のJava・Springバックエンド開発者です。Pythonでバックテストや業務自動化ツールを作り、Claude Codeで開発作業の自動化を自ら運用しています。面接や実務ですぐに役立つ内容を、コードとともに、素早く読めるテキスト講座としてまとめています。

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

Hypothesis Labの他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

新規会員登録で25%OFF

¥2,851

25%

¥3,801