PIX-14540: keep trend-aligned local stop legs #610
Closed
andrei
wants to merge 1 commit from
agent/devops/pix-14540-local-stop-trend-aligned into master
pull from: agent/devops/pix-14540-local-stop-trend-aligned
merge into: europa-tech-srl:master
europa-tech-srl:master
europa-tech-srl:fix/grid-normal-local-stop-cap-20260805
europa-tech-srl:fix/frontend-audit-20260805
europa-tech-srl:fix/frontend-live-advisories-20260805
europa-tech-srl:agent/devops/pix-14540-technical-bucket-cleanup-20260803
europa-tech-srl:agent/devops/pix-14540-delete-stale-technical-stats
europa-tech-srl:agent/devops/pix-14540-technical-only-cleanup
europa-tech-srl:agent/devops/pix-14540-drop-technical-strategy-stats
europa-tech-srl:agent/devops/pix-14540-owner-first-strategy-stats-20260803
europa-tech-srl:fix/grid-trend-aligned-local-stop-cap-20260803
europa-tech-srl:fix/grid-local-stop-observed-transition-20260803
europa-tech-srl:agent/devops/pix-14540-stale-strategy-stats-20260803
europa-tech-srl:agent/devops/pix-14540-grid-performance-identity
europa-tech-srl:fix/grid-local-stop-directional-rearm-20260802T220147Z
europa-tech-srl:agent/devops/pix-14540-bounded-local-stop
europa-tech-srl:agent/devops/pix-14540-grid-weak-side-fee-floor
europa-tech-srl:agent/devops/pix-14540-grid-range-override-fee-floor
europa-tech-srl:fix/radar-max-z-quality
europa-tech-srl:agent/devops/pix-14540-performance-guard-created-at
europa-tech-srl:agent/devops/pix-14540-grid-fee-floor-calibration
europa-tech-srl:agent/devops/pix-14540-repair-env-bootstrap
europa-tech-srl:agent/devops/pix-15357-aggregate-fee-parity
europa-tech-srl:agent/devops/pix-14540-owner-lineage-v2
europa-tech-srl:agent/devops/pix-14540-owner-lineage
europa-tech-srl:fix/stale-expanded-position-ghost
europa-tech-srl:agent/cto/pix-15285-safe-liveness-v2
europa-tech-srl:agent/devops/pix-15282-owner-attribution
europa-tech-srl:agent/cto/pix-15285-rootcause-safe-liveness
europa-tech-srl:agent/cto/pix-15285-grid-liveness-review
europa-tech-srl:agent/cto/pix-15285-grid-liveness
europa-tech-srl:pix-14540-closed-pnl-attribution-repair
europa-tech-srl:pix-14540-closed-pnl-owner-lineage
europa-tech-srl:fix-db-bybit-closed-pnl-lineage-parity-20260801
europa-tech-srl:agent/devops/pix-14540-aggregate-fee-netting-fix
europa-tech-srl:agent/devops/pix-14540-stale-disappeared-close-fix
europa-tech-srl:fix/pix-14540-owner-first-history
europa-tech-srl:agent/devops/pix-14540-db-bybit-closed-pnl-parity
europa-tech-srl:agent/devops/pix-14540-competing-fee-parity
europa-tech-srl:agent/devops/pix-14540-exact-close-fee-v2
europa-tech-srl:agent/devops/pix-14540-exact-close-fee
europa-tech-srl:fix/grid-rebaseline-epoch-save
europa-tech-srl:fix/pix-15200-prod-parity-audit
europa-tech-srl:fix/pix-15198-reverse-parity
europa-tech-srl:agent/devops/pix-15057-lineage
europa-tech-srl:agent/devops/pix-15057-master-lineage
europa-tech-srl:fix/bybit-classification-nplus1-20260801
europa-tech-srl:fix/grid-test-close-awaitable-20260801
europa-tech-srl:fix/kairos-stale-pending-recovery-20260801
europa-tech-srl:pix-15165-grid-drawdown-rebaseline-clean
europa-tech-srl:fix/pix-15057-live-reverse-parity-classification
europa-tech-srl:fix/pix-15074-bybit-pagination-fail-closed
europa-tech-srl:fix/pix-15059-reverse-parity-lineage-v2
europa-tech-srl:fix/pix-15059-reverse-parity-lineage
europa-tech-srl:agent/devops/pix-15047-arnold-lineage
europa-tech-srl:fix/grid-local-stop-safe-skip-corrected-20260725
europa-tech-srl:fix/local-stop-safe-skip-mask-c1d35cb6
europa-tech-srl:fix/grid-local-stop-safe-skip-pix14540
europa-tech-srl:fix/grid-avax-tail-loss-pix14540
europa-tech-srl:fix/grid-local-stop-safe-skip-20260725
europa-tech-srl:fix/grid-expansion-cancel-reason-20260725
europa-tech-srl:fix/grid-failed-budget-reallocation-20260725
europa-tech-srl:fix/grid-regime-gate-continuous-trading
europa-tech-srl:agent/devops/pix-14540-brace-expansion-audit
europa-tech-srl:agent/devops/pix-14540-grid-fee-precision
europa-tech-srl:fix/radar-definitive-reject-capacity
europa-tech-srl:agent/devops/pix-14940
europa-tech-srl:agent/devops/pix-14937
europa-tech-srl:fix/pix-14915-radar-profit-attribution-current
europa-tech-srl:fix/500-release-recorded-ghost
europa-tech-srl:agent/fullstack/pix-14868-exchange-sltp-lineage
europa-tech-srl:feature/pix-14675-radar-external-profit-attribution-v2
europa-tech-srl:fix/fee-reconciler-match-metrics
europa-tech-srl:fix/pix-14540-manual-trade-fee
europa-tech-srl:fix/pix-14782-orphan-protection-remediation
europa-tech-srl:agent/fullstack/pix-14773-stale-protection
europa-tech-srl:feature/claude-manual-close-owner-attribution
europa-tech-srl:feature/claude-radar-owner-close-metadata
europa-tech-srl:pix-14626-grid-reporter-audit-metadata
europa-tech-srl:feature/claude-position-reconciler-futures-race
europa-tech-srl:feature/claude-grid-exit-metadata
europa-tech-srl:feature/claude-grid-countertrend-churn
europa-tech-srl:feature/claude-validator-pm2-home
europa-tech-srl:fix/500-pytest-prod-db-isolation
europa-tech-srl:feature/claude-radar-position-owner
europa-tech-srl:feature/claude-502-asyncpg-lock-cast
europa-tech-srl:feature/claude-502-trade-dedupe
europa-tech-srl:fix/radar-owner-id-correction-pix-14519
europa-tech-srl:fix/radar-owner-id-correction
europa-tech-srl:fix/radar-attribution-tenant-isolation
europa-tech-srl:fix/post-deploy-validate-env-pix-14506
europa-tech-srl:fix/owner-first-attribution-parity-pix-14503
europa-tech-srl:fix/grid-local-stop-followup
europa-tech-srl:fix/grid-local-loss-control
europa-tech-srl:fix/deploy-auth-smoke-window
europa-tech-srl:fix/radar-signal-bootstrap
europa-tech-srl:fix/radar-signal-quality
europa-tech-srl:fix/radar-continuous
europa-tech-srl:feature/claude-risk-pnl-truth
europa-tech-srl:codex/counter-trend-attribution
europa-tech-srl:codex/profit-performance-weights
europa-tech-srl:fix/claude-daemon-audit-infra
europa-tech-srl:feature/claude-fix-grid-fill-label-test
europa-tech-srl:devops/pix-10560-data-perms-cron
europa-tech-srl:codex/arnold-sentry-killswitch-dataerror
europa-tech-srl:codex/dashboard-live-blocked-status
europa-tech-srl:codex/strategy-env-key-toggle
europa-tech-srl:audit-fix-all-20260517
europa-tech-srl:fix/performance-report-max-drawdown-cap-iter102-20260510
europa-tech-srl:fix/analytics-performance-max-drawdown-underwater-iter101-20260510
europa-tech-srl:fix/dashboard-build-stats-zero-portfolio-value-iter100-20260510
europa-tech-srl:fix/live-dashboard-daily-loss-drawdown-zero-equity-iter99-20260510
europa-tech-srl:fix/dashboard-daily-loss-drawdown-zero-equity-iter98-20260510
europa-tech-srl:fix/live-dashboard-pybit-timeout-followup-iter97-20260510
europa-tech-srl:fix/live-dashboard-zero-equity-no-phantom-iter97-20260510
europa-tech-srl:fix/analytics-strategy-stats-null-safety-iter96-20260510
europa-tech-srl:fix/futures-engine-orphan-close-price-iter95-20260510
europa-tech-srl:fix/futures-engine-close-price-uses-mark-iter94-20260510
europa-tech-srl:fix/daily-loss-kill-same-day-zero-equity-iter93-20260510
europa-tech-srl:fix/daily-loss-kill-zero-equity-no-poison-iter92-20260510
europa-tech-srl:fix/format-pnl-minus-before-dollar-iter91-20260510
europa-tech-srl:fix/pnl-badge-sign-coherence-iter90-20260510
europa-tech-srl:fix/analytics-real-pnl-adj-zero-real-pnl-iter89-20260510
europa-tech-srl:fix/analytics-adj-ratio-zero-real-pnl-iter88-20260510
europa-tech-srl:fix/ai-gate-pybit-timeout-followup-20260510
europa-tech-srl:fix/ai-gate-corrupt-state-bypasses-fail-closed-20260510
europa-tech-srl:fix/strategy-config-preset-updates-baselines-20260510
europa-tech-srl:fix/grid-qty-float-drift-bump-20260510
europa-tech-srl:fix/analytics-adj-ratio-magnitude-cap-20260509
europa-tech-srl:fix/spot-derived-null-ticker-20260509
europa-tech-srl:fix/rebalance-sharpe-coherence-20260509
europa-tech-srl:feature/iter55-per-user-real-pnl-baseline
europa-tech-srl:feature/iter54-ai-gate-confidence-fraction-rescale
europa-tech-srl:feature/iter53-sharpe-trades-per-day-annualization
europa-tech-srl:feature/iter52-derived-position-pnl-24h
europa-tech-srl:feature/iter51-batch-block-and-known-ops
europa-tech-srl:feature/iter50-grid-log-state-cap
europa-tech-srl:feature/iter49-position-sizer-balance-cache-cap
europa-tech-srl:feature/iter48-bybit-tick-cache-cap
europa-tech-srl:feature/iter47-bybit-ticker-cache-eviction
europa-tech-srl:feature/iter46-dashboard-cache-hard-cap
europa-tech-srl:feature/iter45-analytics-caps-enforced
europa-tech-srl:feature/iter44-win-rate-monitor-caps
europa-tech-srl:feature/iter43-user-states-cap
europa-tech-srl:feature/iter42-paper-gates-cap
europa-tech-srl:feature/iter41-funding-rate-cooldowns-cap
europa-tech-srl:feature/iter40-onchain-cooldowns-cap
europa-tech-srl:feature/iter39-autopilot-cache-eviction-v2
europa-tech-srl:feature/iter39-autopilot-cache-eviction
europa-tech-srl:feature/iter38-cache-eviction-cross-file-invariant
europa-tech-srl:feature/iter37-audit-warning-cross-file-invariant
europa-tech-srl:feature/iter36-futures-audit-warning-invariant
europa-tech-srl:feature/iter35-futures-missing-key-warning
europa-tech-srl:feature/iter34-trade-spot-preflight-warning
europa-tech-srl:feature/iter33-futures-preflight-warning
europa-tech-srl:feature/iter32-live-dashboard-preflight-warning
europa-tech-srl:feature/iter31-oi-cache-cap
europa-tech-srl:feature/iter30-dex-screener-cache-eviction
europa-tech-srl:feature/iter29-grid-instrument-cache-eviction
europa-tech-srl:feature/iter28-ai-signal-alert-state-warning
europa-tech-srl:feature/iter27-strategy-blocked-audit-warning
europa-tech-srl:feature/iter26-spot-instruments-cache-eviction
europa-tech-srl:feature/iter25-share-card-cache-eviction
europa-tech-srl:feature/iter24-ai-agents-cache-eviction
europa-tech-srl:feature/iter23-bug-hunt
europa-tech-srl:fix/pass171-notifications-blocked-signal-toctou-lock
europa-tech-srl:fix/pass150-signal-copier-setnx-funding-tenant
europa-tech-srl:fix/pass122-retention-clamp-twap-phantom-billing-period
europa-tech-srl:fix/pass111-tg-tv-body-cap-killswitch-throttle-monotonic
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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!610
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "agent/devops/pix-14540-local-stop-trend-aligned"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Исправляет fresh live-дефект PIX-14540: local stop закрывал AVAXUSDT long с отрицательным PnL при bullish trend и затем ждал reentry. Теперь local stop пропускает leg, если side совпадает с текущим analysis trend, и пишет audit reason local_stop_trend_aligned.
Проверка:
/srv/apps/arnold-trader/venv/bin/python -m pytest backend/tests/test_grid_short_guard.py -q-> 34 passed.GitNexus: impact
_close_side_basket_on_stop_lossLOW, direct callers 2, affected processes 0; detect-changes risk low, affected processes 0.Блокер по exact SHA
ae79dd95e4058d2daae6c635e673a09550ab838bподтверждён.Официальный
REQUEST_CHANGESчерез Forgejo API не принят сервером:reject your own pull is not allowedдля текущей agent API identity. Поэтому вместо него ставлю доступный remote brake: PR закрыт, чтобы SHA не мог быть merged в текущем виде.Причина блокировки: PR добавляет ранний
continueв_close_side_basket_on_stop_loss()при_position_matches_analysis_trend(position_side, analysis)до_cancel_side_open_orders(),_check_counter_trend_close_allowed()иreduceOnlymarket-close (backend/bot/grid/loop_helpers.py:4084). Это ломает контрактLOCAL_STOP_NOTIONAL_RATIO: breaching grid-owned leg остаётся открытой, а расширяющие orders этой стороны не отменяются.Проверенная причинность:
backend/bot/grid/__init__.py:494-495: local-stop вызывается каждый live grid cycle; комментарий на491-493прямо говорит, что loss control остаётся активным даже в hedge-only recovery.backend/bot/grid/loop_helpers.py:3996-4057: threshold =max(LOCAL_STOP_MIN_LOSS_USD, notional * LOCAL_STOP_NOTIONAL_RATIO); после PR это уже не hard cap для trend-aligned breached leg.backend/bot/grid/loop_helpers.py:1652-1672:_position_matches_analysis_trend()возвращает True не только для bullish long / bearish short, но и дляneutral/rangingна обеих сторонах; bypass шире заявленного trend-aligned case.main.pyиpython -m bot.trader_bot:ARNOLD_SHORT_BASKET_STOP_ENABLED=1,ARNOLD_LONG_BASKET_STOP_ENABLED=1, значит путь включён в production.Верификация review: isolated clone
/tmp/arnold-pr610-review,HEAD=ae79dd95e4058d2daae6c635e673a09550ab838b;pytest backend/tests/test_grid_short_guard.py -q= 34 passed;git diff --check origin/master...HEAD= clean. Эти тесты не опровергают blocker: новыеtest_short_local_stop_keeps_trend_aligned_grid_legиtest_long_local_stop_keeps_trend_aligned_grid_legзакрепляют отсутствие close/cancel при breached loss.Минимальное условие для повторного review: local notional stop должен остаться bounded protection. Если нужен trend-aware bypass, он должен иметь независимый hard cap/second threshold, отменять expanding orders и иметь fail-closed semantics для stale/unknown/neutral/ranging с симметричными тестами long/short.
Pull request closed