Skip to content

Commit fb0da85

Browse files
committed
Remove label-optimizing tuning; fix silent out-of-window bug; raise coverage
Återgår till ursprungsfilosofin (principer styr, labels = referens) och åtgärdar fynd från granskningen av feature/fibengine-next. 1. Ta bort Optuna/optimering mot facit - Objektivet maximerade agreement/fib_err mot manuella labels — bröt mot README/PREMORTEM och överanpassade 13-15 labels (best agreement ~0.025, principvidriga negativa vikter, t.ex. scale_confluence=-1.75). - Raderar src/fibengine/tuning/; arkiverar artefakter under archive/ (optuna_best/trials, variant-yaml) i st f hård delete (REPO_POLICY §10). - Tar bort optuna ur deps + lockfile; uppdaterar README/TRACKS/FIB_BACKTEST_PLAN/ config-docs; lägger rollback-reflektion. 2. Laga tyst out-of-window-bugg i evaluation/metrics.py - _bar_of_timestamp snäppte tyst label-tider utanför candle-fönstret till kant-baren (skräpmått för 1M/1w/1d med limit=500). Returnerar nu (idx, in_window); evaluate flaggar out_of_window; experiment.py och pivot_recall.py exkluderar sådana labels ur aggregat + loggar varning. 3. Höj testtäckning + coverage-gate - Nya tester: core/features (feature-värden), labeling/batch (manifest/hash), experiment end-to-end + out-of-window-exkludering, metrics out-of-window. - pytest-cov med --cov-fail-under=60 (nuvarande 76%); GUI-tool.py omittad. - 53 -> 67 tester gröna. https://claude.ai/code/session_016XYvXEvJupEHmkQsonFNK3
1 parent e8dcc7e commit fb0da85

24 files changed

Lines changed: 554 additions & 520 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ jobs:
2626
- name: Ruff format
2727
run: uv run ruff format --check src tests
2828

29-
- name: Pytest
29+
- name: Pytest (with coverage gate)
3030
run: uv run pytest -q

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,24 @@ uv run python -m fibengine.labeling.tool # klicka swing high/low -> facit
3434
uv run python -m fibengine.labeling.batch # lättviktig label-checkpoint (manifest/hashar)
3535
uv run python -m fibengine.experiment # kör pipeline + logga resultat
3636
uv run python -m fibengine.backtest.runner # kausalt walk-forward: urvals-stabilitet
37-
uv run python -m fibengine.tuning.optuna_runner --trials 30 # optimering av scoring.weights
3837
uv run pytest # kör tester
3938
uv run pre-commit install # git hooks (en gång)
4039
uv run pre-commit run --all-files # lint + format + test före push
4140
```
4241

4342
Kvalitetsgate: se [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) och CI i `.github/workflows/ci.yml`.
4443

45-
Använd `--config` för varianter utan att ändra baseline:
44+
Använd `--config` för att köra en variant-settings utan att ändra baseline:
4645

4746
```bash
48-
uv run python -m fibengine.experiment --config config/variants/optuna_2026-05-28_trial31.yaml
49-
uv run python -m fibengine.backtest.runner --config config/variants/optuna_2026-05-28_trial31.yaml
50-
uv run python -m fibengine.tuning.optuna_runner --config config/settings.yaml --trials 30
47+
uv run python -m fibengine.experiment --config config/variants/<variant>.yaml
5148
```
5249

50+
> Not: automatisk vikt-optimering (Optuna) togs medvetet bort — den optimerade mot
51+
> de manuella labelsen, vilket bryter mot filosofin (labels = referens, inte domare)
52+
> och överanpassade ett för litet labelset. Se `premortem/reflections/`. Vikter
53+
> sätts på principgrund; arkiverade Optuna-artefakter finns under `archive/`.
54+
5355
## Pipeline (Lager A)
5456

5557
```
File renamed without changes.
File renamed without changes.
File renamed without changes.

config/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Konfiguration för körningar.
44

55
- `settings.yaml` styr data, pivots, scoring, evaluation, sizing och backtest.
6-
- `variants/` innehåller alternativa settings-filer (t.ex. Optuna-förslag).
6+
- `variants/` innehåller alternativa settings-filer (manuellt satta på principgrund).
77
- `variants/INDEX.md` indexerar alla varianter.
88
- Laddas via `fibengine.core.config`.
99

config/variants/INDEX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
| file | source | purpose | notes |
44
|---|---|---|---|
5-
| `optuna_2026-05-28_trial31.yaml` | `optuna_20260528T135159Z` trial 31 | Kandidat från Optuna-tuning av `scoring.weights` | Baseline i `config/settings.yaml` är oförändrad |
5+
| _(inga aktiva varianter)_ | | | Optuna-kandidaten drogs tillbaka (optimerade mot labels) och arkiverades under `archive/config_variants/`. |

config/variants/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# config/variants
22

3-
Alternativa settings-profiler för experiment och tuning.
3+
Alternativa settings-profiler för experiment (manuellt satta på principgrund).
44

55
## Princip
66

77
- `config/settings.yaml` är baseline.
88
- Nya kandidater sparas här som separata filer.
99
- Filnamn ska vara beskrivande och gärna datumsatta.
10+
- Vikter sätts på principgrund — inte genom optimering mot labels.
1011

