# MLP Grouped-Input Experiment — BTC 6H

## Decision

Do not promote the grouped-input architecture. It created substantially more
trades but was decisively weaker than the promoted dense MLP on in-sample
Calmar, return, and drawdown. The candidates' encouraging average WFO values
do not override that degradation because their worst valid folds are weak.

## Architecture

This is an opt-in alternative to the dense 55→16→8→1 MLP. Each of the sixteen
first-layer units was hard-routed to exactly one signal family:

| Family | First-layer units | Raw features |
|---|---:|---:|
| Local technical | 3 | 13 |
| On-chain | 3 | 9 |
| Macro | 3 | 11 |
| Candlesticks | 1 | 4 |
| RSID structure | 3 | 10 |
| Market flow | 2 | 5 |
| Cross-asset | 1 | 1 |

The second and output layers remain dense. This allows them to learn
cross-family interactions while preventing unrelated raw features from mixing
in the first transformation. CMA-ES omits all blocked parameters rather than
sampling and then zeroing them: 731 of 880 first-layer edges are permanently
absent.

## Method

- BTC 6H, current 55-feature CSV, same 16→8 downstream shape.
- Three fresh seeds: 9090, 9191, 9292.
- Same robust Phase-2 objective, training period, folds, and simulator as the
  incumbent.
- Candidates replayed using each artifact's Phase-2 recommended thresholds.
- No winner CSV, Pine preset, or parameter file was promoted or altered.

## Results

| Candidate | IS Calmar | IS P&L | Max DD | Trades | WFO mean / min | Valid folds |
|---|---:|---:|---:|---:|---:|---:|
| Promoted dense baseline | 0.483 | 13,839.5% | -33.46% | 56 | 0.654 / 0.609 | 2 |
| Grouped seed 9090 | 0.087 | 482.4% | -63.44% | 138 | 1.144 / 0.098 | 5 |
| Grouped seed 9191 | 0.128 | 629.9% | -48.61% | 136 | 0.967 / 0.002 | 5 |
| Grouped seed 9292 | 0.099 | 901.9% | -73.48% | 178 | 1.401 / 0.082 | 5 |

The grouped models trade 2.5–3.2× as often, which produces broader fold
coverage, but their low WFO minima and sharply worse IS drawdowns point to a
less stable policy. The available export has no completed OOS trades, so this
is a rejection screen rather than a positive OOS evaluation.

## Reproduction

```bash
python tools/run_mlp_train.py \
  --assets COINBASE_BTCUSD --tfs 6H --seeds 3 --seed-start 9090 \
  --tag grouped_v1 --input-structure grouped \
  --fold-objective robust --l2 0.01 --es-workers 1 --parallel-jobs 1
```

Artifacts are deliberately tagged `grouped_v1`, retaining clear separation
from promoted `bb50` files.
