[CL-GRID-LEVERAGE-CAP-UNIFY] Grid leverage clamp к глобальному cap (флаг, default OFF) #315

Merged
andrei merged 2 commits from feature/claude-grid-leverage-cap-unify into master 2026-06-10 18:32:30 +00:00
Owner

Что сделано

  • Флаг ARNOLD_GRID_RESPECT_LEVERAGE_CAP (default OFF): при включении grid LEVERAGE/LEVERAGE_BASELINE клампятся к ARNOLD_MAX_LEVERAGE_CAP на module load.
  • Кламп только при ЯВНО заданном cap-env (неявный дефолт executor'а 3 не роняет плечо грида молча); невалидный cap / отсутствие env → warning + no-op; preset safe_5x клампится тоже; CL-444 immutable-baseline сохранён.

Зачем

Audit follow-up: единственное оставшееся расхождение leverage-контуров — grid жил вне глобального cap'а. Изменение эффективного плеча = money-решение, поэтому код в прод, активация за CEO.

План тестирования

  • 6 новых тестов (importlib.reload-паттерн как в test_grid_config_fees_per_mode): off-untouched, on-clamp 8→5, cap>baseline noop, no-env noop, preset 5→4, invalid noop. Фикстура восстанавливает чистый config для соседних тестов.
  • Регрессия -k "grid and (config or leverage)" — 33 passed. ruff clean.
  • После merge+deploy поведение прода НЕ меняется. Включение: ARNOLD_GRID_RESPECT_LEVERAGE_CAP=1 (cap уже задан в env) + рестарт; ожидаемый лог Grid leverage clamped X -> Y.

Где могу ошибаться

  • Кламп на module load: смена env требует рестарта демонов (как и все grid-конфиги — поведение консистентно).
  • Если оператор включит флаг без заданного cap — получит warning и no-op, не сюрприз-кламп к 3 (намеренно, покрыто тестом).
## Что сделано - Флаг `ARNOLD_GRID_RESPECT_LEVERAGE_CAP` (**default OFF**): при включении grid `LEVERAGE`/`LEVERAGE_BASELINE` клампятся к `ARNOLD_MAX_LEVERAGE_CAP` на module load. - Кламп только при ЯВНО заданном cap-env (неявный дефолт executor'а 3 не роняет плечо грида молча); невалидный cap / отсутствие env → warning + no-op; preset `safe_5x` клампится тоже; CL-444 immutable-baseline сохранён. ## Зачем Audit follow-up: единственное оставшееся расхождение leverage-контуров — grid жил вне глобального cap'а. Изменение эффективного плеча = money-решение, поэтому код в прод, активация за CEO. ## План тестирования - 6 новых тестов (importlib.reload-паттерн как в test_grid_config_fees_per_mode): off-untouched, on-clamp 8→5, cap>baseline noop, no-env noop, preset 5→4, invalid noop. Фикстура восстанавливает чистый config для соседних тестов. - Регрессия `-k "grid and (config or leverage)"` — 33 passed. ruff clean. - После merge+deploy поведение прода НЕ меняется. Включение: `ARNOLD_GRID_RESPECT_LEVERAGE_CAP=1` (cap уже задан в env) + рестарт; ожидаемый лог `Grid leverage clamped X -> Y`. ## Где могу ошибаться - Кламп на module load: смена env требует рестарта демонов (как и все grid-конфиги — поведение консистентно). - Если оператор включит флаг без заданного cap — получит warning и no-op, не сюрприз-кламп к 3 (намеренно, покрыто тестом).
[CL-GRID-LEVERAGE-CAP-UNIFY] grid leverage clamp к ARNOLD_MAX_LEVERAGE_CAP (флаг, default OFF)
All checks were successful
Arnold Forgejo CI / secret-scan (pull_request) Successful in 5s
Arnold Forgejo CI / frontend-audit (pull_request) Successful in 35s
Forgejo Smoke Test / Smoke (pull_request) Successful in 3s
Arnold Forgejo CI / backend-tests (pull_request) Successful in 4m58s
62cbfda2b7
Audit follow-up: grid LEVERAGE/GRID_LEVERAGE_PRESET не учитывал глобальный
ARNOLD_MAX_LEVERAGE_CAP (клампил только futures_executor). Унификация меняет
эффективное плечо прода - поэтому строго за флагом
ARNOLD_GRID_RESPECT_LEVERAGE_CAP (default OFF), включение = решение CEO.

Кламп применяется ТОЛЬКО при явно заданном ARNOLD_MAX_LEVERAGE_CAP: неявный
дефолт executor'а (3) не должен молча уронить плечо грида. Невалидный cap /
отсутствие env -> warning + no-op. Preset safe_5x клампится тоже
(CL-444 immutable-baseline сохранён: baseline и LEVERAGE меняются вместе
на module load).

Тесты: 6 новых (off-untouched / on-clamp / cap-above-noop / no-env-noop /
preset-clamp / invalid-noop), config+leverage область 33 passed, ruff clean.
[CL-GRID-LEVERAGE-CAP-UNIFY] docs: секция Grid risk flags (оба opt-in флага)
All checks were successful
Arnold Forgejo CI / frontend-audit (pull_request) Successful in 12s
Arnold Forgejo CI / secret-scan (pull_request) Successful in 3s
Forgejo Smoke Test / Smoke (pull_request) Successful in 1s
Arnold Forgejo CI / backend-tests (pull_request) Successful in 4m2s
be53485a34
andrei merged commit d08c085011 into master 2026-06-10 18:32:30 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/arnold-trader-app!315
No description provided.