1112
## Namnexempel
1213

13-
- `optuna_2026-05-28_trial31.yaml`
1414
- `manual_2026-05-29_round2.yaml`
1515

1616
## Index

docs/FIB_BACKTEST_PLAN.md

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Premortem: record surprises in `premortem/reflections/` (short, not essays).
2424
| 3 Manual label recall | Validate | **in progress** | `experiments/results/pivot_recall.jsonl` |
2525
| 4 Layer B trade simulation | Validate | **smoke done** | `experiments/results/trade_*.jsonl` |
2626
| 5 Iteration discipline | All | **active** | Policy + reflections |
27-
| 6 Optuna / variants | Research | **started** | `experiments/results/optuna_*.json` |
27+
| 6 ~~Optuna / variants~~ | | **withdrawn** | Archived under `archive/` (optimerade mot labels) |
2828
| 7 Promotion gate | Promotion | **next** | Merge into `config/settings.yaml` |
2929

3030
---
@@ -116,23 +116,18 @@ uv run python -m fibengine.backtest.trade_matrix
116116

117117
---
118118

119-
## Phase 6 — Optuna / config variants (Research)
119+
## Phase 6 — ~~Optuna / config variants~~ (WITHDRAWN)
120120

121-
**Status:** started — 50 trials; best trial 31 → `config/variants/optuna_2026-05-28_trial31.yaml` (`premortem/reflections/2026-05-28-optuna-start.md`).
121+
**Status:** **withdrawn.** Automatisk vikt-optimering togs bort. Objektivet
122+
maximerade `agreement`/`fib_err` mot de manuella labelsen — vilket bryter mot
123+
filosofin (labels = referens, inte domare) och överanpassade ett för litet
124+
labelset (best agreement ≈ 0.025, principvidriga negativa vikter). Se
125+
`premortem/reflections/2026-05-28-optuna-rollback.md`. Artefakter arkiverade
126+
under `archive/experiments/optuna/` och `archive/config_variants/`.
122127

123-
**Goal:** Explore `scoring.weights` against labels without touching baseline.
124-
125-
**Run:**
126-
127-
```bash
128-
uv run python -m fibengine.tuning.optuna_runner --trials 50
129-
```
130-
131-
Uses `config/settings.yaml` by default; pass `--config` only to tune from another YAML base.
132-
133-
**Output:** `experiments/results/optuna_trials.jsonl`, `optuna_best.json`; runs under `experiments/runs/optuna/{YYYY-MM-DD}/optuna_*/`.
134-
135-
**Next (Research):** more trials or broader label/timeframe filter only in variants — not in `settings.yaml`.
128+
**Ersättning:** vikter sätts manuellt på principgrund och sparas som
129+
`config/variants/<beskrivning>.yaml`, validerade enligt Phase 7 mot stabilitet/
130+
recall — inte mot en label-agreement-objektivfunktion.
136131

137132
---
138133

@@ -150,7 +145,9 @@ Uses `config/settings.yaml` by default; pass `--config` only to tune from anothe
150145
4. Short reflection: what changed, why promoted, what was rejected.
151146
5. Update `config/settings.yaml` only after the above; archive variant rationale in `config/variants/INDEX.md`.
152147

153-
**Do not promote** from Optuna objective alone — Validate first, then Promotion.
148+
**Do not promote** from a label-agreement objective alone — Validate against
149+
stability/recall first, then Promotion. (Automatic optimization against labels
150+
is disallowed; see Phase 6.)
154151

155152
---
156153

@@ -163,7 +160,6 @@ Uses `config/settings.yaml` by default; pass `--config` only to tune from anothe
163160
| Stability matrix | `fibengine.backtest.matrix` |
164161
| Pivot recall | `fibengine.evaluation.pivot_recall` |
165162
| Trade backtest / matrix | `fibengine.backtest.trade`, `.trade_matrix` |
166-
| Optuna tuning | `fibengine.tuning.optuna_runner` |
167163
| Label UI | `fibengine.labeling.tool` |
168164

169-
All ledgers: `experiments/results/*.jsonl`. Run artifacts: `experiments/runs/{experiment|stability|optuna}/{date}/{run_id}/`.
165+
All ledgers: `experiments/results/*.jsonl`. Run artifacts: `experiments/runs/{experiment|stability}/{date}/{run_id}/`.

docs/TRACKS.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ Syftet är att separera discovery från verifiering och från trusted behavior.
1616
- fri experimentation
1717
- snabb iteration
1818
- AI/reflection/premortem (obligatoriskt enligt policy)
19-
- Optuna/tuning och andra utforskande metoder
19+
- utforskande metoder
20+
21+
> Notera: automatisk vikt-optimering *mot labels* (t.ex. Optuna) är **inte** tillåten
22+
> — labels är referens, inte domare. Vikter sätts på principgrund. Se
23+
> `premortem/reflections/` för varför detta drogs tillbaka.
2024
2125
**Inte krav:** full correctness eller production-grade stabilitet.
2226

2327
**Primära ytor:**
2428
- `config/variants/*.yaml`
25-
- `src/fibengine/tuning/`
26-
- `experiments/runs/optuna/`
2729
- `experiments/label_review/`
2830
- `premortem/reflections/`
2931

0 commit comments

Comments
 (0)