# History Fingerprint LAB — canonical

Updated: 2026-09-13 UTC

This file replaces the scattered planning/install notes in this module as the human-facing source of truth. Code and JSON artifacts remain authoritative for exact schemas/results.

## Purpose and boundary

SOLO History Fingerprint LAB is for causal replay, profile generation research, forward evidence, robustness, regime change and profile survival studies. It is research-only. It must not mutate Combat LIVE, DEMO Champion, Bybit orders, or production selector state.

Core rule: training/in-sample quality never proves a profile. A candidate must be evaluated on later causal/out-of-sample evidence. LONG and SHORT research are independent.

## Rolling profile model

A profile is frozen from information available at its creation point and evaluated only on subsequent market evidence. Candidate quality is multidimensional: PnL/expectancy, WR, losses, traffic, drawdown/damage and evidence size. Newer is not automatically better.

Risk research models the lifecycle rather than fake take-profit targets: profit floor +5 ROI, native trailing arm +10 ROI, and a tested hard-stop. Historical same-bar ambiguity must be handled conservatively.

The old fixed 24h-only ORIGINAL/challenger plan and cadence self-tuning notes are retained only as historical development context; current production generation has evolved beyond those early documents. LAB must measure rather than assume the best training horizon or lifetime.

## LONG 24H predictive-decay experiment

Tool: `tools/long_24h_predictive_decay_v1.php`
Report: `storage/rolling_profile_v1/long_24h_predictive_decay_v1.json`

Question: after a LONG HSCAN profile is trained on 24h, how does its predictive quality behave strictly forward from creation?

Method: freeze every historical LONG HSCAN 24H profile at `created_ts`; causal forward replay on cumulative 1/2/3/4/6/12/24h windows. No production writes.

First run covered 22 profiles:

| Horizon | Resolved | Avg traffic | Avg WR | Total PnL | Avg expectancy |
|---:|---:|---:|---:|---:|---:|
| 1h | 386 | 59.1% | 75.6% | +1405.9 | +3.64 |
| 2h | 724 | 58.3% | 76.6% | +2700.2 | +3.73 |
| 3h | 978 | 59.6% | 76.5% | +3588.7 | +3.67 |
| 4h | 1312 | 60.7% | 75.4% | +4973.6 | +3.79 |
| 6h | 1990 | 61.1% | 76.6% | +7688.0 | +3.86 |
| 12h | 3483 | 61.2% | 76.5% | +13253.0 | +3.81 |
| 24h | 4167 | 62.3% | 75.3% | +14491.1 | +3.48 |

Conclusion: pooled 24H profiles did not show general early collapse. Peak pooled expectancy was around 6h; 24h weakened but remained strongly positive. Therefore 24H must not be removed merely because individual snapshots can look bad.

Critical caveat: cumulative profitability can hide an early damaging sequence followed by recovery. For a small account, recovery after unacceptable capital damage is operationally irrelevant.

## Current priority: Survival / Damage

Primary axis: `RESOLVED_EVENTS_AND_PNL`.
Time axis: `OBSERVATION_ONLY`.

Wall-clock time is too traffic/regime dependent to be the main degradation trigger. Measure the sequence of resolved outcomes instead.

For each frozen profile, walk forward event by event and track cumulative PnL, expectancy, WR, wins/losses, traffic/evidence, drawdown and capital damage. Find the earliest point where degradation is defensible rather than noise. At that exact market state compare contemporaneous 12/6/4/3/2/1H profiles.

Target matrix:

`damage before detection -> evidence count -> current-profile state -> best shorter-horizon alternative -> avoided damage -> false-switch cost`

Research objective: minimize the price of recognizing a regime mismatch without making Champion twitch after every random loss. This is a capital-survival selector problem, not a TTL timer problem.

## SHORT research

SHORT has causal replay, exact-path replay, temporal candidate search, stop selection, robustness, forward collection, challenger building and selector tooling under `tools/`. The same core contract applies: causal data only, out-of-sample evidence, no automatic production mutation from LAB research.

## Operational tooling

Relevant maintained tools under `tools/` include LONG/SHORT forward collectors, causal-row builders, challenger builders, profile runners/selectors, SHORT G0 replay/robustness tools, and the current LONG 24H decay experiment. Exact implementation is in code; this document intentionally does not duplicate every function/schema.

## ROI Path Confidence Matrix V1 — 2026-09-12

Research-only tool: `tredersolo.online/modules/history_fingerprint_lab/tools/roi_path_confidence_matrix_v1.php`.
Report: `tredersolo.online/modules/history_fingerprint_lab/storage/rolling_profile_v1/roi_path_confidence_matrix_v1.json`.

Goal: measure the path probability that a causal base signal reaches +10% ROI before a stop corridor from -1% through -10% ROI. Leverage assumption is 5x. The first baseline run uses 7 days of history and a 6h forward horizon. Confirmed 5m OHLC is used; when target and stop are both touched inside the same bar, STOP is counted first (conservative).

