Statistical Anomaly Reversal¶
EA0002_Statistical_Anomaly_Reversal_v1.0 / ⚠️ FAILED — 生成失敗・修正失敗・BT不合格
ワンライナー
Statistical Anomaly Reversal
基本情報¶
| 項目 | 値 | 項目 | 値 | |
|---|---|---|---|---|
| シンボル | USDJPY | エントリー種別 | oscillator_reversal | |
| 時間足 | H1 | エグジット | fixed_sl | |
| 方向 | both | 主要インジケータ | — |
🧬 DNA 4軸¶
| primary_style | entry_mechanism | regime_target | position_logic |
|---|---|---|---|
meta | oscillator_reversal | any | fixed_sl |
📊 バックテスト結果¶
判定: ❌ FAIL / 期間: — 〜 —
| PF | 損益率 | 勝率 | 最大DD | シャープ | 取引数 |
|---|---|---|---|---|---|
| 0.00 | +2.30% | 100.0% | 1.00% | 0.99 | 8 |
📝 仕様書 / Specification¶
🇯🇵 クリックで展開(日本語版)
Research EA Spec: Statistical Anomaly Reversal¶
EA Identity¶
- EA name: REF0430_01_Statistical_Anomaly_Reversal_v1
- Symbol: USDJPY
- Timeframe:
- Primary style: meta
- Entry mechanism: oscillator_reversal
- Regime target: any
- Position logic: fixed_sl
Research Thesis¶
Statistical Anomaly Reversal candidate generated from 1 research source(s). The strategy must preserve the source idea while keeping parameters broad enough to survive out-of-sample testing.
Source Evidence¶
- [SEASONAL] [MR] 月初の週 (1-5営業日) は機関の月次リバランスでドルが買われやすい傾向
- [RISK] [SEASONAL] スワップポイントが正/負の通貨ペアで複数日ポジション保有時はスワップを損益計算に必ず含める
- [ANOMALY] [FILTER] G10通貨ペアの相関は実際には高く、複数通貨同時保有は想定リスクの1.5-2倍と考える
- [SEASONAL] [CONTRA] 月曜オープンのギャップ埋め戦略は統計的に確認されているが、ギャップ方向が先週トレンドの延長の場合は失敗率が高い
Tradable Spec¶
- Entry logic: BUY entry: RSI(14) on bar[1] crosses above oversold threshold from below —
rsi[1] > InpOversold && rsi[2] <= InpOversold(input default InpOversold=30). SELL entry: RSI crosses below overbought —rsi[1] < InpOverbought && rsi[2] >= InpOverbought(default=70). Regime filter: define using a separate 50-bar SMA —bullishRegime = (close[1] > sma50[1]). Do NOT use RSI thresholds to define regime, as that reuses the same indicator as the entry signal. ONE regime variable only: use ONLYbullishRegimein the entry AND condition — do NOT also addregimeUpor any slope check. - Exit logic: Primary exit: regime signal reverses (opposite regime state detected on confirmed bar[1]). RSI sub-exit: if entry used RSI oversold signal, exit when RSI[1] returns above 50 (longs) or below 50 (shorts). Hard stop: ATR(14)*1.5 beyond entry, fixed. Time exit: max hold InpMaxBars bars (default=24) — meta strategies degrade when held positionally. Partial close option: 50% at 0.75R, hold remainder for regime exit.
- Risk management: Fixed fractional risk per trade, no martingale, no grid expansion, max one position per symbol, and hard daily loss guard.
Filters¶
- Spread and session filter
- Minimum ATR activity filter
- Regime-specific confirmation filter from source evidence
- Contrarian safety filter: disable after consecutive false signals
Logic Independence Requirements¶
必須チェック(実装前に確認すること):
- エントリーシグナル変数とレジームフィルター変数は独立したデータ源または独立したlookbackから計算すること
- 悪い例:
bullishCross = fastMA[1] > slowMA[1]とisBearishRegime = fastMA[1] < slowMA[1]を AND 結合 → 同一バーで両立不可、取引ゼロになる - 正しいレジーム定義:
slowMA[1] - slowMA[10]の傾き、上位足のMA方向、長い lookback(50本以上)の傾き - 全フィルターを AND 結合した時に、理論上発火できるバーが存在することをスケッチで確認すること
- 逆張り戦略では「エントリー条件の否定 ≠ レジーム条件」になっているか必ず確認すること
- RSI・BB・ATR など同一インジケーターを「シグナル源」と「フィルター源」の両方に使う場合、同じバーで矛盾する不等式を要求していないか確認すること
- レジーム変数は1本のみ:
bullishRegime(またはuptrend等) という bool 変数を1つ定義し、エントリー条件の AND に使うのはその1変数のみにすること。bullishRegime && regimeUpのように2本のレジーム変数を AND 結合することを禁止する。スロープ・価格位置・ADX など複数軸で判断したい場合は、それらを統合した1本の bool 変数にまとめてから AND に組み込むこと。
Optimization Envelope¶
- Relaxable: confirmation thresholds, ATR activity threshold, session window, signal confirmation bars.
- Not relaxable: stop-loss discipline, max one position, no martingale, no fixed historical price levels.
- Initial optimization scope: 3-5 parameters only.
- If no trades: loosen entry confirmation first, then session restriction, then ATR threshold.
- If too many trades: strengthen regime filter and minimum signal distance.
Backtest Acceptance¶
- Backtest at least 9 months with the latest 3 months held out.
- Use walk-forward setting 6:2 when MT5 runner is available.
- Reject if OOS/IS PF ratio is below 0.70 or if OOS PF min is below 1.10.
- Reject if OOS trade count is too low; first loosen entry filters before optimizing profit targets.
Overfitting Controls¶
- Keep each numeric parameter in a wide theory-backed range; do not tune to a single date range.
- Limit optimization to 3-5 core parameters in the first pass.
- Prefer regime filters with clear market meaning over curve-fitted thresholds.
- Stop improving the candidate after repeated NO_TRADE/LOW_SAMPLE failures.
Learning Feedback¶
- No prior ledger signal was available for this DNA.
Implementation Guardrails¶
- [META] [RISK] [CONTRA] MT5 Strategy Testerは同名EAのinput値をキャッシュすることがあり、mq5側のinputデフォルトを変更して再コンパイルしても、BTでは前回値が使われる場合がある。inputデフォルト変更の検証では、別EA名/別ファイル名にするか、tester.ini/ExpertParametersで明示的に値を渡し、Testerログの「started with inputs」を必ず確認する。 (.clinerules)
- [RISK] [META] [CONTRA] 【部分決済後のコメント管理パターン】MQL5ではPositionModifyでコメントを変更できないため、TP1部分決済後の状態管理にコメントプレフィックスを使う設計は「二重部分決済」リスクを内包する。対策として: (1)グローバルなulong配列でTP1済みチケットを管理する、(2)部分決済後に残りを即クローズ→新コメントで再エントリーする、のいずれかのパターンを採用すること。 (.clinerules)
- [RISK] DEAL_POSITION_IDによるトレード集計: 部分決済を含むポジションでは同一ポジション由来の複数DEALが発生する。連敗カウント等のトレード単位集計にはDEAL_COMMENTではなくDEAL_POSITION_IDを使用し、カウント済みIDを配列で管理することで重複計上を防ぐ。 (.clinerules)
- [RISK] 【OnTradeTransactionによる決済検出パターン】ポジションクローズの検出にはOnTradeTransaction(trans.type == TRADE_TRANSACTION_DEAL_ADD && DEAL_ENTRY_OUT)を使用し、DEAL_POSITION_IDでエントリー管理配列と照合する設計が堅牢。HistorySelectによるポーリング方式より確実でリアルタイム性が高い。 (.clinerules)
- [TREND] [BREAKOUT] [FILTER] [META] マルチタイムフレームEAでATR等のボラティリティ指標をCopyBufferする際、エントリー判定用の価格・MA(start_pos=1で確定足参照)とATR(start_pos=0で未確定バー参照)でstart_posが混在しやすい。設計方針として「全バッファのstart_posを統一する」か「ATRのみ最新値を使う理由をコメントで明記する」かを決めておくべき。 (.clinerules)
- [FILTER] SYMBOL_SPREADはポイント単位のlong値を返すため、価格単位に変換するには
* _Pointを直接使用する (.clinerules) - [FILTER] スキャルピングEAでXAUUSD等のスプレッド変動が大きい銘柄を扱う場合、pips単位ではなく価格単位(ドル)でスプレッド閾値・トレランスを指定する設計が適切。_Digits==2環境ではpips×_Pointが意図しない極小値になる (.clinerules)
- [TREND] [FILTER] スプレッドリトライパターン(予約エントリーのスプレッド不良時リトライ): 予約フラグ方式でスプレッド不良時に即破棄せず、MAX_SPREAD_RETRY回まで次バーで再試行する設計。リトライカウンターは予約フラグと同時にリセットし、クールダウンや金曜制限等の他条件で予約破棄する際もリセットを忘れないこと。リトライの粒度(ティック単位 vs バー単位)を設計時に明確にすべき。 (.clinerules)
Story Package¶
- Hook: AIが研究メモから自律発掘した「Statistical Anomaly Reversal」をEA化して検証。
- Blog angle: 研究アイデアは本当にMT5で再現できるのか、OOSで崩れるかまで公開する。
- Failure angle: 失敗時は NO_TRADE / LOW_SAMPLE / OVERFIT / HIGH_DD に分類して次の研究候補へ進む。
Spec Validation Warnings (auto-generated)¶
- CONTRADICTION: 『Minimum ATR activity filter』が『Filters』セクションに記載されているが、具体的な条件式が仕様書に記載されていない。Entry logic は『RSI oversold/overbought クロス』であり、これは価格の急激な反転を伴うため ATR が上昇している可能性が高い。一方、『Minimum ATR activity filter』が『ATR > threshold』を要求する場合、entry 時点で ATR が既に上昇しているため矛盾しない。しかし、『ATR < threshold(スクイーズのみエントリー)』と定義された場合、RSI oversold(価格反転)と ATR 低い(スクイーズ)は同時成立しにくく、取引が極度に減少する可能性がある。
- Fix: 『Minimum ATR activity filter』の具体的な条件式(ATR[1] > threshold か ATR[1] < threshold か)を明記すること。RSI oversold/overbought クロスは通常 ATR 上昇を伴うため、『ATR > threshold』であれば矛盾しない。『ATR < threshold』の場合は entry 条件と矛盾する可能性が高い。
- WARNING: RSI entry signal と regime filter が同一インジケーター(RSI[1])の逆向き条件を含む可能性がある。BUY entry は RSI[1] > 30(oversold から上昇)だが、regime filter は close[1] > sma50[1] のみで定義されている。ただし、仕様書の『Logic Independence Requirements』セクションで「Do NOT use RSI thresholds to define regime」と明記されているため、regime 定義自体は独立している。しかし、実装時に regime 確認後に RSI 条件を追加する場合、RSI[1] > 30 と同時に RSI[1] < 50(sub-exit 条件)を AND 結合すると矛盾する可能性がある。
- Fix: sub-exit 条件は exit logic であり entry AND 条件ではないため、理論上矛盾しない。ただし、entry 時に『RSI[1] > 30 AND RSI[1] < 50』を同時に要求する実装になっていないか確認すること。仕様書では entry と exit が分離されているため、この点は問題ない。
- WARNING: Regime filter の定義が『ONE regime variable only』と明記されているが、仕様書の『Filters』セクションに『Contrarian safety filter: disable after consecutive false signals』が記載されている。この『consecutive false signals』の判定ロジックが明示されていないため、実装時に regime 変数以外の追加フィルター変数が暗黙的に AND 結合される可能性がある。『consecutive false signals』が RSI の連続失敗カウントなど別軸で定義される場合、regime 変数との AND 結合で条件が過度に厳しくなり、取引が極度に減少する可能性がある。
- Fix: 『consecutive false signals』の具体的な判定ロジック(RSI 連続失敗カウント、連敗数、期間など)を明記し、それが regime 変数と独立した軸であることを確認すること。AND 結合時に『全条件が同時に真になるバーが存在するか』をスケッチで検証すること。
- WARNING: 『Regime-specific confirmation filter from source evidence』が『Filters』セクションに記載されているが、具体的な条件式が仕様書に記載されていない。source evidence に『月初の週 (1-5営業日) は機関の月次リバランスでドルが買われやすい傾向』『月曜オープンのギャップ埋め戦略』などが記載されているが、これらが entry AND 条件に組み込まれるかどうか不明。実装時に曜日・営業日フィルターが regime 変数と AND 結合される場合、条件が過度に厳しくなる可能性がある。
- WARNING: 『Partial close option: 50% at 0.75R, hold remainder for regime exit』が記載されているが、部分決済後の『二重部分決済』リスク、DEAL_POSITION_ID による重複計上リスク、OnTradeTransaction による決済検出の実装パターンが Implementation Guardrails で詳述されている。これらは実装上の注意であり、仕様書の logic 矛盾ではないが、実装時に部分決済ロジックが複雑化して regime exit 判定と矛盾する可能性がある。
- WARNING: 『Hard stop: ATR(14)1.5 beyond entry, fixed』と『Primary exit: regime signal reverses』が両立する場合、regime 反転が ATR1.5 より先に発生すれば regime exit が優先される。逆に ATR*1.5 が先に発生すれば hard stop が優先される。exit 優先順位が明記されていないため、実装時に exit ロジックの順序が曖昧になる可能性がある。
- WARNING: 『Time exit: max hold InpMaxBars bars (default=24)』が記載されているが、regime exit、RSI sub-exit、hard stop、partial close との優先順位が明記されていない。複数の exit 条件が同時に発火する場合の処理順序を明確にすべき。
- WARNING: 『Contrarian safety filter: disable after consecutive false signals』の『consecutive false signals』が何を指すのか不明。RSI oversold/overbought クロスが失敗(逆方向に動く)した回数か、regime 反転か、hard stop に引っかかった回数か、定義が曖昧。実装時に誤解が生じやすい。
- WARNING: 仕様書の『Logic Independence Requirements』セクションで『ONE regime variable only』と明記されているが、『Regime-specific confirmation filter from source evidence』が追加フィルターとして機能する場合、実質的に複数のレジーム判定軸が AND 結合される可能性がある。『confirmation filter』が regime 変数に統合されているのか、独立した AND 条件なのか、明確にすべき。
Actual Pipeline Result¶
- Final selected EA source: (内部成果物)
- Backtests executed: 3
- Backtest: USDJPY/H1, 2025.05.05-2026.01.30, model=1
- Result: FAIL, PF=0.00, trades=8, profit=2.30%, max DD=1.00%
- Note: Compile succeeded and the three-BT selection flow completed, but the candidate stayed LOW_SAMPLE and below the PF threshold.
🇬🇧 Click to expand (English version)
Research EA Spec: Statistical Anomaly Reversal¶
EA Identity¶
- EA name: REF0430_01_Statistical_Anomaly_Reversal_v1
- Symbol: USDJPY
- Timeframe:
- Primary style: meta
- Entry mechanism: oscillator_reversal
- Regime target: any
- Position logic: fixed_sl
Research Thesis¶
Statistical Anomaly Reversal candidate generated from 1 research source(s). The strategy must preserve the source idea while keeping parameters broad enough to survive out-of-sample testing.
Source Evidence¶
- [SEASONAL] [MR] 月初の週 (1-5営業日) は機関の月次リバランスでドルが買われやすい傾向
- [RISK] [SEASONAL] スワップポイントが正/負の通貨ペアで複数日ポジション保有時はスワップを損益計算に必ず含める
- [ANOMALY] [FILTER] G10通貨ペアの相関は実際には高く、複数通貨同時保有は想定リスクの1.5-2倍と考える
- [SEASONAL] [CONTRA] 月曜オープンのギャップ埋め戦略は統計的に確認されているが、ギャップ方向が先週トレンドの延長の場合は失敗率が高い
Tradable Spec¶
- Entry logic: BUY entry: RSI(14) on bar[1] crosses above oversold threshold from below —
rsi[1] > InpOversold && rsi[2] <= InpOversold(input default InpOversold=30). SELL entry: RSI crosses below overbought —rsi[1] < InpOverbought && rsi[2] >= InpOverbought(default=70). Regime filter: define using a separate 50-bar SMA —bullishRegime = (close[1] > sma50[1]). Do NOT use RSI thresholds to define regime, as that reuses the same indicator as the entry signal. ONE regime variable only: use ONLYbullishRegimein the entry AND condition — do NOT also addregimeUpor any slope check. - Exit logic: Primary exit: regime signal reverses (opposite regime state detected on confirmed bar[1]). RSI sub-exit: if entry used RSI oversold signal, exit when RSI[1] returns above 50 (longs) or below 50 (shorts). Hard stop: ATR(14)*1.5 beyond entry, fixed. Time exit: max hold InpMaxBars bars (default=24) — meta strategies degrade when held positionally. Partial close option: 50% at 0.75R, hold remainder for regime exit.
- Risk management: Fixed fractional risk per trade, no martingale, no grid expansion, max one position per symbol, and hard daily loss guard.
Filters¶
- Spread and session filter
- Minimum ATR activity filter
- Regime-specific confirmation filter from source evidence
- Contrarian safety filter: disable after consecutive false signals
Logic Independence Requirements¶
Mandatory check (must verify before implementation):
- Entry signal variables and regime filter variables must be calculated from independent data sources or independent lookback periods.
- Bad example:
bullishCross = fastMA[1] > slowMA[1]ANDisBearishRegime = fastMA[1] < slowMA[1]— these cannot both be true on the same bar, resulting in zero trades. - Correct regime definition: slope of
slowMA[1] - slowMA[10], higher timeframe MA direction, or slope over a long lookback (50+ bars). - When all filters are AND-combined, sketch-verify that at least one bar can theoretically trigger.
- For mean-reversion strategies, always verify that "negation of entry condition ≠ regime condition".
- When using the same indicator (RSI, BB, ATR, etc.) as both "signal source" and "filter source", confirm you are not demanding contradictory inequalities on the same bar.
- Single regime variable only: Define exactly one bool variable (e.g.,
bullishRegimeoruptrend) and use only that one variable in the entry AND condition. Ban combining two regime variables with AND (e.g.,bullishRegime && regimeUp). If you need to judge across multiple axes (slope, price position, ADX), merge them into a single composite bool variable before AND-combining.
Optimization Envelope¶
- Relaxable: confirmation thresholds, ATR activity threshold, session window, signal confirmation bars.
- Not relaxable: stop-loss discipline, max one position, no martingale, no fixed historical price levels.
- Initial optimization scope: 3-5 parameters only.
- If no trades: loosen entry confirmation first, then session restriction, then ATR threshold.
- If too many trades: strengthen regime filter and minimum signal distance.
Backtest Acceptance¶
- Backtest at least 9 months with the latest 3 months held out.
- Use walk-forward setting 6:2 when MT5 runner is available.
- Reject if OOS/IS PF ratio is below 0.70 or if OOS PF min is below 1.10.
- Reject if OOS trade count is too low; first loosen entry filters before optimizing profit targets.
Overfitting Controls¶
- Keep each numeric parameter in a wide theory-backed range; do not tune to a single date range.
- Limit optimization to 3-5 core parameters in the first pass.
- Prefer regime filters with clear market meaning over curve-fitted thresholds.
- Stop improving the candidate after repeated NO_TRADE/LOW_SAMPLE failures.
Learning Feedback¶
- No prior ledger signal was available for this DNA.
Implementation Guardrails¶
- [META] [RISK] [CONTRA] MT5 Strategy Testerは同名EAのinput値をキャッシュすることがあり、mq5側のinputデフォルトを変更して再コンパイルしても、BTでは前回値が使われる場合がある。inputデフォルト変更の検証では、別EA名/別ファイル名にするか、tester.ini/ExpertParametersで明示的に値を渡し、Testerログの「started with inputs」を必ず確認する。 (.clinerules)
- [RISK] [META] [CONTRA] 【部分決済後のコメント管理パターン】MQL5ではPositionModifyでコメントを変更できないため、TP1部分決済後の状態管理にコメントプレフィックスを使う設計は「二重部分決済」リスクを内包する。対策として: (1)グローバルなulong配列でTP1済みチケットを管理する、(2)部分決済後に残りを即クローズ→新コメントで再エントリーする、のいずれかのパターンを採用すること。 (.clinerules)
- [RISK] DEAL_POSITION_IDによるトレード集計: 部分決済を含むポジションでは同一ポジション由来の複数DEALが発生する。連敗カウント等のトレード単位集計にはDEAL_COMMENTではなくDEAL_POSITION_IDを使用し、カウント済みIDを配列で管理することで重複計上を防ぐ。 (.clinerules)
- [RISK] 【OnTradeTransactionによる決済検出パターン】ポジションクローズの検出にはOnTradeTransaction(trans.type == TRADE_TRANSACTION_DEAL_ADD && DEAL_ENTRY_OUT)を使用し、DEAL_POSITION_IDでエントリー管理配列と照合する設計が堅牢。HistorySelectによるポーリング方式より確実でリアルタイム性が高い。 (.clinerules)
- [TREND] [BREAKOUT] [FILTER] [META] マルチタイムフレームEAでATR等のボラティリティ指標をCopyBufferする際、エントリー判定用の価格・MA(start_pos=1で確定足参照)とATR(start_pos=0で未確定バー参照)でstart_posが混在しやすい。設計方針として「全バッファのstart_posを統一する」か「ATRのみ最新値を使う理由をコメントで明記する」かを決めておくべき。 (.clinerules)
- [FILTER] SYMBOL_SPREADはポイント単位のlong値を返すため、価格単位に変換するには
* _Pointを直接使用する (.clinerules) - [FILTER] スキャルピングEAでXAUUSD等のスプレッド変動が大きい銘柄を扱う場合、pips単位ではなく価格単位(ドル)でスプレッド閾値・トレランスを指定する設計が適切。_Digits==2環境ではpips×_Pointが意図しない極小値になる (.clinerules)
- [TREND] [FILTER] スプレッドリトライパターン(予約エントリーのスプレッド不良時リトライ): 予約フラグ方式でスプレッド不良時に即破棄せず、MAX_SPREAD_RETRY回まで次バーで再試行する設計。リトライカウンターは予約フラグと同時にリセットし、クールダウンや金曜制限等の他条件で予約破棄する際もリセットを忘れないこと。リトライの粒度(ティック単位 vs バー単位)を設計時に明確にすべき。 (.clinerules)
Story Package¶
- Hook: AI autonomously discovered "Statistical Anomaly Reversal" from research notes and converted it into an EA for verification.
- Blog angle: Can a research idea truly be reproduced on MT5? We publish results all the way through to OOS decay.
- Failure angle: Failures are classified as NO_TRADE / LOW_SAMPLE / OVERFIT / HIGH_DD and fed into the next research candidate pipeline.
Spec Validation Warnings (auto-generated)¶
- CONTRADICTION: 『Minimum ATR activity filter』が『Filters』セクションに記載されているが、具体的な条件式が仕様書に記載されていない。Entry logic は『RSI oversold/overbought クロス』であり、これは価格の急激な反転を伴うため ATR が上昇している可能性が高い。一方、『Minimum ATR activity filter』が『ATR > threshold』を要求する場合、entry 時点で ATR が既に上昇しているため矛盾しない。しかし、『ATR < threshold(スクイーズのみエントリー)』と定義された場合、RSI oversold(価格反転)と ATR 低い(スクイーズ)は同時成立しにくく、取引が極度に減少する可能性がある。
- Fix: 『Minimum ATR activity filter』の具体的な条件式(ATR[1] > threshold か ATR[1] < threshold か)を明記すること。RSI oversold/overbought クロスは通常 ATR 上昇を伴うため、『ATR > threshold』であれば矛盾しない。『ATR < threshold』の場合は entry 条件と矛盾する可能性が高い。
- WARNING: RSI entry signal と regime filter が同一インジケーター(RSI[1])の逆向き条件を含む可能性がある。BUY entry は RSI[1] > 30(oversold から上昇)だが、regime filter は close[1] > sma50[1] のみで定義されている。ただし、仕様書の『Logic Independence Requirements』セクションで「Do NOT use RSI thresholds to define regime」と明記されているため、regime 定義自体は独立している。しかし、実装時に regime 確認後に RSI 条件を追加する場合、RSI[1] > 30 と同時に RSI[1] < 50(sub-exit 条件)を AND 結合すると矛盾する可能性がある。
- Fix: sub-exit 条件は exit logic であり entry AND 条件ではないため、理論上矛盾しない。ただし、entry 時に『RSI[1] > 30 AND RSI[1] < 50』を同時に要求する実装になっていないか確認すること。仕様書では entry と exit が分離されているため、この点は問題ない。
- WARNING: Regime filter の定義が『ONE regime variable only』と明記されているが、仕様書の『Filters』セクションに『Contrarian safety filter: disable after consecutive false signals』が記載されている。この『consecutive false signals』の判定ロジックが明示されていないため、実装時に regime 変数以外の追加フィルター変数が暗黙的に AND 結合される可能性がある。『consecutive false signals』が RSI の連続失敗カウントなど別軸で定義される場合、regime 変数との AND 結合で条件が過度に厳しくなり、取引が極度に減少する可能性がある。
- Fix: 『consecutive false signals』の具体的な判定ロジック(RSI 連続失敗カウント、連敗数、期間など)を明記し、それが regime 変数と独立した軸であることを確認すること。AND 結合時に『全条件が同時に真になるバーが存在するか』をスケッチで検証すること。
- WARNING: 『Regime-specific confirmation filter from source evidence』が『Filters』セクションに記載されているが、具体的な条件式が仕様書に記載されていない。source evidence に『月初の週 (1-5営業日) は機関の月次リバランスでドルが買われやすい傾向』『月曜オープンのギャップ埋め戦略』などが記載されているが、これらが entry AND 条件に組み込まれるかどうか不明。実装時に曜日・営業日フィルターが regime 変数と AND 結合される場合、条件が過度に厳しくなる可能性がある。
- WARNING: 『Partial close option: 50% at 0.75R, hold remainder for regime exit』が記載されているが、部分決済後の『二重部分決済』リスク、DEAL_POSITION_ID による重複計上リスク、OnTradeTransaction による決済検出の実装パターンが Implementation Guardrails で詳述されている。これらは実装上の注意であり、仕様書の logic 矛盾ではないが、実装時に部分決済ロジックが複雑化して regime exit 判定と矛盾する可能性がある。
- WARNING: 『Hard stop: ATR(14)1.5 beyond entry, fixed』と『Primary exit: regime signal reverses』が両立する場合、regime 反転が ATR1.5 より先に発生すれば regime exit が優先される。逆に ATR*1.5 が先に発生すれば hard stop が優先される。exit 優先順位が明記されていないため、実装時に exit ロジックの順序が曖昧になる可能性がある。
- WARNING: 『Time exit: max hold InpMaxBars bars (default=24)』が記載されているが、regime exit、RSI sub-exit、hard stop、partial close との優先順位が明記されていない。複数の exit 条件が同時に発火する場合の処理順序を明確にすべき。
- WARNING: 『Contrarian safety filter: disable after consecutive false signals』の『consecutive false signals』が何を指すのか不明。RSI oversold/overbought クロスが失敗(逆方向に動く)した回数か、regime 反転か、hard stop に引っかかった回数か、定義が曖昧。実装時に誤解が生じやすい。
- WARNING: 仕様書の『Logic Independence Requirements』セクションで『ONE regime variable only』と明記されているが、『Regime-specific confirmation filter from source evidence』が追加フィルターとして機能する場合、実質的に複数のレジーム判定軸が AND 結合される可能性がある。『confirmation filter』が regime 変数に統合されているのか、独立した AND 条件なのか、明確にすべき。
Actual Pipeline Result¶
- Final selected EA source: (内部成果物)
- Backtests executed: 3
- Backtest: USDJPY/H1, 2025.05.05-2026.01.30, model=1
- Result: FAIL, PF=0.00, trades=8, profit=2.30%, max DD=1.00%
- Note: Compile succeeded and the three-BT selection flow completed, but the candidate stayed LOW_SAMPLE and below the PF threshold.
免責事項
本EAは自動生成された検証用コードです。実運用可否はご自身で検証してください。
関連用語¶
— SPONSORED —