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

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