Day 26: Position Sizing & Risk Controls
•
~5 min read
What I Built
- RiskManager class with Kelly-adjacent position sizing algorithm
- CorrelationAnalyzer for sector-aware position size adjustments
- CircuitBreaker system with drawdown and consecutive loss limits
- RiskAwarePaperTradingEngine integrating all risk controls
- Comprehensive test suite covering all risk scenarios
Code Highlight
class RiskManager:
"""Manage position sizing and risk controls."""
def calculate_position_size(self, inputs: PositionSizeInput) -> int:
"""Kelly-adjacent position sizing: account for risk/reward."""
risk_dollars = inputs.account_equity * self.max_loss_per_trade_pct
stop_price = inputs.asset_price * (1 - inputs.stop_loss_pct)
risk_per_share = inputs.asset_price - stop_price
position_size_by_risk = int(risk_dollars / risk_per_share)
max_position_size = int((inputs.account_equity * self.max_position_pct) / inputs.asset_price)
position_size = int(position_size_by_risk * inputs.correlation_factor)
return min(position_size, max_position_size)
Architecture Decision
Chose Kelly-adjacent sizing over fixed percentage allocation to dynamically adjust position sizes based on stop loss distance and correlation. This provides better risk-adjusted returns while maintaining strict position limits to prevent over-concentration.
Testing Results
All 6 unit tests pass, covering critical risk management scenarios:
- Kelly-adjacent position sizing calculations
- Maximum position size caps enforcement
- Daily loss limit triggers
- Correlation-based size adjustments
- Circuit breaker drawdown limits
- Consecutive loss protection
Next Steps
Day 27: Implement real-time alert system and risk metrics dashboard for live monitoring.
Follow @therealkamba on X for regular updates. View all posts →