DDeterministic Macro ModelDevelopment only · through 2022

Same information · different forecasting methods

See how a forecast
becomes a portfolio.

Follow a recorded monthly decision from its inputs to its prediction, risk adjustment and portfolio weights. Then compare what the models predicted with what actually happened.

Start here · choose a recorded decision

Follow one month through the model

Changing the model or asset updates every view. Choose a month to inspect its exact calculation, or start with the largest forecast miss.

  1. 01Observe inputs
  2. 02Make a forecast
  3. 03Account for risk
  4. 04Choose weights

01 · what the model sees

Inputs used at the cutoff

An arrow marks an input clipped to the range learned from earlier training data. Other inputs pass through unchanged.

Inspect clipping and scaling
InputTraining clip rangeUsed value in training standard deviations

02 · why this forecast?

Left lowers this prediction. Right raises it. Values are contributions in percentage points of monthly return.

Input−0+Effect

These terms reconstruct this fitted model's forecast. They are not causal effects. Displayed values are rounded.

03 · Black–Litterman adjustment

Put the forecast in a risk context

The adjustment uses all three asset forecasts, their past errors and how asset returns move together. It is not a single confidence slider.

04 · portfolio construction

Allocate across all three assets

Weights depend on the whole portfolio's expected returns, risk, trading penalty and bounds. A higher forecast for one asset does not automatically imply a larger position.

Stage 1 · essential comparison

Four models, one shared test

Only the forecasting method changes. The historical mean uses the same completed return observations and ignores the predictors.

Prediction versus reality

Change model or month ↑

Click a month in this chart to inspect its decision above. The month picker provides the same control with a keyboard.

Which models miss by more?

Does the model beat the past average?

Out-of-sample R² across all assets. Above zero means lower squared errors than the historical mean; below zero means worse. Select a cell to inspect that model and asset.

Exact core-model forecast metrics
Core modelMAERMSEOOS R² vs. meanForecast range|Forecast| > 20%Avg. active predictors

MAE and RMSE are monthly return errors. OOS R² compares squared errors with the expanding historical mean on identical dates: positive is better, negative is worse. This uses a past-only mean forecast, not the realized test-sample mean. Active predictors exclude the intercept.

Stage 2 · change one thing

What adds value beyond additive Ridge?

Lags and interactions are tested separately. The Ridge reference retains only the four additive core inputs.

Dynamic Ridge

Add the three asset returns known at the decision close, plus the previous month's growth and inflation surprises. Forward holding-period returns are never used as lags.

Interaction Ridge

Add Growth surprise × ANFCI and Inflation surprise × ANFCI. This tests whether financial conditions change the relationship between surprises and returns.

Keep the stages distinct

No combined lag-and-interaction search or Bayesian VAR is run here. Review the focused comparisons before expanding the model.

Exact metrics for the two Ridge extensions
Ridge specificationMAERMSEOOS R² vs. meanForecast range|Forecast| > 20%Avg. active predictors

Same forecasts-to-weights rules

Does forecast quality reach the portfolio?

Shared covariance method, BL settings, bounds, monthly execution and costs. Each model's view uncertainty comes from its own earlier completed forecast errors.

Cumulative net returns

How deep were the losses along the way?

Drawdown is the fall from each portfolio's earlier peak. Zero means a new peak; lower lines mean deeper losses. Line styles and visible models match the return chart above.

How did the allocation change?

Each bar is one monthly allocation. Colors identify assets, not models. Select a bar to inspect that month.

Exact portfolio performance, risk and costs
Model / referenceNet total returnDaily max drawdownAvg. monthly turnoverSummed costs (bp)Δ vs. mean portfolio

Portfolio return differences are not risk-adjusted alpha. The fixed 45/35/20 and BL-prior-only references use the same dates and cost rules. Short episodes are not annualized; the full development history is the primary comparison.

Inspect forecasts, uncertainty, parameters and weights month by month

Raw and BL returns are monthly forecasts. Historical error standard deviation uses earlier completed forecast errors. It is not a calibrated predictive interval. Numbers use SPY / IEF / LQD order.

Holding monthDecision → entry → exitRaw forecastsBL estimatesPast error std. dev.Weightsα / L1 ratio for selected assetNet return

Stability across periods

Look beyond a single successful episode

Calendar-year results come from the continuous run. Partial years are labeled and holdings are not reset at event boundaries.

Year / monthsSelected net returnMean portfolioAdditive RidgeSelected drawdownSelected asset OOS R²

Recorded before this comparison run

How to reproduce and interpret the test

Download comparison (.json)
Chronological tuning

At least 36 completed training targets. Inner validation requires at least 24 completed targets at each validation decision. Scalers, imputation and clipping are refit inside each fold.

Fixed compact grids

Ridge α: 0.01, 0.1, 1, 10 on standardized targets and mean squared-error loss. Elastic Net α: 0.01, 0.1, 1; L1 ratio: 0.2 or 0.8. Parameters are selected per asset using past validation errors.

One portfolio pipeline

Start 45/35/20; SPY 20–70%, IEF 15–60%, LQD 10–40%. Monthly covariance, BL τ 0.05 and risk aversion 2.5. Costs: 5 bp per dollar traded from drifted holdings.

Reserved test excluded

Only holding months through December 2022. The January 3, 2023 exit quote closes December's position. It is not a January strategy evaluation.

Why this is a different tab from Signal Research

Signal Research changes the information available to the existing model. Model Comparison holds a compact additive information set fixed and changes the estimator, then adds lags or interactions separately. Its feature set and shared clipping differ from the wider-input Ridge, so compare models within this tab rather than mixing numerical results from the two experiments.

Forecast sample, optional BVAR and limitations

The small one-lag Bayesian VAR is optional and not implemented here. It requires a separately specified small variable system and a comparison with Dynamic Ridge using matched information. SVAR, neural networks and broad tree searches are deferred.

Training targets are standardized separately per asset and converted back to decimal total returns before metrics and BL. Targets are never clipped. There is no supplied cash-return series. OOS R² uses the actual historical-mean forecast error as its denominator. These choices were recorded after earlier research was seen; this is exploratory evidence, not a frozen production model or an independent confirmation.