Baseline results are deliberately unconditional, not yet a per-signal confidence model. LONG has 1123 base signals: +10 before -3 = 26.536% of all signals; before -5 = 38.023%; before -10 = 51.825%. SHORT has 4026 base signals: +10 before -3 = 23.621%; before -5 = 33.284%; before -10 = 46.249%. Therefore ordinary base-signal PASS is nowhere near 90-99% clean-entry confidence. The next research stage must condition the matrix on features known before entry, calibrate `confidence_10roi_before_stop_pct` temporally out-of-sample, and measure sample size, expectancy, damage, false-confidence and stability across regimes. No Combat/LIVE writes or budget/stop changes are allowed from this baseline report.

## ROI Path Feature Confidence V1 — 2026-09-12

Research-only tool: `tredersolo.online/modules/history_fingerprint_lab/tools/roi_path_feature_confidence_v1.php`; report beside the baseline matrix in `storage/rolling_profile_v1/roi_path_feature_confidence_v1.json`. It uses a chronological 70/30 train/test split and only pre-entry causal features (`ret_1h_pct`, `ret_24h_pct`, `range_5m_pct`, `volume_5m`, `turnover_5m`). Same-bar target+stop remains conservatively STOP-first.

First 7d/6h discovery run: 1119 LONG and 4025 SHORT samples. No 90-99% clean-entry class was found with single-feature quantile rules. The strongest temporally surviving LONG rule was `ret_24h_pct <= -10.2231`, STOP -10: train 65.58% (n=276), test 61.90% (n=42). The strongest SHORT rule was `ret_24h_pct <= -3.9536`, STOP -10: train 55.88% (n=272), test 53.11% (n=241). Therefore confidence must not be fabricated from current PASS or a single feature. Next stage is multifeature discovery/calibration with nested temporal validation, explicitly targeting STOP -3/-4/-5 clean +10 paths and sufficient traffic. LIVE sizing/stops remain unchanged.

## Confidence Calibration Engine V1 — 2026-09-12

Research-only tool: `tredersolo.online/modules/history_fingerprint_lab/tools/confidence_calibration_engine_v1.php`; report: `storage/rolling_profile_v1/confidence_calibration_engine_v1.json`. Definition is now explicit: BOT_CONFIDENCE is the model's probability that the current signal reaches +10 ROI before a selected stop; REAL_CONFIDENCE is the observed frequency for the same confidence bucket in the chronological future holdout; calibration error is BOT minus REAL in percentage points. Thus a confidence number is only trustworthy when repeated future signals assigned that number realize approximately the same frequency.

First 7d/6h calibration baseline used a standardized logistic model on the five causal pre-entry Parser2 features and a 70/30 chronological split. Samples: LONG 1116 (future test 179), SHORT 4020 (future test 1171). For LONG STOP -3, the model produced only 0-40% confidence on the future test; e.g. its 20-30 bucket averaged BOT 25.99% versus REAL 21.79% (error +4.20pp), while 30-40 averaged BOT 32.96% versus REAL 40.98% (error -8.02pp). No 90-100% bucket existed. This validates the user's conceptual distinction between internal confidence and realized confidence, while showing that the current five-feature model is too weak to claim high confidence. Next stage must add the richer causal market/regime/orderbook/profile feature set and perform rolling/nested temporal calibration before any confidence-driven stop or budget authority. Production remains untouched.

## Rich Feature Confidence Audit V1 — 2026-09-12

Research-only audit: `tredersolo.online/modules/history_fingerprint_lab/tools/rich_trade_confidence_audit_v1.php`; report: `storage/rolling_profile_v1/rich_trade_confidence_audit_v1.json`. Existing Combat DEMO trades already contain the desired rich causal vectors (market breadth, BTC/ETH context, turnover/OI/funding/spread, orderbook imbalance, activity state, UTC/session, and 1m/5m/15m geometry). Coverage is substantial per row: LONG 252 closed rich trades with 248 known realized ROI and 157 features present on >=80% of rows; SHORT 233 closed rich trades with 227 known ROI and 166 common features. However the captured rich-trade history spans only about five days, so it is sufficient for pipeline/model prototyping but not for claiming a stable 90-99% calibrated confidence class. The correct next data step is to preserve these rich vectors continuously and/or reconstruct historical causal equivalents from DATASET archives before high-confidence stop/budget authority.

## 180D Confidence Base + LONG Entry Universe — 2026-09-12

Frozen research corpus: `storage/confidence_180d_dataset_v1/`. Window: 2026-02-08T10:40:00Z through 2026-08-07T10:40:00Z. Builder completed 676/676 source symbols, 475 eligible symbols and 48,836,426 causal LONG+SHORT rows. This is a rough OHLCV-derived historical base, not a reconstruction of the full Coin Passport/orderbook/funding state. Labels use target +10 ROI, 5x leverage convention, 6h outcome horizon and conservative STOP-first same-bar handling.

