All actor-side regulators are dimensionless — they scale with signal magnitude and do not require re-tuning when the reward amplitude changes.
Regulator Mechanism
───────────────────── ─────────────────────────────────────────────────
Anti-saturation pen ∝ |r| × relu(|a| − 0.85)²
— pressure proportional to stake size
Inaction penalises near-zero actions across the batch
Diversity penalises low cross-symbol std of a_gen
— each symbol must get a distinct decision
Direction imbalance penalises systematic all-long / all-short bias
Portfolio budget quadratic penalty when Σ|a| > 2.0Env-side shaping. Applied in env.step() and stored in the buffer as part of the reward:
drawdown penalty activates when portfolio equity drops below peak efficiency bonus rewards PnL per unit of turnover
These coefficients are held fixed — tying them to reward magnitude would discount risk penalties during quiet markets, the opposite of the intended behaviour.