No Strategy Factory campaign artifacts in this checkout — the A6+ campaigns are produced by the multi-market research lane and will be indexed here automatically once their artifacts are present.
Hypothesis tested
41 of 41 shown, newest firstHypothesis testedv2-live-shadow-integrationlive_shadow_infrastructure_complete_awaiting_real_live_traffic · n=n=2 live-shadow-integration-specific tests (both passing); n=0 real production live observations (infrastructure just deployed, no live traffic processed against it yet)2026-09-13
Per AJ's explicit instruction (2026-09-13, following V2 implementation-readiness): keep V2 frozen/shadow-only, do not alter V1 or choose B/C/D. (1) Let the prospective dataset populate only from genuinely new market data after approval -- no manufactured observations from old data. (2) Lock the validated PDH-swept veto as PASS/exclusion for baseline and displacement-qualified populations, never elite; downweighting…
research-output/campaign-state.json
Hypothesis testedv2-implementation-readiness-executable-spec-and-parityimplementation_readiness_complete_shadow_mode_only · n=n=329 classified trades (parity check); n=225/114 (sizing comparison, same populations as SIZING-1..5); 12 decision-integrity unit tests; 828 full-suite tests2026-09-13
Per AJ's explicit instruction (2026-09-13, 'Move into V2 implementation-readiness'): convert the approved docs/CANDIDATE_ARCHITECTURE_V2.md into an exact, zero-ambiguity executable specification (docs/V2_EXECUTABLE_SPECIFICATION.md); implement the classifier in the bot as a shared, canonical module (lib/strategy-engine/research/architectureV2/) rather than logic duplicated inline in a standalone script; refactor scr…
research-output/campaign-state.json
Hypothesis testedsizing-5-temporal-behavior-comparisontemporal_comparison_complete_all_four_frozen_no_winner_chosen · n=n=225 (CONTROL/B/C), n=114 (D)2026-09-13
Final sizing-phase study per AJ's explicit instruction: compare the 4 frozen candidates (CONTROL 1.00/1.00/1.00, B 0.50/1.00/1.00, C 0.50/1.25/1.25, D-quality-only 0.00/1.00/1.00 -- std=0 carried forward as a legitimate candidate per AJ's decision) on temporal behavior -- trade frequency, inactivity gaps, rolling 30/60/90-calendar-day performance, drawdown duration, capital deployed, return per unit exposure, and pr…
research-output/campaign-state.json
Hypothesis testedsizing-4-boundary-and-decompositionconditional_premise_not_met_reporting_honestly_awaiting_ajs_direction · n=n=225 (std=1.00-0.25 sweeps) or n=114 (std=0.00, quality+elite only)2026-09-13
Final sizing boundary/simplification study per AJ's explicit instruction: (a) does de-risking the standard tier keep improving Calmar past 0.5x, at 0.25x and 0x (fully excluding standard-tier trades), tested at both quality/elite=1.0 and quality/elite=1.25; (b) direct isolation of 0.5/1.00/1.00 vs 0.5/1.25/1.25 to separate the value of de-risking the weak tier from up-sizing the strong tiers, with capital-normalized…
research-output/campaign-state.json
Hypothesis testedsizing-3-harden-stable-region-finalistshardening_complete_ranking_robust_no_promotion · n=n=225 per candidate per scenario2026-09-13
Hardening pass on 3 representative points from SIZING-2's stable region plus control, per AJ's explicit instruction: leave-one-year-out, full-resample (10,000) block bootstrap across 3 block sizes, recency/drift, and degraded-edge/slippage stress tests. Question: does each candidate's RANKING relative to the others hold under every check, not just whether it stays profitable. — Base Calmar ranking: C=11.200 > B=10.8…
research-output/campaign-state.json
Hypothesis testedsizing-2-constrained-grid-searchstable_region_identified_pending_hardening · n=n=225 for every grid point (same veto-filtered population, only sizing varies)2026-09-13
Constrained coarse-to-medium multiplier grid search per AJ's explicit instructions: 84 monotonic (standard<=quality<=elite) triples from {0.5,0.75,1.0,1.25,1.5,1.75,2.0}, judged against the fixed-risk architecture (veto filter, flat 1.0x) as control, ranked on Calmar-like return/maxDD, reduced-resample (1500) block-bootstrap tail robustness, chronological (per-year) stability, worst rolling-20-trade window, and simp…
research-output/campaign-state.json
Hypothesis testedshadow-logging-v2-initial-backfillinfrastructure_verified · n=329 rows classified, 0 already-classified (first run)2026-09-13
Initial run of the prospective/shadow classifier (scripts/classifyArchitectureV2.ts, see docs/SHADOW_LOGGING_V2.md) against the full existing dataset, to seed ArchitectureV2ShadowClassification with a historical baseline and cross-check the classifier's implementation against every other place in the campaign that computes the same tier/veto split. — 329 rows classified (50 trades inside the WARMUP=50 window correct…
research-output/campaign-state.json
Hypothesis testedsizing-1-fixed-vs-tier-based-first-passfirst_pass_complete_promising_directionally_needs_grid_search_and_hardening · n=n=329 (scenario 1); n=225 (scenarios 2-4, 68.4% of baseline retained after the veto filter)2026-09-13
First pass of the dedicated bounded risk-sizing research AJ asked to begin: compares fixed risk against tier-based sizing on return, drawdown, risk-adjusted performance, losing streaks, tail behavior, and robustness. No multiplier values are chosen or proposed -- this exercises the comparison methodology with illustrative schemes. — SCENARIO 1 FIXED-ALL (today's status quo, no architecture): n=329, total P&L=64.24R,…
research-output/campaign-state.json
Hypothesis testedphase-e-ledger-completeness-auditaudit_complete_no_gaps_found · n=n/a -- documentation audit, not a new data analysis2026-09-13
Per AJ's explicit instruction, before starting the sizing-research phase: audit whether any RegimeSnapshot field remains undocumented in the feature/regime research ledger. — All 42 fields are accounted for: displacementMagnitudeNormalizedAtr (primary validated candidate, extensively tested D through H), targetDistanceNormalizedAtr (D-3/D-4, H-3, not significant standalone), sweepDepthNormalizedAtr (D-2, null result…
research-output/campaign-state.json
Hypothesis testedphase-h-14-pdh-veto-hardening-batteryhardening_battery_passed_with_one_stated_caveat_dependency_concern_resolved_favorably · n=Full baseline n=329 (223 keep / 106 excluded). Displacement-only n=159 (112 keep / 47 excluded).2026-09-13
Full adversarial hardening battery on H-13's PDH-swept veto finding, per AJ's explicit instruction, before promoting it toward a candidate architecture: leave-one-year-out, trade concentration, warm-up sensitivity, recency/drift, and a dependency-aware investigation into why H-13's block-bootstrap CIs (block size 5) crossed zero at the lower bound despite clear permutation significance. Applied to both the full-base…
research-output/campaign-state.json
Hypothesis testedphase-h-13-pdh-swept-veto-downgrade-at-proper-scaleveto_framing_validated_at_both_scales_pending_own_hardening_battery · n=Full baseline: n=329 (223 keep / 106 excluded). Displacement-only: n=159 (112 keep / 47 excluded).2026-09-13
Re-scopes pdhSweptAtDecision from 'third quality booster' (H-12, rejected on the narrow 46-trade elite group) to a VETO/DOWNGRADE condition, tested at the two scales where it has real sample size per AJ's explicit instruction: the full baseline population and the displacement-only population. Question: does excluding PDH-swept trades improve expectancy, PF, drawdown, and losing streak, without destroying trade count…
research-output/campaign-state.json
Hypothesis testedphase-h-12-incremental-value-of-third-factor-on-validated-combinationthird_factor_adds_no_incremental_value_2_factor_model_remains_the_leading_finding · n=2-factor baseline n=46. Test 1: arm n=35 / remainder n=11. Test 2: arm n=44 / remainder n=2. Test 3: arm n=33 / remainder n=13.2026-09-13
Per AJ's explicit instruction and the harder, more useful standard AJ named ('does this variable add information beyond the already-good 2-factor model' rather than 'does this variable work at all'): three tests, in strict order -- (1) 2-factor arm (displacement+pdlSweptAtDecision, n=46) + distanceToPdl; (2) 2-factor arm + PDH not swept; (3) both together. Each measured against the REST of the 2-factor arm, not the…
research-output/campaign-state.json
Hypothesis testedphase-h-11-pdl-cluster-remaining-members-walk-forward-significancetwo_new_significant_standalone_signals_need_combination_and_hardening_work · n=distanceToPdl: 495 trades (445 post-warmup: 174 close, 271 far). pdhSweptAtDecision: 379 trades (259 false, 120 true).2026-09-13
Standalone walk-forward + significance validation of the two remaining PDL-proximity cluster members from F-4 that had not yet been through the H-1a-style pipeline: distanceToPdl (continuous, E-4 found low-better 4/4 descriptively) and pdhSweptAtDecision (boolean, E-5 found false-better 4/4 descriptively). F-4 found both moderately correlated with pdlSweptAtDecision (r=-0.42 to 0.47) but not redundant with it, so ea…
research-output/campaign-state.json
Hypothesis testedphase-h-10-combined-filter-trade-list-sanity-auditaudit_clean_two_items_flagged_for_awareness · n=46 trades (identical combined arm as H-5/H-6/H-7/H-8)2026-09-13
Focused sanity audit of the exact 46-trade displacement+pdlSweptAtDecision combined arm (H-5/H-6/H-7/H-8) for implementation/data pathologies that could secretly explain the result, per AJ's explicit instruction: repeated dates, clustered trades, unusual instruments/sessions, outlier R values, duplicate setups, lookahead contamination, or any other shared characteristic. Diagnostic only -- no trade excluded or rewei…
research-output/campaign-state.json
Hypothesis testedphase-h-9-netmovement-walk-forward-significancestandalone_not_significant_combination_value_separately_confirmed · n=379 trades (329 post-warmup: 174 high, 155 low)2026-09-13
Apply the same rigorous pipeline that validated displacement magnitude (leak-free walk-forward split + permutation significance test) to netMovementOverAbsMovement standalone -- E-3's discovery signal (4/4 years agreed descriptively), confirmed independent of displacement in F-4 (r=0.074), and shown to add incremental combination value on top of displacement in F-5 (+0.116R). This is netMovementOverAbsMovement's own…
research-output/campaign-state.json
Hypothesis testedphase-h-8-combined-filter-warmup-sensitivityhardening_check_passed · n=Combined-arm n ranges from 32 (warmup=150) to 46 (warmup=50) depending on warmup length; baseline/disp-only shrink correspondingly (see script output).2026-09-13
Warm-up sensitivity check for H-5's combined filter (displacement magnitude x pdlSweptAtDecision), mirroring G-1b's check on displacement magnitude alone. Per AJ's explicit instruction to test threshold/warm-up sensitivity as part of hardening the n=46 combined-filter result. — warmup=20/30/50/75/100/150 all showed the combined arm improving over displacement-only-alone, with combined-arm sample sizes shrinking grac…
research-output/campaign-state.json
Hypothesis testedphase-h-7-combined-filter-block-bootstraphardening_check_passed_with_caveats · n=Combined arm n=46, displacement-only-not-swept arm n=1132026-09-13
Block bootstrap confidence interval on H-5's combined-filter gap (displacement x pdlSweptAtDecision vs. displacement-only-not-swept), the same dependency-aware test that strengthened displacement magnitude alone in H-4. Per AJ's explicit instruction to harden the combined filter with the same standard. — Observed gap (combined vs. displacement-only-not-swept): 0.374R (matches H-5 exactly). 95% block-bootstrap CI: [0…
research-output/campaign-state.json
Hypothesis testedphase-h-6-combined-filter-hardening-batteryhardening_battery_mostly_passed_with_two_material_corrections · n=Combined arm n=46 (2024: n=15, 2025: n=17, 2026: n=14, 2023: n=0); displacement-only comparison arm n=1592026-09-13
Full adversarial hardening battery on H-5's combined filter (displacement x pdlSweptAtDecision, n=46, exp=0.625R, PF=3.61, p=0.028), per AJ's explicit 7-item request to 'try to destroy the result' given n=46 is the primary weakness: chronological breakdown, recency/drift, trade concentration, drawdown/losing-streak comparison, and leave-one-year-out sensitivity, all against the exact same 46-trade combined arm H-5 p…
research-output/campaign-state.json
Hypothesis testedphase-h-5-combined-filter-walk-forward-validationsignificant_smaller_sample_needs_further_hardening · n=379 trades; combined arm n=46 (14.0% of the 329 baseline post-warmup trades)2026-09-13
Validate F-5's most promising combination (displacement magnitude x pdlSweptAtDecision) with the same rigor as displacement magnitude alone: a leak-free walk-forward simulation plus a significance test, since F-5's descriptive test had small per-year samples (n=4 to n=19). — BASELINE (all post-warmup): n=329 exp=0.195R PF=1.44. DISPLACEMENT-ONLY (walk-forward): n=159 exp=0.359R PF=1.95. COMBINED (displacement-only A…
research-output/campaign-state.json
Hypothesis testedphase-f-5-combination-value-displacement-plus-independent-signalspromising_pending_walk_forward_validation · n=379 trades; combination B's per-year combined-filter counts are small (2023 n=4, 2024 n=14, 2025 n=19, 2026 n=16; pooled n=53)2026-09-13
Does actually combining displacement magnitude with netMovementOverAbsMovement or pdlSweptAtDecision (both confirmed independent of displacement in F-4) improve results beyond displacement alone? Direct combination-value test, not just an independence check. — COMBINATION A (netMovementOverAbsMovement): pooled high-displacement-alone exp=0.260R PF=1.62 (n=188) -> high-displacement+high-netMovement exp=0.376R PF=2.00…
research-output/campaign-state.json
Hypothesis testedphase-f-4-redundancy-checkindependence_confirmed_for_displacement_partial_overlap_within_pdl_cluster · n=379 trades with all 5 fields non-null2026-09-13
Check whether the 4 new discovery signals (netMovementOverAbsMovement, distanceToPdl, pdhSweptAtDecision, pdlSweptAtDecision) are independent of each other and of displacement magnitude, or whether the PDL-cluster signals are redundant restatements of the same underlying construct. — displacementMagnitude vs all 4 new signals: ALL WEAK (r=-0.102 to 0.074) -- displacement magnitude is genuinely independent of every n…
research-output/campaign-state.json
Hypothesis testedphase-e-4-and-e-5-exhaustive-remaining-fields4_new_discovery_signals_found_likely_2_independent_constructs · n=495 trades for fully-populated fields; 379 for fields with the ~76% coverage pattern seen throughout this campaign2026-09-13
Exhaustively test every remaining untested RegimeSnapshot field before any V2 decision, per AJ's explicit instruction. E-4: 20 continuous fields (opening range, remaining trend/chop measures, overnight/session structure). E-5: the 4 boolean sweep flags (pdhSweptAtDecision, pdlSweptAtDecision, onhSweptAtDecision, onlSweptAtDecision), tested via true/false comparison instead of median split. — E-4: 18 of 20 fields NUL…
research-output/campaign-state.json
Hypothesis testedphase-e-3-remaining-regime-fields-standalone8_null_1_new_discovery_signal · n=495 trades; netMovementOverAbsMovement has 379 non-null (116 null)2026-09-13
Per AJ's explicit instruction to finish remaining feature/interaction research before any V2 decision: test every RegimeSnapshot field E-1 only ever examined for regime-comparison purposes (never as a standalone win/loss predictor) -- atr1m, atr5m, sessionAtr, atrPercentile20Session, realizedVolatility, volatilityPercentile, directionalEfficiencyRatio, netMovementOverAbsMovement, candleOverlapPct. — 8 of 9 fields NU…
research-output/campaign-state.json
Hypothesis testedphase-h-4-block-bootstrap-confidence-intervalconfirmed_robust_to_serial_correlation · n=445 post-warmup trades, 10,000 block-resamples of block size 202026-09-13
Addresses H-1a/b's explicitly-stated limitation: the permutation test there assumed trade-level exchangeability under the null, which trade returns may not strictly satisfy (nearby trades can share regime/serial-correlation structure). Builds a block bootstrap 95% confidence interval on the walk-forward high-vs-low expectancy gap instead, resampling contiguous blocks (preserving local order/correlation) rather than…
research-output/campaign-state.json
Hypothesis testedphase-f-3-displacement-by-entry-timeno_interaction_effect · n=495 trades across 4 years x 2 entry-time halves x 2 displacement halves2026-09-13
Does entryMinuteFromOpen (time of day) moderate displacement magnitude's win/loss separation? Same interaction method as F-1 (volatility, no interaction) and F-2 (trend/chop, inconclusive due to a thin sample), but using entryMinuteFromOpen, which is fully populated (495/495, per E-2) -- gets the same statistical power as F-1, unlike F-2. — MAGNITUDE: gap larger when late for 2024/2026, larger when early for 2023/20…
research-output/campaign-state.json
Hypothesis testedphase-h-3-target-distance-walk-forwardnot_significant_confirms_displacement_stronger · n=445 post-warmup trades2026-09-13
Apply the identical rigorous pipeline that validated displacement magnitude (walk-forward leak-free split + permutation significance test) to target distance -- D-3/D-4's other candidate feature, which looked weaker and partly season-confounded at the descriptive level. Answers whether displacement magnitude is genuinely the stronger feature or target distance just got less thorough testing. — Filtered (above traili…
research-output/campaign-state.json
Hypothesis testedphase-h-2-recency-drift-checkstable_no_decay · n=445 post-warmup trades, split into two halves of 222/2232026-09-13
Does the walk-forward displacement-magnitude filter's edge (confirmed significant in H-1a/b) hold up in the most recent trades, or is it decaying? Phase H's own named scope explicitly includes recency/drift analysis. — Earlier half (2023-11-16..2025-05-09, n=222): high exp=0.363R PF=1.98, low exp=0.065R PF=1.13, gap=0.298R. Later half / most recent (2025-05-14..2026-09-10, n=223): high exp=0.363R PF=1.83, low exp=0.…
research-output/campaign-state.json
Hypothesis testedphase-h-1a-and-h-1b-walk-forward-significancesignificant_pending_recency_check · n=495 trades (H-1a); 424 trades from 2024-01-01 onward (H-1b)2026-09-13
H-1a: statistical significance (permutation/label-shuffle test) on the high-vs-low expectancy gap from G-1's leak-free walk-forward split. H-1b: same walk-forward method restricted to 2024-01-01 onward, entirely excluding 2023, to check the result isn't carried by 2023's presence in the expanding window's early history. — H-1a (full population): high n=216 mean=0.363R, low n=229 mean=0.103R, observed gap=0.260R, one…
research-output/campaign-state.json
Hypothesis testedphase-g-1-and-g-1b-walk-forward-displacement-filterwalk_forward_validated_pending_phase_h · n=495 trades total; post-warm-up populations ranged n=345 (warmup=150) to n=475 (warmup=20)2026-09-13
G-1: a walk-forward, leak-free version of the displacement-magnitude filter -- unlike every D/E/F script (which used each year's own FULL-year median, invalid as a forward-looking rule), this computes the threshold at each point using only trades on strictly earlier dates (expanding window). G-1b: sensitivity check on G-1's WARMUP=50 choice across 6 warm-up lengths, since a single arbitrary parameter choice is itsel…
research-output/campaign-state.json
Hypothesis testedphase-f-2-displacement-by-trend-chopinconclusive_reduced_sample · n=361 trades (73% of the 495-trade population) across 4 years x 2 trend/chop halves x 2 displacement halves; per-cell n ranges 26-58, thinner than F-1's 35-902026-09-13
Direct follow-up to F-1: does directionalEfficiencyRatio (trend vs. chop) moderate displacement magnitude's win/loss separation? — MAGNITUDE: gap larger in trending for 2023/2024/2025, larger in choppy for 2026 -- 3/4, not fully consistent. DIRECTION: high-displacement beats low-displacement in only 4 of 8 trend/chop subgroups (2024 trending, 2024 choppy, 2025 trending, 2026 choppy agree; 2023 trending, 2023 choppy,…
research-output/campaign-state.json
Hypothesis testedphase-f-1-displacement-by-volatilityno_interaction_effect · n=495 trades across 4 years x 2 volatility halves x 2 displacement halves2026-09-13
Phase F's first interaction hypothesis: does volatility (atr5m) moderate displacement magnitude's win/loss separation (Phase D's strongest single-feature candidate, D-4: 6/7 half-year blocks agree)? — DIRECTION: high-displacement beats low-displacement in every one of 6 vol-half-year subgroups across 2024/2025/2026 (both vol halves of all 3 years). Only 2023's two vol halves disagree (both negative for both displace…
research-output/campaign-state.json
Hypothesis testedphase-e-2-time-and-day-effectsentryMinuteFromOpen: null_result; dayOfWeek: exploratory_only · n=495 trades; entryMinuteFromOpen across 4 yearly blocks; dayOfWeek across 5 categories x ~4 years (per-year cells n=10-36)2026-09-13
Do two untested Part 5 environment features -- entryMinuteFromOpen (minutes since 09:30 ET) and dayOfWeek -- separate winners from losers among V1's executed, resolved trades? Both are genuinely pre-trade-observable (unlike MAE/MFE, which are outcome-derived). — entryMinuteFromOpen: 2023 earlier-better, 2024 flat, 2025 later-better, 2026 earlier-better -- 1 later-better, 2 earlier-better, 1 flat, no consistent direc…
research-output/campaign-state.json
Hypothesis testedphase-d-4-half-year-block-replicationdiscovery_signal_not_replicated · n=495 trades across 7 half-year blocks (n=71/88/64/65/79/90/38)2026-09-13
Re-run D-1 (displacement magnitude) and D-3 (target distance) at half-year block granularity instead of full calendar years, per E-1's own nextStep, to see whether the 2023 reversal is isolated to that one block or recurs as a seasonal (H1 vs H2) pattern. — DISPLACEMENT MAGNITUDE: 6 of 7 blocks agree high-better; only 2023H2 disagrees (same block as before). This is a MEANINGFULLY STRONGER replication than the year-…
research-output/campaign-state.json
Hypothesis testedphase-e-1-regime-year-comparisonnull_result · n=495 trades joined to RegimeSnapshot rows across 4 yearly blocks (n=71/152/144/128); some fields have additional nulls (e.g. volatilityPercentile n=55/113/122/89)2026-09-13
Does 2023 H2 (the block that consistently disagreed with 2024-2026 in both D-1 displacement magnitude and D-3 target distance) actually look like a numerically distinct market regime, per RegimeSnapshot's own raw volatility/trend measurements -- examined before any choppy/trending/high-vol label is hardcoded, per roadmap Part 5's discipline? — atr5m: 2023 median=24.6, 2024=25.3, 2025=35.7, 2026=41.8 -- a steady mult…
research-output/campaign-state.json
Hypothesis testedphase-d-2-sweep-depth-separationnull_result · n=495 trades across 4 yearly blocks2026-09-13
Does sweep depth (ATR-normalized) separate winners from losers among V1's executed, resolved trades? Same method as D-1. — 2023: low-better (-0.238R vs -0.068R). 2024: flat (0.294R vs 0.283R). 2025: high-better (0.257R vs 0.121R). 2026: flat (0.243R vs 0.198R). 1 high-better, 1 low-better, 2 flat.
research-output/campaign-state.json
Hypothesis testedphase-d-2b-inversion-width-unmeasurableunmeasurable_engine_gap · n=0 usable rows2026-09-13
Does inversion structure width (ATR-normalized) separate winners from losers? Could not be tested. — 0 of 495 executed trades have a non-null inversionWidthNormalizedAtr value -- the field is never populated.
research-output/campaign-state.json
Hypothesis testedphase-d-2c-stop-distance-separationnull_result · n=495 trades across 4 yearly blocks2026-09-13
Does stop distance (ATR-normalized) separate winners from losers among V1's executed, resolved trades? Same method as D-1. — 2023: low-better (-0.221R vs -0.085R). 2024: flat (0.296R vs 0.280R). 2025: high-better (0.369R vs 0.010R). 2026: low-better (0.145R vs 0.297R). 1 high-better, 2 low-better, 1 flat.
research-output/campaign-state.json
Hypothesis testedphase-d-3-target-distance-separationdiscovery_signal_not_replicated · n=495 trades across 4 yearly blocks2026-09-13
Does target distance (ATR-normalized) separate winners from losers among V1's executed, resolved trades? Same method as D-1. — 2023: low-better (-0.247R vs -0.059R). 2024: high-better (0.365R vs 0.212R). 2025: high-better (0.303R vs 0.075R). 2026: high-better (0.366R vs 0.076R). 3 of 4 blocks agree (high-better); 2023 is again the sole disagreement.
research-output/campaign-state.json
Hypothesis testedphase-d-1-displacement-magnitude-separationdiscovery_signal_not_replicated · n=495 executed+resolved trades across 4 yearly blocks (71/152/144/128); per-cell sizes 35-76 per high/low split2026-09-13
Does displacement magnitude (ATR-normalized) separate winners from losers among V1's actually-executed, resolved trades? Roadmap Part 4/Part 3's first setup-feature question. — 2023 (n=71, median=0.325 ATR): high displacement worse (expectancy -0.203R vs -0.102R, both years net negative overall) -> low-better. 2024 (n=152, median=0.350 ATR): high displacement expectancy 0.474R vs low 0.102R, PF 2.50 vs 1.20 -> high-…
research-output/campaign-state.json
Hypothesis testedregime-snapshot-real-data-proofconfirmed_for_scope_tested · n=52 sessions (chunk1), 76 persisted rows2026-09-11
Does the RegimeSnapshot extraction/writer pipeline (computeRegimeSnapshot + persistRegimeSnapshot), built and unit-tested only against synthetic fixtures, actually work against real historical MNQ data end-to-end (replay -> extract -> persist -> verify)? — 147 total setups, 76 with a confirmed entry -> 76 RegimeSnapshot rows persisted, DB count verified matching exactly (76==76). Spot-checked values are real and san…
research-output/campaign-state.json
Hypothesis testedcorrected-v1-produces-tradesconfirmed_for_scope_tested · n=52 sessions, 41 trades2026-09-10
Does the corrected nearest-untapped-liquidity V1 TP rule (PR #71) actually produce accepted trades, where the pre-correction hierarchy was reportedly taking zero/near-zero official trades? — 41 accepted trades / 332 setups / 21W-20L / total R +3.02 / total $ +111.50. 'Target already hit before entry' rejections: 0 (was the specific bug being fixed).
research-output/campaign-state.json