Resolved-only unconditional priors: LONG +10 before -3 = 19.952%, before -10 = 50.423%; SHORT +10 before -3 = 20.833%, before -10 = 49.463%. These are population priors, not per-signal calibrated confidence.

LONG traffic audit tool: `tools/long_180d_entry_universe_v1.php`; report: `storage/confidence_180d_dataset_v1/long_entry_universe_report.json`. Legacy F4 produced 30,722 states. Broad DROP3_GREEN produced 101,852; DROP3_ANY produced 301,871. Wider candidate universes restore traffic but only modestly improve unconditional path quality, so production must not be changed by simply weakening the base threshold. Architecture remains: broad causal candidate universe -> learned immutable SKIP/ALLOW profile -> Combat applies profile to current state.

## LONG 180D Transition-Horizon Audit — 2026-09-12

Tool: `tools/long_180d_transition_24h_v1.php`; report: `storage/confidence_180d_dataset_v1/long_transition_24h_report.json`. The audit tests the hypothesis that useful LONG information is a state transition rather than a static threshold. It compares causal preceding-state deltas at 1/2/3/4/6/12/24h on the broad `ret_1h_pct <= -3` universe. It processed 24,418,213 LONG rows and 301,871 candidate states. This is discovery/binned analysis only; bins are not deployable formulas and no production writes occur.

Initial result does **not** prove that 24h is the special transition window. The strongest broad single transition bucket in this pass was a 2h delta of `ret_24h_pct` at STOP -10: 55.010% target-first over 31,738 resolved states. Static `ret_24h_pct` level buckets were about 54.8% and nearly unchanged from 1h through 24h; a 24h delta bucket reached 54.787% over 14,007 resolved states. Therefore the current evidence favors testing multifeature transition sequences and temporal holdout, not hard-coding a 24h rule. The 24h hypothesis remains OPEN, not VERIFIED.

Zoom follow-up: `tools/long_180d_transition_zoom_v1.php`; report: `storage/confidence_180d_dataset_v1/long_transition_zoom_report.json`. It tested 0.5/1/1.5/2/2.5/3/4h on the same 24,418,213 LONG rows / 301,871 DROP3 candidates. The strongest STOP -10 discovery bucket was exactly 2h: change in `position_in_1h_range`, 56.704% +10-before--10 over 4,527 resolved states. Nearby bests were 1h 55.860%, 2.5h 55.854%, 3h 55.818%, 4h 55.545%; 0.5h was 54.007%. For tight STOP -3, 2h also led this grid at 27.848% (4,776 resolved), but the edge is small. This strengthens the ~2h transition hypothesis, but does not yet prove a deployable rule because the bins were discovered on the same corpus.

Chronological holdout follow-up: `tools/long_180d_transition_holdout_chunked_v1.php`; report: `storage/confidence_180d_dataset_v1/long_transition_holdout_report.json`. It completed all 475 symbols / 24,418,213 LONG rows / 301,871 DROP3 candidates using per-symbol 60% TRAIN / 20% CAL / 20% untouched TEST. Rules were discovered on TRAIN, horizon chosen on CAL, TEST not used for selection. The earlier exact-2h discovery peak did **not** survive as a unique winner. For STOP -3, CAL selected 3h `volume_ratio_1h` delta (CAL 29.165%, n=10,852), which fell to TEST 24.270% (n=3,906). The 2h STOP -3 candidate tested at 23.156% (n=6,141). For STOP -10, CAL selected 2.5h `ret_24h_pct` delta (CAL 59.819%, n=4,644), which fell to TEST 50.306% (n=1,636); the 2h candidate tested at 50.542% (n=5,718), while a 1h small-support candidate tested 55.983% (n=234). Conclusion: the broad useful transition region remains roughly 1-3h, but a fixed 2h rule is NOT VERIFIED and single-feature discovery materially overfits across time. 24h remains useful as context (`ret_24h_pct`) but not supported as preferred profile lifetime.

Nonlinear rule follow-up: `tools/long_180d_skip_allow_tree_v1.php`; report: `storage/confidence_180d_dataset_v1/long_skip_allow_tree_report.json`. Fixed pre-outcome coarse cells combine current ret1h, current ret24h context, 2h position delta and 2h volume delta; per-symbol chronological 60/20/20, TRAIN support >=300, TRAIN shortlist, CAL ranking, untouched TEST reporting. Completed 24,418,213 LONG rows / 301,754 candidates / 399 cells. Individual ALLOW cells often showed severe CAL->TEST decay, so high CAL values must not be trusted. However some TEST separation exists: STOP -10 cell `3|2|3|0` tested 57.025% (n=242) and `3|2|2|0` 57.851% (n=121), while stable-looking SKIP examples include `0|0|0|4` TEST 38.658% (n=313), `2|3|1|1` 40.602% (n=133), and `0|3|0|4` 43.902% (n=328). For STOP -3, SKIP cell `2|3|1|1` fell to 13.235% (n=136), `0|0|0|4` 14.377% (n=313), while ALLOW candidates did not show convincing future uplift. These are research cells, not production formulas; support is still small and cell-level multiple testing is material.

