feat: upgrade paper trading to $100k moderate tier

Paper money has no downside — bigger capital exposes more model
behavior: position sizing, diversification, sector exposure,
correlation checks, circuit breakers, reserve pool siphoning,
and risk tier auto-adjustment all become meaningful.

- risk_tier: conservative → moderate (min_confidence 0.55)
- absolute_position_cap: $25 → $10,000
- max_open_positions: 5 → 10
- initial portfolio value: $500 → $100,000
- Updated migration 019, Helm values, and engine default
This commit is contained in:
Celes Renata
2026-04-16 00:37:35 +00:00
parent d21110b3d2
commit 88c2bc84a1
3 changed files with 11 additions and 9 deletions
+3 -3
View File
@@ -209,9 +209,9 @@ config:
ALERT_BROKER_ERROR_WINDOW_HOURS: "1" ALERT_BROKER_ERROR_WINDOW_HOURS: "1"
ALERT_CHECK_INTERVAL_SECONDS: "120" ALERT_CHECK_INTERVAL_SECONDS: "120"
TRADING_ENABLED: "true" TRADING_ENABLED: "true"
TRADING_RISK_TIER: "conservative" TRADING_RISK_TIER: "moderate"
TRADING_ABSOLUTE_POSITION_CAP: "25.0" TRADING_ABSOLUTE_POSITION_CAP: "10000.0"
TRADING_MAX_OPEN_POSITIONS: "5" TRADING_MAX_OPEN_POSITIONS: "10"
## Secrets ## Secrets
secrets: secrets:
@@ -1,9 +1,9 @@
-- Migration 019: Enable paper trading configuration -- Migration 019: Enable paper trading configuration
-- Sets conservative defaults for initial paper trading deployment. -- Sets moderate defaults for paper trading with $100k capital.
-- Requirements: 16.1, 5.1 -- Requirements: 16.1, 5.1
UPDATE trading_engine_config UPDATE trading_engine_config
SET enabled = true, SET enabled = true,
risk_tier = 'conservative', risk_tier = 'moderate',
absolute_position_cap = 25.0, absolute_position_cap = 10000.0,
max_open_positions = 5; max_open_positions = 10;
+4 -2
View File
@@ -552,10 +552,12 @@ class TradingEngine:
logger.debug("Could not load circuit breaker state — using inactive") logger.debug("Could not load circuit breaker state — using inactive")
# Build portfolio state with defaults # Build portfolio state with defaults
# Default initial capital for paper trading — overridden by broker sync
initial_capital = 100000.0
self.portfolio_state = PortfolioState( self.portfolio_state = PortfolioState(
reserve_pool=reserve_balance, reserve_pool=reserve_balance,
active_pool=max(0.0, 500.0 - reserve_balance), active_pool=max(0.0, initial_capital - reserve_balance),
total_value=500.0, total_value=initial_capital,
) )
async def _decision_loop(self) -> None: async def _decision_loop(self) -> None: