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 →