Rolling-fold SKIP exploratory pass: `tools/long_180d_skip_group_folds_v1.php`; report: `storage/confidence_180d_dataset_v1/long_skip_group_folds_report.json`. Completed all 475 symbols / 24,418,213 LONG rows / 301,754 candidates using six per-symbol chronological folds. IMPORTANT CORRECTION: this report is NOT a clean forward validation. Its rule filter/ranking explicitly consults folds 4-6 (`future support`, `future_folds_below_dev`, `future_pct`) before reporting those same folds. Therefore the previously reported top-k separation is selection-contaminated and must be treated as exploratory only, not unseen evidence.

Strict frozen holdout follow-up: `tools/long_180d_skip_frozen_holdout_v1.php`; report: `storage/confidence_180d_dataset_v1/long_skip_frozen_holdout_report.json`. Rules are selected and ranked using folds 1-3 only (support >=300; lowest pooled development target-first rate, then support), frozen, and only then evaluated on untouched folds 4-6. Result is materially weaker and mixed. For the user's tight -3 entry-quality boundary, top-10 SKIP is actually worse than baseline in fold 4 (24.632% vs 23.923%), but lower in folds 5/6 (20.674% vs 24.974%; 21.419% vs 22.328%); kept-population quality is essentially flat in fold 4 and only modestly higher later. For the wider -10 outcome, top-10 is also worse in fold 4 (53.758% vs 52.313%) and better in folds 5/6 (45.354% vs 53.866%; 47.030% vs 49.227%). Top-3 is more consistent for -10: skipped outcomes are below baseline in all three untouched folds (45.170% / 40.897% / 42.626% versus 52.313% / 53.866% / 49.227%), but traffic removed is only 0.556% / 1.356% / 1.809%. This supports only a narrow weak SKIP signal, not a broad stable filter.

Status: grouped LONG SKIP remains RESEARCH-ONLY / PARTIALLY SUPPORTED. The old claim that grouped behavior survived three unseen folds is withdrawn. No production change is justified. Next research decision: test the frozen top-3 cells for symbol concentration, avoided realized damage/ROI expectancy, and stability on an additional later untouched time slice or true rolling walk-forward before considering any deployable rule.

## 180D Missing Variable Evidence V1 — 2026-09-13

Research-only tool: `tools/missing_variable_180d_discovery_v1.php`; report: `storage/confidence_180d_dataset_v1/missing_variable_180d_v1/report.json`; detailed interpretation: `docs/VARIABLE_EVIDENCE_180D.md`. The question is whether causal variables absent from or unresolved in Passport add stable information beyond the seven frozen OHLCV seed features.

The completed two-pass run scanned all 475 symbols and 24,418,213 paired `symbol x timestamp` rows. Reversal universes were 301,871 LONG states and 368,101 SHORT states. Candidate formulas were frozen before this runner read labels; TRAIN 60% selected categories, CAL 20% plus TEST_A/B/C inside the final 20% evaluated them. Market aggregates exclude the current coin and incremental effects are conditioned on all seven seed features. The holdout is internal, not globally unseen, because this corpus has supported related research before.

Result: 38 candidate encodings = 6 ACTIVE_180D, 30 PASSIVE_180D and 2 explicit DATA_MISSING. The six active encodings reduce to two independent blocks rather than six Passport fields: common `market_context_1h` and local `price_volume_confirmation_15m`. For LONG/-10, broad aligned decline is a SCORE_UP state while coin weakness against an opposed/rising market is an ENTRY_BLOCK state. This corrects the earlier untested assumption that every strongly down market should freeze LONG. For SHORT/-3, 15m wave reversal together with expanding volume is a narrow ENTRY_BLOCK state. No symmetric action is proven outside those scopes.

No Passport, Combat, DEMO, LIVE or Bybit state changed. ACTIVE_180D is only eligibility for a later explicitly designed SHADOW consumer. Missing BTC benchmark, derivatives, orderbook, news and lifecycle histories remain DATA_MISSING for causal 180D evaluation. A later untouched slice/rolling walk-forward, deduplication, and explicit -8 stop validation are required before integration.

## Documentation rule

New experiments must be added here when created with: question, tool/report path, causal basis, safety boundary, metrics, result, caveat and next decision. Superseded planning/install notes should not be treated as current policy.
