バックテスト機能 操作マニュアル v3.0
v3 主な更新点(2026-03-27)
- 取引履歴に「決済理由」カラムを追加(利確/損切/利確(窓)/損切(窓)/シグナル/期間終了)
- CSV出力にMACD指標値(MACD, Signal, Histogram等)を追加
- 足種選択時にデータ取得可能範囲のヒント表示を追加
- データ不足時の警告バナー・トースト表示を追加
- パラメータバリデーション(矛盾する設定の警告)を追加
- RCIクロスモードの操作説明を追加
- yfinanceのデータ取得制限値を正確に更新
- デモトレードの不具合修正
v2 主な更新点
- RCI(順位相関指数)戦略を追加
- 利確・損切りのオン/オフ切替を追加
- 利確の設定範囲を0.05〜3.00%、損切りを0.01〜0.20%に変更(先物短期売買向け)
- yfinance分足データの制約に関する警告表示を追加
- プリセット・フィルター・コスト設定の解説を追加
概要
バックテストとは、過去の実際の株価データを使って売買戦略の性能を検証する機能です。「この戦略で過去に取引していたら、どれくらい利益が出たか?」をシミュレーションできます。
基本操作(クイックスタート)
最短3ステップでバックテストを実行できます。
- 銘柄を選ぶ — ドロップダウンで対象銘柄を選択
- 「バックテスト実行」をクリック — デフォルト設定で即実行
- 結果を確認 — サマリー・曲線・取引一覧が表示される
デフォルトでは MACDクロス戦略 / 1分足 / 3ヶ月 で実行されます。
設定項目の詳細
1. 銘柄選択
ドロップダウンから対象銘柄を選択します。
| コード | 銘柄名 | 基準価格 | 特徴 |
|---|---|---|---|
| 1321 | 日経225ETF | 40,000 | 指数連動、流動性が高い |
| 7203 | トヨタ自動車 | 2,800 | 大型株、値動きが比較的安定 |
| 9984 | ソフトバンクG | 8,500 | 値動きが大きく、シグナルが出やすい |
| 6758 | ソニーG | 13,000 | 中程度のボラティリティ |
| 9432 | NTT | 170 | ディフェンシブ、値動き小さい |
| 8306 | 三菱UFJ | 1,600 | 金融セクター |
| NIY=F | 日経先物ミニ | 38,000 | 先物取引、乗数100 |
2. 足種(インターバル)
チャートの時間軸を選択します。足種によって取得可能なデータ期間が異なります。
| 足種 | 表記 | 推奨用途 | yfinance最大期間 | J-Quants最大期間 |
|---|---|---|---|---|
| 1分足 | 1m | スキャルピング検証 | 最大約8日 | 最大約2年 |
| 5分足 | 5m | デイトレ検証 | 最大約60日 | 最大約2年 |
| 60分足 | 1h | スイング検証 | 最大約730日 | - |
| 日足 | 1d | 中長期検証 | 無制限 | 無制限 |
重要: yfinanceの1分足データは最大約8日、5分足データは最大約60日しか取得できません。長期間を指定しても、取得データがこの範囲に制限され、取引回数が想定より少なくなります。J-Quantsが有効な場合のみ長期の分足データが取得可能です。画面右上のデバッグパネルでデータソースと行数を確認してください。足種選択時にデータ取得可能範囲のヒントが表示されます。
先物ミニ(NIY=F) はJ-Quantsに非対応のため、yfinanceのみが使用されます。1分足は最大約8日、5分足は最大約60日が上限です。
3. 期間選択
テスト期間をボタンで選択します。
| 期間 | 営業日数(目安) | 用途 |
|---|---|---|
| 1ヶ月 | 約22日 | 短期検証。RSI・RCIなど短期戦略向け |
| 3ヶ月 | 約65日 | 基本的な検証に最適。全戦略が動作する |
| 6ヶ月 | 約130日 | 中期検証。十分なサンプル数が得られる |
| 1年 | 約250日 | 長期検証。統計的に信頼性の高い結果 |
| 期間指定 | 任意 | 開始日・終了日を手動で指定 |
4. 戦略選択とパラメータ
6つの売買戦略から1つを選択します。各戦略にはスライダーで調整可能な固有パラメータがあります。
| 戦略 | 種類 | 向いている相場 |
|---|---|---|
| ゴールデンクロス | トレンドフォロー | トレンド相場 |
| RSI反転 | 逆張り | レンジ相場 |
| MACD | トレンドフォロー | トレンド転換 |
| MACDクロス | トレンドフォロー | トレンド転換(MACD基本) |
| ボリンジャーバンド | 逆張り/順張り | レンジ/ブレイクアウト |
| RCI New | 逆張り | レンジ相場 |
各戦略の詳細パラメータは 戦略リファレンス を参照してください。
5. リスク設定(利確・損切り)
全戦略共通のリスク管理設定です。v2でオン/オフ切替と範囲拡大を行いました。
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| 利確 (%) | 0.05〜3.00% | 1.00% | この利益率に達したら自動で利確 |
| 損切り (%) | 0.01〜0.20% | 0.05% | この損失率に達したら自動で損切り |
オン/オフ機能
各項目のチェックボックスで有効/無効を切り替えられます。
- オン(チェックあり): 設定した%で利確/損切りが実行される
- オフ(チェックなし): 利確/損切りが無効化される。反対シグナルが出るまでポジションを保持する
使い分けの目安
| 設定パターン | 用途 |
|---|---|
| 利確0.10% / 損切り0.05% | 先物スキャルピング(1分足) |
| 利確0.50% / 損切り0.10% | 先物デイトレ |
| 利確1.00% / 損切り0.20% | 先物スイングトレード |
| 利確オフ / 損切り0.10% | トレンドフォロー(利益を伸ばす) |
| 両方オフ | 戦略シグナルのみで売買(純粋な戦略検証) |
CSVで確認
CSVエクスポートで各取引の損益率を確認し、設定値通りに利確・損切りが機能しているかを検証できます。
ドテン(反転エントリー)
チェックを入れると、反転シグナル発生時に「決済 + 新規逆方向エントリー」を同時に行います。
- オフ(デフォルト): 反転シグナルでポジション決済のみ。次のシグナルを待って新規エントリー
- オン: 例えばBUY保有中にSELLシグナル → BUY決済 + SELL新規エントリーを同時実行
※ドテンエントリーにもフィルター条件(時間帯・RSI等)が適用されます。フィルター条件を満たさない場合は決済のみ行い、ドテンエントリーはスキップされます。
6. フィルター条件
「フィルター条件」セクション(折りたたみ式)を開くと、4種類のフィルターを組み合わせて使用できます。
| フィルター | 効果 | 推奨場面 |
|---|---|---|
| RSIフィルター | 買いはRSIが低い時のみ、売りはRSIが高い時のみエントリー | ダマシの削減 |
| 出来高フィルター | 平均出来高の指定倍率以上の時のみエントリー | 出来高が薄い銘柄での誤シグナル排除 |
| 時間帯フィルター | 指定時間帯のみエントリー(分足・時間足用) | 寄り付き・引け直前の不安定時間を除外 |
| トレンドフィルター | 移動平均より上なら買いのみ、下なら売りのみ | トレンドに逆行するシグナルの排除 |
RSIフィルターの設定例
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| RSI期間 | 7〜28 | 14 | フィルター用RSIの計算期間 |
| 買い上限RSI | 20〜60 | 40 | RSIがこの値以下の時のみ買いエントリー |
| 売り下限RSI | 40〜80 | 60 | RSIがこの値以上の時のみ売りエントリー |
時間帯フィルターの設定例
- デフォルト: 9:30〜14:30(寄付き直後と引け直前を除外)
- 午前集中: 9:00〜11:30
- 午後集中: 12:30〜15:00
7. コスト設定(商品タイプ)
「コスト設定」セクション(折りたたみ式)で取引コストを設定します。
商品タイプ(プリセット)
| 商品タイプ | 乗数 | 手数料(円/枚/片道) | 取引枚数 |
|---|---|---|---|
| 株式(現物・信用) | 1 | 0 | 100株 |
| 先物mini | 100 | 38.5 | 1枚 |
| 先物ラージ | 1,000 | 275 | 1枚 |
| カスタム | 任意 | 任意 | 任意 |
先物miniの場合、1ティック(5円)の動きで500円(= 5円 x 100)の損益が発生します。
結果の読み方
サマリーカード
バックテスト実行後、6つの主要指標が表示されます。
| 指標 | 説明 | 良い目安 | 注意 |
|---|---|---|---|
| 総リターン | 初期資金(100万円)に対する損益率 | プラスなら利益 | Buy&Holdと比較 |
| 勝率 | 勝ちトレード / 総トレード | 50%以上 | 勝率だけでは判断不可(PFと併用) |
| プロフィットファクター (PF) | 総利益 / 総損失 | 1.5以上が良好、2.0以上が優秀 | 3.0超は過剰適合の可能性 |
| 最大ドローダウン (DD) | 資金ピークからの最大下落率 | 10%以下が低リスク | 実運用では2〜3倍を想定 |
| 総取引回数 | 検証期間中の完了取引数 | 30件以上で信頼性が出る | 10件未満は統計的に不十分 |
| シャープレシオ | リスクあたりのリターン | 1.0以上が良好、2.0以上が優秀 | 最重要指標の一つ |
累積損益曲線
- 実線(色付き): 選択した戦略の累積損益
- 点線(グレー): Buy & Hold(買って保持し続けた場合)のベンチマーク
- 実線が点線より上 → 戦略がBuy&Holdを上回っている
- 右肩上がりの滑らかな曲線が理想的
取引履歴テーブル
各取引の詳細が一覧で表示されます(最大50件)。
| 列 | 内容 |
|---|---|
| # | 取引番号 |
| エントリー日時 | ポジションを取った日時 |
| 決済日時 | ポジションを閉じた日時 |
| 売買 | 買/売 |
| エントリー価格 | ポジションを取った価格 |
| 決済価格 | ポジションを閉じた価格 |
| 損益 | 円単位の損益(緑=利益、赤=損失) |
| 損益率 | パーセント単位の損益率 |
| 理由 | 決済理由(利確/損切/利確(窓)/損切(窓)/シグナル/期間終了) |
決済理由の解説
| 理由 | 説明 |
|---|---|
| 利確 | 設定した利確率に到達して決済 |
| 損切 | 設定した損切率に到達して決済 |
| 利確(窓) | 窓開け(ギャップ)で始値が利確価格を超えていたため、始値で決済(設定値より有利な結果) |
| 損切(窓) | 窓開け(ギャップ)で始値が損切価格を超えていたため、始値で決済(設定値より不利な結果) |
| シグナル | 戦略の反転シグナルにより決済 |
| 期間終了 | バックテスト期間の最終日に強制決済 |
デバッグパネル(右上)
データソース情報が表示されます。検証結果の信頼性を確認できます。
| 項目 | 説明 |
|---|---|
| Source | データ取得元(J-Quants / yfinance / Cache / Mock) |
| Rows | 取得したデータ行数 |
| From / To | データの開始日〜終了日 |
| Time | データ取得にかかった時間 |
| Fetch Attempts | データ取得の試行履歴 |
yfinanceの1分足/5分足で長期間を指定した場合、黄色い警告メッセージが表示されます。
便利機能
AIおすすめ設定
「AIおすすめ設定」ボタンをクリックすると、選択中の足種に最適な戦略・パラメータが自動設定されます。
| 足種 | 推奨戦略 | 理由 |
|---|---|---|
| 日足 | MACDクロス(12,26,9) | トレンドフォローに最適 |
| 60分足 | ゴールデンクロス(EMA 5,20) or MACDクロス(先物) | トレンド転換の捕捉 |
| 5分足 | RSI(10, 25/75) | 短期逆張りが有効 |
| 1分足 | ボリンジャーバンド(15, 2.0) | バンド反発のスキャルピング |
プリセット保存・呼び出し
検証で見つけた良い設定をプリセットとして保存し、いつでも再利用できます。
保存方法
- バックテストを実行
- 実行ボタン下のテキスト欄にプリセット名を入力(例: "MACD先物mini 5分足 高勝率")
- 「保存」ボタンをクリック
呼び出し方法
- 「プリセット呼出し」ボタンをクリック → モーダルが開く
- 保存済みプリセットの一覧から選択 → 設定が自動復元
- そのままバックテスト実行、またはパラメータを微調整
プリセットに保存される設定
- 銘柄、足種、期間(カスタム日付含む)
- 戦略とパラメータ
- 利確・損切り(オン/オフ含む)
- フィルター設定
- コスト設定(商品タイプ含む)
プリセットからデモ実行
モーダル内の各プリセット横の ▶ ボタンで、保存した戦略をそのままデモトレードに適用して実行できます。
CSV出力
バックテスト実行後に表示される「CSVエクスポート」ボタンで取引データをダウンロードできます。
ファイル名: backtest_銘柄コード_日付.csv
CSV内容:
#, エントリー日時, 決済日時, 売買, エントリー価格, 決済価格, 損益, 損益率(%), 理由
1, 2026-01-15 09:15, 2026-01-15 14:30, 買, 2780.5, 2820.3, 3980, 1.43, 利確
2, 2026-01-16 10:05, 2026-01-16 13:20, 売, 2830.0, 2795.0, 3500, 1.24, シグナル
...
サマリー
総リターン(%), 12.50
勝率(%), 51.40
プロフィットファクター, 1.42
最大ドローダウン(%), 3.20
総取引回数, 35
シャープレシオ, 1.85
Buy & Hold リターン(%), 8.50
MACD戦略使用時の追加カラム
MACD / MACDクロス戦略でバックテストを実行した場合、CSVに以下のカラムが追加されます:
| カラム | 説明 |
|---|---|
| MACD | エントリー時点のMACD値 |
| Signal | エントリー時点のシグナルライン値 |
| Histogram | エントリー時点のヒストグラム値 |
CSVでの検証ポイント
- 決済理由の確認: 「理由」カラムで各取引がどのように決済されたかを確認
- 利確・損切りの確認: 損益率の列で、設定した%を超えた取引がないか確認(窓決済の場合は超えることがある)
- 時間帯の確認: 時間帯フィルターが正しく機能しているか確認
- エントリー間隔: 取引間の時間間隔が妥当か確認
デモトレード連携
バックテスト結果画面に表示される「この戦略でデモトレード開始」ボタンで、検証済みの戦略をデモトレード(仮想資金での模擬取引)に即適用できます。
流れ:
- バックテストで良い結果の戦略を見つける
- 「この戦略でデモトレード開始」をクリック
- デモトレード画面に自動遷移、戦略が適用された状態で開始
戦略リファレンス
ゴールデンクロス
売買ルール:
- 買い: 短期移動平均線が長期移動平均線を上抜け
- 売り: 短期移動平均線が長期移動平均線を下抜け
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| 短期MA | 3〜20 | 5 | 短期移動平均の期間 |
| 長期MA | 15〜100 | 25 | 長期移動平均の期間 |
| EMA使用 | ON/OFF | OFF | 指数移動平均を使うか |
最低必要データ: 長期MA期間 + 5日
RSI反転
売買ルール:
- 買い: RSIが売られすぎラインを下回った後に反発(ラインを上抜け)
- 売り: RSIが買われすぎラインを上回った後に反落(ラインを下抜け)
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| RSI期間 | 7〜28 | 14 | RSI計算期間 |
| 売られすぎ | 20〜40 | 30 | 買いシグナルの閾値 |
| 買われすぎ | 60〜80 | 70 | 売りシグナルの閾値 |
最低必要データ: RSI期間 + 5日(デフォルト19日 → 1ヶ月で動作)
MACD
売買ルール:
- 買い: MACDヒストグラムがマイナスからプラスに転換
- 売り: MACDヒストグラムがプラスからマイナスに転換
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| 短期EMA | 1〜50 | 12 | 短期EMA期間 |
| 長期EMA | 2〜200 | 26 | 長期EMA期間 |
| シグナル期間 | 1〜50 | 9 | シグナルラインのEMA期間 |
最低必要データ: 長期EMA + シグナル期間 + 5日 = 40日(3ヶ月以上推奨)
MACDクロス
MACDの変化型。MACDラインとシグナルラインのクロスオーバーでシグナルを判定します。パラメータはMACDと同じです。
ボリンジャーバンド
売買ルール:
- 逆張りモード(デフォルト): 下バンド割れ→買い、上バンド超え→売り
- 順張りモード: 上バンド超え→買い、下バンド割れ→売り
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| 期間 | 10〜30 | 20 | 移動平均の期間 |
| 標準偏差 | 1.5〜3.0 | 2.0 | バンド幅の倍率 |
| 順張りモード | ON/OFF | OFF | ブレイクアウト戦略 |
最低必要データ: 期間 + 5日(デフォルト25日 → 3ヶ月以上推奨)
RCI(順位相関指数)New
概要: RCI(Rank Correlation Index)はSpearman順位相関係数に基づくオシレーター指標です。時間の経過と価格の変動の相関を-100〜+100の範囲で数値化します。
計算式: RCI = 100 x (1 - 6 x Σ(d²) / (n x (n² - 1)))
- d = 時間順位と価格順位の差
- n = 期間
売買ルール:
- 買い: RCIが売られすぎライン(-80)を下回った後に反発(ラインを上抜け)
- 売り: RCIが買われすぎライン(+80)を上回った後に反落(ラインを下抜け)
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| RCI期間 | 7〜52 | 9 | RCI計算期間 |
| 売られすぎライン | -100〜0 | -80 | 買いシグナルの閾値 |
| 買われすぎライン | 0〜100 | 80 | 売りシグナルの閾値 |
最低必要データ: RCI期間 + 5日(デフォルト14日 → 1ヶ月で動作)
RSIとの違い
- RSI: 値幅の比率で計算(0〜100)
- RCI: 順位の相関で計算(-100〜+100)。価格の方向性をより敏感に捉える
- RCIはRSIより反応が速い傾向があり、短期売買に向いている
推奨設定
- デイトレ向け: 期間9 / -80 / +80(デフォルト)
- スキャルピング: 期間7 / -90 / +90(より厳選されたシグナル)
- スイング: 期間26 / -70 / +70(中期トレンドの反転を捕捉)
クロスモード
モード選択で「クロス(短期/長期RCI)」を選ぶと、短期RCIと長期RCIのクロスでシグナルを生成します。
- 買い: 短期RCIが長期RCIを下から上に抜ける
- 売り: 短期RCIが長期RCIを上から下に抜ける
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
| 短期RCI期間 | 2〜30 | 9 | 短期RCI計算期間 |
| 長期RCI期間 | 2〜30 | 26 | 長期RCI計算期間 |
戦略別の推奨期間一覧
| 戦略 | デフォルトパラメータ | 最低必要営業日 | 推奨期間 | 1ヶ月で動作 |
|---|---|---|---|---|
| ゴールデンクロス | 短期5/長期25 | 30日 | 3ヶ月以上 | 限定的 |
| RSI反転 | 期間14 | 19日 | 1ヶ月以上 | OK |
| MACD | 12/26/9 | 40日 | 3ヶ月以上 | 不可 |
| MACDクロス | 12/26/9 | 40日 | 3ヶ月以上 | 不可 |
| ボリンジャーバンド | 期間20 | 25日 | 3ヶ月以上 | 限定的 |
| RCI | 期間9 | 14日 | 1ヶ月以上 | OK |
データソースと制約
データ取得の優先順位
- DBキャッシュ — 一度取得したデータをSQLiteに保存
- J-Quants V2 — 高品質な日本株データ(有料、分足対応)
- yfinance — Yahoo Finance経由の無料データ(フォールバック)
- モック — 全て失敗した場合のダミーデータ
yfinanceの制約(重要)
| 足種 | 取得可能期間 | 備考 |
|---|---|---|
| 日足 | 無制限 | 長期検証に適している |
| 60分足 | 最大約730日 | 十分なデータが取得可能 |
| 5分足 | 最大約60日 | 3ヶ月以上を指定しても60日分のみ |
| 1分足 | 最大約8日 | 1ヶ月以上を指定しても8日分のみ |
分足で長期間を指定した場合、取引回数が少なくなる主な原因はこの制約です。デバッグパネルの「Rows」と「Source」で実際の取得データ量を確認してください。
J-Quantsの利点
J-Quants V2が設定済みの場合:
- 分足データも長期間取得可能
- より高精度なデータ
- 取引所公式のデータソース
検証のコツ
1. 基本的な検証フロー
1. まずデフォルト設定で実行して傾向を把握
↓
2. AIおすすめ設定を試す
↓
3. パラメータを微調整して結果を比較
↓
4. 良い設定をプリセットに保存
↓
5. CSVで取引内容を詳細確認
↓
6. デモトレードで実際の値動きと照合
2. パラメータ調整のポイント
- 一度に1つずつ変える: 複数のパラメータを同時に変えると、何が効いたかわからなくなる
- 足種を変えたらパラメータも見直す: 日足用のパラメータが分足で有効とは限らない
- 勝率だけで判断しない: PFとシャープレシオを重視する
- 取引回数が30件未満の結果は参考程度に: 統計的に信頼性が低い
3. 過剰適合(オーバーフィッティング)に注意
特定の期間・銘柄でのみ良い結果が出る設定は、実運用で通用しない可能性があります。
- 複数の銘柄で検証: 1銘柄だけでなく3〜5銘柄で結果を確認
- 複数の期間で検証: 3ヶ月と6ヶ月、1年などで安定した結果が出るか確認
- PFが3.0を超えたら疑う: 現実離れした結果はデータに最適化されすぎている可能性
4. 利確・損切り設定の検証方法
- まず利確・損切り両方をオフで実行: 戦略シグナルのみの純粋な結果を確認
- 次に損切りのみオンにして実行: 損切りの効果を確認
- 利確もオンにして実行: 利確追加の効果を確認
- CSVで確認: 各取引の損益率が設定値に沿っているかを検証
トラブルシューティング
取引が0件になる
| 原因 | 対処法 |
|---|---|
| データ不足 | 期間を3ヶ月以上に延ばす |
| yfinance分足の制約 | デバッグパネルでRows数を確認。日足に変えるか、J-Quantsを使う |
| シグナル未発生 | 別の銘柄で試す、パラメータの感度を上げる |
| 戦略の最低期間を満たしていない | 上記の推奨期間表を参照 |
データ不足の場合、画面上部に黄色い警告バナーが表示されるようになりました。例:「データが不足しています(必要: 40件以上、取得: 21件)」
パラメータの矛盾(短期MA > 長期MA等)がある場合も警告が表示されます。
CSVで設定値を超えた損益率が出る
- 決済理由カラムを確認: 取引履歴の「理由」カラムに「利確(窓)」「損切(窓)」と表示されていれば、窓開け(ギャップ)による決済です
- 窓開けとは: 前日終値と翌日始値の乖離により、設定した利確/損切価格を始値が超えている場合に発生します。実際の株式取引でも同様に起こる現象です(逆指値注文でも窓開けでは設定価格で約定しません)
- 利確・損切りのオンを確認: チェックボックスがオンになっているか確認
- 足種の影響: 日足の場合、日中に利確/損切りラインを超えても終値ベースで判定されるため、設定値からずれることがある
長期間指定なのに取引が少ない
- デバッグパネルの「Source」と「Rows」を確認
- Source が
yfinanceで Rows が少ない場合 → yfinanceの分足データ制約 - 対処: 日足に変更するか、J-Quantsを有効にする
「エラーが発生しました」と表示される
- Dockerコンテナが起動しているか確認:
docker compose ps - コンテナを再起動:
docker compose restart kabu-mock - ネットワーク接続を確認(yfinanceはインターネット接続が必要)
注意事項
- 手数料・スリッページはコスト設定で部分的に反映されます
- 税金は考慮されていません
- 取引量(流動性)の制約は考慮されていません
- データはyfinance / J-Quantsから取得するため、ネットワーク接続が必要です
- 先物ミニのMACDタイミングは、CMCデータ(yfinance
NIY=F)とkabuステーションAPIで取引時間帯が異なるためずれが生じます