feat(aura-research, aura-runner): RiskRegime::Fixed — the fixed stop is campaign-reachable

Harvest sweep, batch 3 of 6 (second half).

The third externally-tagged variant ('{"fixed":{"distance":..}}',
additive — stored Vol/VolTf documents keep their bytes): doc-tier
validation mirrors FixedStop::new's distance>0 assert (NaN refused)
so the assert is unreachable from a document; stop_rule_for_regime
binds the shipped FixedStop composite; run_blueprint_member stamps
stop_distance beside the vol knobs' precedent and
stop_rule_from_params re-derives Fixed from it (stamps are mutually
exclusive; the pre-#233 no-knob fallback is unchanged). BadRegime
prose widened to name the distance rule. C10's risk-axis paragraph
updates from 'additive when needed' to shipped; glossary gains the
fixed variant.

closes #338
This commit is contained in:
2026-07-26 12:10:43 +02:00
parent c39f5e4762
commit 2b692a71e3
7 changed files with 212 additions and 35 deletions
+9 -7
View File
@@ -245,13 +245,15 @@ A node that converts a finer stream to a coarser bar stream, emitting a complete
**Avoid:** risk section
One entry of a campaign document's structural risk axis (`risk`): a
serializable protective-stop regime (variants `vol{length,k}` — per-cycle —
and `vol_tf{period_minutes,length,k}` — per completed time bucket) the matrix
runs every cell under, so cells differ by execution discipline, never by
signal. Absent or empty = one implicit default regime; the regime's stop
defines the risk unit R — in `vol{length,k}` (stop = k·√EMA(Δ², length) over
m1 cycles) `length` only smooths the vol estimator while `k` scales the stop
distance, so the stop's timescale stays one cycle (`vol_tf` sets the stop's
timescale via `period_minutes`).
`vol_tf{period_minutes,length,k}` — per completed time bucket — and
`fixed{distance}` — a constant price-unit distance, binding the shipped
`FixedStop` composite) the matrix runs every cell under, so cells differ by
execution discipline, never by signal. Absent or empty = one implicit default
regime; the regime's stop defines the risk unit R — in `vol{length,k}` (stop =
k·√EMA(Δ², length) over m1 cycles) `length` only smooths the vol estimator
while `k` scales the stop distance, so the stop's timescale stays one cycle
(`vol_tf` sets the stop's timescale via `period_minutes`; `fixed` has no
timescale — the distance never adapts).
### run
**Avoid:** —