Procedura Combinazione Forecast
Quick Reference
Procedura per combinare segnali da multiple trading rules in un unico forecast scalato per position sizing.
Overview
Obiettivo: Ottenere forecast diversificato che cattura opportunita da diversi stili di trading.
Range target: -20 a +20 (scaled forecast finale)
Beneficio: Diversification multiplier su forecast riduce volatility.
Step-by-Step Procedure
Step 1: Calculate Raw Forecasts
Per ogni trading rule, genera raw forecast:
Trend (EWMAC):
Raw_trend = (MA_fast - MA_slow) / σ_recent
Carry:
Raw_carry = (Yield - Funding_cost) / σ_recent
Breakout:
Raw_breakout = (Price - Min_N) / (Max_N - Min_N) × 40 - 20
Output: Raw forecasts (scala arbitraria per ogni rule).
Step 2: Scale Individual Forecasts
Target: Ogni forecast scalato a ±10 average absolute value.
Calculate scalar per ogni rule:
Scalar = 10 / mean(|Raw_forecast|)
Apply:
Scaled_forecast = Raw_forecast × Scalar
Cap at ±20:
Capped = max(-20, min(Scaled_forecast, 20))
Step 3: Assign Weights
Handcrafting approach - allocate weights based on: - Sharpe ratio atteso - Diversification (low correlation) - Turnover (penalize alto turnover)
Esempio allocation:
Trend (EWMAC 16/64): 30%
Trend (EWMAC 64/256): 20%
Carry: 30%
Breakout: 20%
Constraint: Weights sum to 100%.
Step 4: Combine Forecasts
Weighted average:
Combined = Σ(Weight_i × Capped_forecast_i)
Final cap at ±20:
Final_forecast = max(-20, min(Combined, 20))
Step 5: Position from Forecast
Convert to position:
Target_position = Final_forecast / 10
Interpretazione: - Forecast = +20 → Full long (2× average) - Forecast = +10 → Average long (1×) - Forecast = 0 → Flat - Forecast = -10 → Average short (-1×) - Forecast = -20 → Full short (-2×)
Esempio Completo
Setup: S&P 500 Future
Capital: $100,000 Risk target: 20% annual Current σ: 16% annual
Step 1: Raw forecasts today - EWMAC 16/64: Raw = +2.5 - EWMAC 64/256: Raw = +1.2 - Carry: Raw = +0.05 - Breakout: Raw = +8
Step 2: Historical scalars (pre-calculated) - EWMAC 16/64: Scalar = 4.0 → Scaled = +2.5 × 4.0 = +10 - EWMAC 64/256: Scalar = 8.3 → Scaled = +1.2 × 8.3 = +10 - Carry: Scalar = 200 → Scaled = +0.05 × 200 = +10 - Breakout: Scalar = 1.25 → Scaled = +8 × 1.25 = +10
All scaled to ±10 average (by design).
Step 3: Apply weights - Trend fast: 30% × +10 = +3.0 - Trend slow: 20% × +10 = +2.0 - Carry: 30% × +10 = +3.0 - Breakout: 20% × +10 = +2.0
Step 4: Combine
Combined = 3.0 + 2.0 + 3.0 + 2.0 = +10
Step 5: Position
Target = +10 / 10 = 1.0 (average long position)
Contratti = ($100,000 × 20%) / (4500 × $5 × 16%)
= $20,000 / $360
= 55.5 → 55 contratti
Diversification Benefit
Forecast Diversification Multiplier
Se forecast correlations low:
Esempio (4 rules, ρ_avg = 0.25):
FDM = √[4 / (1 + 3 × 0.25)] = √[4 / 1.75] = 1.51
Benefit: 51% higher risk-adjusted return da diversification!
Correlation Matrix
Monitor forecast correlations:
Trend16 Trend64 Carry Breakout
Trend16 1.00 0.80 0.05 0.60
Trend64 0.80 1.00 0.05 0.45
Carry 0.05 0.05 1.00 0.10
Breakout 0.60 0.45 0.10 1.00
Low correlation Carry vs Trend → excellent diversification.
Weight Optimization
Handcrafting Guidelines
High Sharpe, Low Correlation: - Increase weight - Example: Carry (SR=0.5, ρ=0.05) → 30-40%
High Sharpe, High Correlation: - Moderate weight combined - Example: Trend rules (total 40-50%)
Low Sharpe, Any Correlation: - Low weight or exclude - Example: Poor-performing breakout → 10-20%
Cost Consideration
High turnover = higher costs:
Adjust weights to penalize costly strategies:
Effective_SR = Raw_SR - (Turnover × Cost_per_trade / 3)
Example: - Mean reversion: SR=0.40, Turnover=20×, Cost=0.02 SR - Effective = 0.40 - (20 × 0.02 / 3) = 0.27 - Reduce weight due to costs
Dynamic vs Static Weights
Static Weights (Recommended)
Set once, review annually: - Simpler - Avoids overfitting - Stable performance
Esempio: 40% trend / 30% carry / 30% other
Dynamic Weights (Advanced)
Adjust based on performance/correlation: - More complex - Risk of overfitting - Potential better adaptation
Use only if: Strong statistical framework, 5+ years data.
Multiple Instruments
Approach 1: Global Weights
Same weights for all instruments: - Trend: 40% - Carry: 30% - Breakout: 30%
Pros: Simple, consistent Cons: Ignores asset-specific characteristics
Approach 2: Asset-Class Weights
Different per class:
Equities: 50% trend / 30% carry / 20% value FX: 40% trend / 40% carry / 20% breakout Commodities: 50% trend / 30% carry / 20% seasonality
Pros: Tailored Cons: More complex, overfitting risk
Backtest Validation
Calculate Scalars
Use historical data (500+ days):
1. Run rule on historical data
2. Calculate |forecast| for each day
3. Scalar = 10 / mean(|forecast|)
4. Verify: mean(|scaled_forecast|) ≈ 10
Test Weights
Multiple allocations, compare: - Equal weights (25% each) - SR-weighted - Handcrafted
Select allocation con best out-of-sample SR.
Rebalancing Forecast Weights
Annual Review
Check ogni anno: 1. Recalculate scalars (rolling 500 giorni) 2. Review correlations 3. Adjust weights se needed 4. Document changes
Triggers for Change
- Rule SR degrades > 0.15
- Correlation changes > 0.30
- New rule added
- Strategy terminated
Avoid frequent changes (overfitting).
Practical Tips
Start Simple
2-3 rules initially: - 1 trend rule - 1 carry rule - Equal weights 50/50
Expand as confident.
Document Everything
Spreadsheet tracking: - Date - Raw forecasts - Scalars applied - Weights used - Combined forecast - Position taken
Audit trail for review.
Automate Calculations
Excel formulas:
=MAX(-20, MIN(Raw_forecast * Scalar, 20))
=SUMPRODUCT(Scaled_forecasts, Weights)
Or scripting (Python/R).
Special Cases
Conflicting Signals
Trend says +10, Carry says -10:
Combined (50/50 weights):
Combined = 0.5 × (+10) + 0.5 × (-10) = 0
Result: Flat position (no consensus).
This is correct - diversification working.
All Rules Agree
Trend +15, Carry +12, Breakout +18:
Combined (equal weights):
Combined = (15 + 12 + 18) / 3 = +15
Strong signal - high conviction.
One Rule Extreme
Breakout = +20, others near 0:
Combined (20% breakout):
Combined = 0.2 × 20 + 0.8 × 0 = +4
Muted by diversification - appropriate.
Monitoring
Daily Checks
- Raw forecasts reasonable?
- Scaled forecasts in range?
- Combined forecast computed correctly?
- Position matches forecast?
Weekly Review
- Forecast correlations stable?
- Individual rule performance on track?
- Combined performance vs individual?
Monthly Analysis
- Diversification benefit realized?
- Weights still appropriate?
- Any rule consistently poor?
Errori Comuni
- Skip scaling step: Raw forecasts diverse scale, unfair weights
- No caps: Extreme forecasts dominate combination
- Equal weights always: Ignores SR and correlation differences
- Too many rules: Complexity vs diminishing diversification
- Optimize weights: Overfitting to historical data
- Ignore costs: High-turnover rule gets same weight as low
- No documentation: Can't audit or improve process
- Dynamic weights: Chasing performance, overfitting
Concetti Correlati
- [[Forecast Scaling]] - calcolo scalars per ogni rule
- [[Forecast Caps]] - range -20 a +20
- [[Diversification Multiplier]] - beneficio combination
- [[Position Sizing]] - usa combined forecast
- [[Correlation]] - drive diversification benefit
- [[Sharpe Ratio]] - guida weight selection
- [[Turnover]] - penalizza weights per costly rules