Warrior_EA/Expert/AIBase
Repository files (latest commit first)
Filename Latest commit message Latest commit date
AnimateDread afe1038d11 fix(topology): stop a training-alone size becoming permanent, and stop the keep-screen latching underpowered
1. THE POOL FIX WAS LANDING ON A TOPOLOGY THAT COULD NOT SEE IT.

   ComputeFirstLayerWidth budgets against EstimatedInSampleBars, which counts
   this chart's own bars PLUS the training pool. On a COLD fleet start every
   chart derives and pins its topology BEFORE any chart has published a pool
   file - measured on the 18:13 start, model creation at 18:13:21 against a
   first publish at 18:13:48. All six sized as if training alone, wrote that
   into .cfg, and adopted it back on every later start even with the pool full.
   SP500 ran a first layer floored to 16 while adopting 30229 peer rows.

   Adopt-don't-compare exists to protect weights shaped by those sizes. It was
   also running for a model with NO .nnw, where there is nothing to protect and
   the .cfg is just a record of one unlucky moment. The four derived sizes are
   now re-measured when no weights exist.

   Safe on all three counts that matter: free (nothing to discard), cannot loop
   (once weights exist the .cfg is authoritative again), and cannot fragment the
   pool - the derived width is NOT in BuildModelFingerprint, which keys only on
   the FEATURE layout. Verified: field 2 of the fingerprint is
   LEGACY_HISTORY_BARS_SLOT, not the first-layer width.

   TO TAKE EFFECT the weights must be wiped while the TrainPool is KEPT - the
   census has to be non-empty at derivation time. A full wipe empties the pool
   and reproduces the original condition exactly.

2. THE KEEP-SCREEN LATCHED ON AN UNDERPOWERED SAMPLE.

   MI_MIN_SAMPLES is a floor for "can this be computed", and it was being used
   as the bar for "is this answer final". The screen fired on the first era
   clearing 200 rows and latched, measuring at 202-773 samples where a warm
   chart gives ~2065. Columns kept then tracked SAMPLE SIZE rather than
   information - EURUSD kept 0 of 49 at n=202, SP500 kept 15 at n=773, and the
   ordering across all six charts was very nearly monotone in n.

   A thin sample is still measured and printed, but it no longer closes the
   question: below MI_GOOD_SAMPLE_FRACTION of the target the result is labelled
   underpowered and a later era supersedes it, bounded by the same attempt
   budget. An underpowered screen that latches is worse than one that waits,
   because it looks like a result.

Build tag -> fleet-pool-v2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 19:27:48 -04:00
..
AutoTune.mqh diag(mi): name which BuildMiSample exit abandoned the sample 2026-08-26 15:57:41 -04:00
Features.mqh feat(target): swing-pivot direction label, and drop the ADZigZag name 2026-08-24 18:26:25 -04:00
FeatureScreen.mqh fix(topology): stop a training-alone size becoming permanent, and stop the keep-screen latching underpowered 2026-08-26 19:27:48 -04:00
Inference.mqh refactor(meta): remove meta-labeling entirely - RETRAIN-NEUTRAL 2026-08-25 09:44:52 -04:00
Labels.mqh feat(label): pivot-EVENT target replaces direction-to-next-pivot 2026-08-26 00:16:16 -04:00
Lifecycle.mqh feat(pool,mi): one feature layout fleet-wide, and the keep-screen stops self-disabling on a cold start 2026-08-26 17:41:14 -04:00
Topology.mqh fix(topology): stop a training-alone size becoming permanent, and stop the keep-screen latching underpowered 2026-08-26 19:27:48 -04:00
Training.mqh fix(vote): follow the derived rung until a checkpoint exists, pin thereafter 2026-08-26 16:36:20 -04:00