Replicating Goulet Coulombe et al. (2021)#
This page documents a clean, from-scratch replication of the forecasting design in
Goulet Coulombe, Leroux, Stevanovic, and Surprenant (2021), “Macroeconomic data
transformations matter,” International Journal of Forecasting, 37(4), 1338-1354.
The replication is built entirely on the callable macroforecast API. The page is
written as a sequence of executed notebook cells, so every output shown below is the
genuine output of the code above it. The cells are also collected in the companion
script gcls_2021_replication.py, which regenerates this page.
The earlier replication material for this paper was retired because it accumulated
patches that drifted from the paper specification. This rebuild starts from the paper
design, expresses each layer with the package, and checks each step before the next one
is added. Every layer is shown in two ways. The first states what the paper did and the
closest macroforecast construction that matches it. The second treats each combination
of model, preprocessing, target, target type, and horizon as one cell of a pipeline run.
How this document is organised#
The build proceeds in eight steps. A verification summary
records the honest outcome and the two package bugs the replication surfaced, and
the detailed appendix numbers the run must reproduce are collected in
Appendix B ground-truth tables at the foot of
this page (machine-readable form: docs/replication/data/clss2021_appendix_ground_truth.csv).
Replication specification
Data construction
Forecast-target construction
Preprocessing
Feature cases
Models and arms
Pseudo-out-of-sample window
Evaluation and execution
Verification summary and bugs found#
The replication is a verification exercise. Its value is confirming the pipeline
implements the published methodology, not reproducing an R-based paper bit for
bit. The configuration is faithful (the eight steps below show each layer) and
the pipeline is leak-free. At horizon 1 the replicated relative-RMSE matches the
appendix within about 0.02, and a plain ols reproduces the direct and
path-average object exactly.
The main long-horizon divergence was a forecasting bug in the iterated benchmarks,
not the random-forest engine. Under the direct/direct_average policy the
autoregressive models (ar, and the FM benchmark far) forecast by rolling forward
from the target’s own history; because the h-ahead target’s freshest leak-free lag is
origin-h stale and the h-period average is near-unit-root, they collapsed to
persistence of a stale value, producing forecasts worse than the unconditional mean
(RMSE ≈ √2·target std, essentially uncorrelated with the realised future). Since the
FM was the benchmark denominator, this corrupted every direct relative-RMSE and grew
with the horizon. The fix gives ar/far a direct-projection mode: under the direct
policy they regress the h-ahead target on the fresh one-period lags and predict once,
instead of iterating from stale history (macroforecast/models/timeseries.py;
recursive and path-average keep the iterated behaviour, where it is correct). A second
defect surfaced once the direct mode was in place: far’s direct projection silently
dropped its factors and collapsed to plain ar (Bug 4), because the factor-block
selector excluded every lag-named column and, under the direct policy, the predictors
reach the model lag-named. With both fixed the direct FM is a genuine factor model
again and matches the appendix at all horizons: for UNRATE at horizon 24 the direct FM
went from 0.1016 (49 percent above the paper) through 0.0726 (the Bug-3-only,
factor-collapsed value) to 0.0665 (about 2 percent below the paper’s 0.068), and the
horizon-growing divergence flattens to a small, non-growing gap. Across the full grid
(10 targets x 6 horizons) the direct FM absolute RMSE has a median absolute deviation
of 11 percent from the appendix (39 of 60 cells within 15 percent), and the AR relative
RMSE a median absolute deviation of 0.05 (51 of 60 cells within 0.10). The residual IS
the expected difference between R’s randomForest / factor code and their Python
counterparts (same hyperparameters, different engine and RNG), which is not reducible
without matching the exact R implementation.
A separate, smaller issue is the benchmark denominator convention: the appendix scores both the direct and the path-average tables against one FM benchmark, the direct FM, while an earlier version of our comparison scored each policy against its own FM. Matching the paper’s convention removes the residual systematic path-average gap, as Divergence attribution explains. The path-average results were correct throughout (each per-step model forecasts a stationary one-period change, so it never collapsed to stale persistence); the bug was confined to the direct policy.
Configuration faithfulness (verified)#
Axis |
Paper |
Replication |
Status |
|---|---|---|---|
POOS window |
38 years |
1980-01 to 2017-12 (38 years), estimation from 1960-01 |
match |
RF hyperparameters |
R |
|
match |
Benchmark FM |
factor-augmented AR |
|
match (h1) |
Features |
F, X, MARX, MAF, Level |
PCA n=8, MARX/MAF max_lag=12, lags 0..12 |
match (h1) |
Target |
average growth rate; average difference for UNRATE |
|
match |
Preprocessing |
stationarity + standardization |
official t-codes, EM-factor imputation, IQR outliers |
match (h1) |
scripts/replication/gcls_2021_pipeline/_compare_appendix.py scores every cell
(10 targets x 6 horizons x {AR, FM, RF F-Level/X-Level/MARX/F-X-MARX-Level} x
{direct, path-average}) against the appendix tables below. The random-forest and AR
figures come from re-scoring the saved per-origin forecasts rather than re-fitting; the
direct FM arm was refit for Bugs 3 and 4 (its saved forecasts were wrong), as the next
paragraph describes. They also adopt the appendix’s FM-benchmark convention, the direct
FM as the denominator for both tables (see Divergence attribution).
Before the fixes these figures grew with the horizon (overall mean absolute delta about
0.09, about 0.03 at horizon 1 rising to about 0.17 at horizon 24), driven by the
direct-policy stale-persistence bug in ar/far (Bug 3). With Bugs 3 and 4 fixed, the
full-grid direct-average run (all 10 targets x 6 horizons; FM regenerated with factors,
AR unchanged) has been re-scored against the appendix. The horizon-growing divergence is
gone: the direct FM absolute RMSE deviates from the appendix by a median of 11 percent
(39 of 60 cells within 15 percent), with the larger deviations confined to near-zero
cells (for example M2 and CPI at long horizons, where the absolute RMSE is 0.001 to
0.004, so a small difference is a large percentage). The AR relative RMSE — degenerate at
exactly 1.000 before Bug 4 was fixed, because far had collapsed to ar — now tracks
the appendix with a median absolute deviation of 0.05 (51 of 60 cells within 0.10). For
UNRATE the corrected direct-average table is:
horizon |
FM abs (ours) |
FM abs (paper) |
AR rel (ours) |
AR rel (paper) |
|---|---|---|---|---|
1 |
0.154 |
0.148 |
1.045 |
1.04 |
3 |
0.092 |
0.088 |
1.068 |
1.04 |
6 |
0.083 |
0.077 |
1.008 |
1.09 |
9 |
0.081 |
0.076 |
1.006 |
1.11 |
12 |
0.080 |
0.077 |
1.029 |
1.10 |
24 |
0.067 |
0.068 |
1.091 |
1.08 |
Bug 1. Evaluation sample truncation (critical) — FIXED#
accuracy_table enforced one listwise-common sample across ALL contenders in a
cell. A single short-coverage contender (here the RF_X-Level and
RF_F-X-MARX-Level arms, whose raw X-lag block needs ACOGNO, a FRED-MD series
that starts in 1992) silently truncated EVERY arm’s relRMSE sample to 1992-2017
and reported one n_common, with no warning. So all 600 cells were scored on
1992-2017 instead of the paper’s 1980-2017.
Fix (macroforecast/pipeline/evaluate.py): each contender is scored against the
benchmark on their PAIRWISE common sample; n_common is per-contender; ragged
coverage emits a RuntimeWarning; the joint listwise sample is kept only for the
Model Confidence Set, which genuinely needs it. The Diebold-Mariano table was
already pairwise and is unchanged. Regression tests in
tests/pipeline/test_accuracy_pairwise_sample.py. Because the run predates this
fix, the corrected figures come from re-scoring the saved forecasts, not a
re-run. Re-scoring moves the full-coverage arms (AR, RF_F-Level, RF_MARX) back
onto 1980-2017 and their mean absolute delta against the appendix falls from
about 0.11 to 0.092 (AR alone to 0.065); the short-coverage X-block arms keep
their own 1992-2017 window.
Bug 2. Horizon-1 direct vs path for information-criterion models — FIXED#
At horizon 1, direct and path-average must give identical forecasts (path-average
over one step IS the direct one-step forecast). A supervised model (ols)
satisfied this exactly. The information-criterion models far and ar did not
(about 1% at the RMSE level, so relRMSE was barely affected and h1 still matched
the appendix).
Root cause: order selection. The direct path selects the AR order for IC models
by BIC/AIC on the full training sample (no validation split needed). The
path-average per-step selection block lacked that IC branch and instead ran
CV/validation-split selection (select_params), which scores the order on a
truncated sample (the validation block is held out, ending years before the
origin). So the two policies selected different orders for the same data (e.g.
direct chose order 1 while path chose order 4) and diverged even at h1. The
per-step target series at a given order was identical across policies; the
divergence was purely the selected order.
Fix (macroforecast/forecasting/runner.py, _fit_predict_path_average_origin):
the path per-step block now takes the same IC branch as the direct path. Guarded by
tests/forecasting/test_h1_direct_path_invariant.py. (After Bug 3 below, horizon-1
ar/far are close rather than bit-identical across policies, because the direct
policy now uses a one-shot projection while path-average iterates per step; ols
and other single-shot models remain bit-identical.)
Bug 3. Direct-policy stale persistence in the iterated benchmarks (critical) — FIXED#
Under the direct/direct_average policy, the autoregressive models (ar, and the
FM benchmark far) forecast by rolling forward from the target’s own history. The
h-ahead target is pre-built, and leak-free availability makes its freshest lag
origin-h stale; the h-period average is near-unit-root, so the models’ coefficient
on that stale lag is near one and they simply persist a value from h months earlier.
The result is a forecast worse than the unconditional mean: at horizon 24 the
prediction carried the full target-scale variance but was essentially uncorrelated
with the realised future (RMSE ≈ √2·target std), and its correlation with the stale
origin-h value was ≈ 0.998. Because far is the benchmark denominator, this threw
off every direct relative-RMSE and grew with the horizon — it, not the random-forest
engine, was the main long-horizon divergence. The plain direct (single h-step)
policy had the same defect. path_average was correct throughout, because each
per-step model forecasts a stationary one-period change (which mean-reverts, so it
shrinks) rather than the near-unit-root average.
Fix (macroforecast/models/timeseries.py): ar/far gain a direct-projection mode.
Under the direct policy they regress the h-ahead target on the fresh one-period lag
features (the n_lag most recent observed lags, which are available at the origin and
so leak-free) and predict each origin independently, instead of iterating from stale
history; information-criterion order selection uses the same mode. The recursive and
path-average policies keep the iterated behaviour, where iterating a stationary
one-period series is correct. Validated: on UNRATE the direct FM absolute RMSE at
horizon 24 moves from 0.1016 (49 percent above the paper) to 0.0726 (this Bug-3-only
value is still factor-collapsed; Bug 4 below reduces it to 0.0665),
ar at horizon 24 now shrinks to about the target standard deviation instead of
√2·target std, and the full test suite (models, selection, forecasting, correctness,
pipeline) stays green and leak-free. Guarded by
tests/models/test_ar_far_direct_projection.py. The 11 other iterated/state-space
models (VAR family, favar, the statsmodels forecasters, the mixed-frequency DFM,
and the naive baselines) share the same structural defect under the direct policy and
are a documented follow-up; they are not used in this replication.
Bug 4. Factor collapse in the direct FM benchmark (critical) — FIXED#
With Bug 3’s direct-projection mode in place, far regressed the h-ahead target on the
target’s own fresh lags plus factors extracted from the predictor block. But the
factor-block selector kept the columns that do NOT match the lag pattern *_lag<k>,
and under the direct policy every feature — target lags AND predictor lags — reaches the
model lag-named. So the predictor block was excluded wholesale, no factors were fit, and
far collapsed to plain ar. On the replication this made the direct FM benchmark
byte-identical to AR at every target and horizon (AR relative RMSE exactly 1.000),
disagreeing with the appendix where AR is 1.04 to 1.11 times FM. Because FM is the
benchmark denominator, this left every direct relative-RMSE meaningless even though the
FM absolute RMSE looked plausible (an AR forecast at roughly the paper’s AR error level).
Fix (macroforecast/models/timeseries.py): _FAR’s direct mode excludes only the
target’s OWN lag columns (matched by the base name of the selected lags) from the factor
block; the predictor lags remain and drive the PCA. Recursive/path far (direct=False)
was already correct and is unchanged. Regenerating the direct FM with factors and
re-scoring gives a real factor benchmark: UNRATE horizon 24 FM absolute RMSE 0.0726 →
0.0665, and the AR relative RMSE stops being tautologically 1.000 and tracks the
appendix (UNRATE: 1.045, 1.068, 1.008, 1.006, 1.029, 1.091 vs the paper’s 1.04, 1.04,
1.09, 1.11, 1.10, 1.08). Guarded by
test_direct_far_uses_predictor_factors_when_predictors_are_lag_named (with lag-named
informative predictors, far must fit substantially better than ar, which the
collapse prevented).
Divergence attribution#
The dominant long-horizon divergence in the DIRECT tables was a forecasting bug in
the iterated benchmarks (ar, far), not the random-forest engine — see Bug 3
above. It grew with the horizon and, because far is the benchmark denominator,
distorted every direct relative-RMSE. After the fixes the direct FM absolute RMSE
matches the appendix across horizons (UNRATE horizon 24: 0.1016 → 0.0726 with Bug 3
alone → 0.0665 once Bug 4 restores the factors, vs the paper’s 0.068), and the
horizon-growing divergence flattens.
What remains for the random-forest arms is the expected R randomForest versus
scikit-learn RandomForestRegressor difference (same hyperparameters, different
bootstrap RNG and split rule), amplified at long horizons where a 24-month average
target leaves only about a dozen independent observations. That is the known
irreducible R-versus-Python gap, not a package defect, and it is a few percent, not
the O(1) gap the direct-projection bug produced.
A separate issue affected the PATH-AVERAGE table only, whose largest residuals
were the volatile real-activity series (HOUST, RETAIL) at long horizons. The cause
there is the benchmark DENOMINATOR convention. The appendix prints the same FM
absolute
RMSE above the direct table (Tables 3 to 8) and the path-average table (Tables 9
to 14) at every horizon, so the paper uses one FM benchmark, the direct FM, as
the denominator for both. Our pipeline instead scored each policy against its
own-policy FM, and for these series the per-step path-average FM is much worse
than the direct FM, which inflated the path denominator and pushed every path
relative RMSE below the appendix. Scoring the path table against the direct FM,
as the paper does, removes the systematic gap. HOUST path-average AR at horizon
24 moves from about 0.89 to about 1.57 against the appendix 1.48, and the
path-average mean absolute delta falls from 0.114 to 0.096.
_compare_appendix.py now uses the direct FM as the denominator for both tables.
This is an evaluation-convention difference, not a forecasting defect: the per-step path-average forecasts themselves match the paper’s construction. What remains after the convention is matched is the random-forest engine gap above plus ordinary finite-sample noise at the longest horizons, where a 24-month average target leaves only about a dozen independent observations.
Hypotheses raised and retracted (for the record)#
RF
max_features=1.0mismatch — false alarm. The baremf.random_forestbuilder defaults to sklearn’s 1.0, but the replication arms setmax_features=1/3viapaper_model_params.A path-average “OLS-equivalence bug” — retracted. The paper does not run OLS; its own AR row differs between the direct and path tables, so direct != path for linear models in finite samples is expected.
“The path-FM denominator is correct because the direct-FM denominator made the AR row worse” — this earlier reasoning was confounded by Bug 3. The direct AR (and direct FM) were themselves broken (stale persistence), so any comparison that used the direct FM as the denominator inherited that defect. With Bug 3 fixed, the appendix convention (one direct-FM denominator for both tables) is the correct one, as the verification summary states.
Step 1. Replication specification#
The paper design is fixed in one place before any code is written. Most of the errors in the earlier attempt traced back to a target mapping or a learner setting that had silently diverged from the paper, so this step is treated as load-bearing.
What we are reproducing#
The main-text Table 2 is a compact summary that prints, for every variable and horizon, the single best specification with coloured bullets and an underline for path-average targets. It carries no numbers. The detailed numbers live in online Appendix B. Appendix B.1 (Tables 3 to 8) holds the direct-forecast relative RMSE and Appendix B.2 (Tables 9 to 14) holds the path-average relative RMSE. Each table reports, for one horizon, the FM absolute RMSE, the AR ratio, and five machine-learning models over sixteen transformation sets. These tables are the replication target and were re-extracted from the appendix PDF and validated cell by cell.
The benchmark, and what FM and AR mean#
Every relative-RMSE figure is a ratio to the FM benchmark RMSE. FM is the autoregressive diffusion-index model of Stock and Watson, estimated by OLS, with the predictor vector Z_t containing autoregressive lags of the target and principal-component factors. AR is the nested model that keeps only the autoregressive-lag block and drops the factors. FM is the denominator. AR is itself reported as a ratio to FM and is a contender, not the benchmark. The orders are fixed at (p_y, p_f, k) = (12, 12, 8).
The seven models map to existing package factories#
The first verification is that every model the paper uses already exists as a
macroforecast model factory, so the full grid is buildable without new estimators.
import macroforecast as mf
paper_to_package = {
"AR": "ar",
"FM (ARDI)": "far",
"Elastic Net": "elastic_net",
"Adaptive Lasso": "adaptive_lasso",
"Linear Boosting": "glmboost",
"Random Forest": "random_forest",
"Boosted Trees": "gradient_boosting",
}
available = set(dir(mf))
print(f"{'paper model':18s} {'package key':18s} available")
for paper, key in paper_to_package.items():
print(f"{paper:18s} {key:18s} {key in available}")
paper model package key available
AR ar True
FM (ARDI) far True
Elastic Net elastic_net True
Adaptive Lasso adaptive_lasso True
Linear Boosting glmboost True
Random Forest random_forest True
Boosted Trees gradient_boosting True
Transformation sets and codes#
The predictors enter after the McCracken and Ng stationarity codes. The block X is the stationarised panel, F is its principal components, and MARX and MAF are moving-average objects built from the same stationarised panel. The Level block keeps the variables in raw levels. The forecast target is built separately from the raw level, so it does not pass through the FRED-MD code. For seven of the ten targets the FRED-MD code is already a first-order growth and coincides with the target transform; for HOUST, CPI, and PPI it genuinely differs. The sixteen random-forest information sets are the admissible combinations of the five blocks.
TRANSFORMS = ["F","F-X","F-MARX","F-MAF","F-Level","F-X-MARX","F-X-MAF",
"F-X-Level","F-X-MARX-Level","X","MARX","MAF","X-MARX","X-MAF",
"X-Level","X-MARX-Level"]
print(f"{len(TRANSFORMS)} transformation sets:")
for i in range(0, len(TRANSFORMS), 4):
print(" " + " ".join(f"{t:16s}" for t in TRANSFORMS[i:i+4]))
16 transformation sets:
F F-X F-MARX F-MAF
F-Level F-X-MARX F-X-MAF F-X-Level
F-X-MARX-Level X MARX MAF
X-MARX X-MAF X-Level X-MARX-Level
Ground-truth validation set#
The re-extracted appendix tables give the numbers the run must approach. They are on the
companion page and in data/clss2021_appendix_ground_truth.csv. During re-extraction we
found that an earlier hand-made extract had transcription errors in several cells, so the
companion tables supersede any earlier extract.
import pandas as pd
gt = pd.read_csv("docs/replication/data/clss2021_appendix_ground_truth.csv")
print("ground-truth shape:", gt.shape)
print("target types:", sorted(gt.target_type.unique()))
print("models:", sorted(gt.model.unique()))
print("horizons:", sorted(gt.horizon.unique()))
print()
print("example rows (horizon 1, direct, Random Forest):")
ex = gt[(gt.horizon==1)&(gt.target_type=='direct')&(gt.model=='RandomForest')]
print(ex[["info_set","INDPRO","EMP","UNRATE","CPI","PPI"]].head(4).to_string(index=False))
ground-truth shape: (984, 15)
target types: ['direct', 'sgr']
models: ['AR', 'AdaptiveLasso', 'BoostedTrees', 'ElasticNet', 'FM_ABS', 'LinearBoosting', 'RandomForest']
horizons: [np.int64(1), np.int64(3), np.int64(6), np.int64(9), np.int64(12), np.int64(24)]
example rows (horizon 1, direct, Random Forest):
info_set INDPRO EMP UNRATE CPI PPI
F 0.95 0.99 0.97 1.00 0.97
F-X 0.96 1.00 0.95 1.00 0.97
F-MARX 0.93 0.95 0.94 0.97 0.95
F-MAF 0.96 0.97 0.97 1.01 0.97
Step 2. Data construction#
Paper to package#
The paper uses the monthly FRED-MD panel of McCracken and Ng, with the estimation sample
beginning in 1960M01 and the pseudo-out-of-sample period running from 1980M01 to 2017M12.
The vintage is not stated, so the build uses the 2018-01 historical vintage, the first one
published after the sample ends. In the package this is a single call that returns a
DataBundle, with the transformation codes travelling alongside the panel.
bundle = mf.data.load_fred_md(vintage="2018-01")
panel = bundle.panel
print("shape:", panel.shape)
print("period:", panel.index.min().date(), "..", panel.index.max().date())
print("frequency:", pd.infer_freq(panel.index))
print("transform codes carried in attrs:",
"macroforecast_transform_codes" in panel.attrs)
shape: (708, 127)
period: 1959-01-01 .. 2017-12-01
frequency: MS
transform codes carried in attrs: True
The sample begins in 1959-01 rather than 1960-01 so that the first estimation origin in 1960-01 has a year of lags available.
The ten targets are present and complete#
The two columns the retired scaffold had wrong, INCOME as RPI and M2 as M2REAL, are checked here together with the rest.
TARGETS = {"INDPRO":"INDPRO","EMP":"PAYEMS","UNRATE":"UNRATE","INCOME":"RPI",
"CONS":"DPCERA3M086SBEA","RETAIL":"RETAILx","HOUST":"HOUST",
"M2":"M2REAL","CPI":"CPIAUCSL","PPI":"WPSFD49207"}
print(f"{'alias':8s} {'column':18s} {'present':8s} {'NaN':>4s}")
for alias, col in TARGETS.items():
here = col in panel.columns
n = int(panel[col].isna().sum()) if here else -1
print(f"{alias:8s} {col:18s} {str(here):8s} {n:4d}")
alias column present NaN
INDPRO INDPRO True 0
EMP PAYEMS True 0
UNRATE UNRATE True 0
INCOME RPI True 0
CONS DPCERA3M086SBEA True 0
RETAIL RETAILx True 0
HOUST HOUST True 0
M2 M2REAL True 0
CPI CPIAUCSL True 0
PPI WPSFD49207 True 0
The transformation codes match McCracken and Ng#
The package codes for the ten targets match the published codes, including the two price series at code 6 (second log-difference), HOUST at code 4 (log level), and UNRATE at code 2 (first difference). This is the difference that Step 3 must respect when it builds the target from the raw level.
tcodes = panel.attrs["macroforecast_transform_codes"]
expect = {"INDPRO":5,"PAYEMS":5,"UNRATE":2,"RPI":5,"DPCERA3M086SBEA":5,
"RETAILx":5,"HOUST":4,"M2REAL":5,"CPIAUCSL":6,"WPSFD49207":6}
def tc(col):
v = tcodes.get(col)
return v.get("tcode", v) if isinstance(v, dict) else v
print(f"{'column':18s} {'package':>7s} {'MN':>3s} match")
for col, e in expect.items():
print(f"{col:18s} {str(tc(col)):>7s} {e:3d} {tc(col)==e}")
column package MN match
INDPRO 5 5 True
PAYEMS 5 5 True
UNRATE 2 2 True
RPI 5 5 True
DPCERA3M086SBEA 5 5 True
RETAILx 5 5 True
HOUST 4 4 True
M2REAL 5 5 True
CPIAUCSL 6 6 True
WPSFD49207 6 6 True
Missing values are confined to the early sample#
The gaps are in twenty predictors and almost all in the early sample, mostly series that begin after 1959. They are filled by the factor-based EM imputation in Step 4, which must run inside the pseudo-out-of-sample loop so that it never sees the future.
na = panel.isna().sum()
na = na[na > 0].sort_values(ascending=False)
print(f"{len(na)} of {panel.shape[1]} columns have missing values; top five:")
for c, n in na.head(5).items():
fv = panel[c].first_valid_index()
print(f" {c:12s} NaN={int(n):4d} first valid {fv.date()}")
print()
print("missing cells by decade:")
print(panel.isna().sum(axis=1).groupby(panel.index.year//10*10).sum().to_string())
20 of 127 columns have missing values; top five:
ACOGNO NaN= 398 first valid 1992-02-01
TWEXMMTH NaN= 168 first valid 1973-01-01
UMCSENTx NaN= 154 first valid 1959-05-01
ANDENOx NaN= 109 first valid 1968-02-01
VXOCLSx NaN= 42 first valid 1962-07-01
missing cells by decade:
date
1950 118
1960 447
1970 220
1980 120
1990 25
2000 0
2010 12
Cell view#
The bundle is the single shared input to every cell of the run. A cell is one combination of model, transformation set, target, target type, and horizon, and each cell reads the same panel and the same transformation codes. Building the panel once and sharing it is what lets the later preprocessing cache be reused across cells.
Step 3. Forecast-target construction#
This is the step the retired scaffold broke. The forecast target is the h-period average growth of the series, built from the raw level, and it must not pass through the FRED-MD transformation code. For the price series the code is a second log-difference, so applying it to build the target would forecast the change in inflation rather than inflation.
Paper to package#
The paper target is the average of the one-period growths over the h future steps. The
one-period growth is a log-difference for the nine level series and a simple difference for
the unemployment rate. The package builds this directly from the raw level with
direct_target, using average_log_growth for the log series and average_change for
the rate. Because the input is the raw level column, the transformation code never enters.
from macroforecast.feature_engineering import direct_target, path_targets
import numpy as np
SPEC = [("INDPRO","INDPRO","average_log_growth"),
("EMP","PAYEMS","average_log_growth"),
("UNRATE","UNRATE","average_change"),
("INCOME","RPI","average_log_growth"),
("CONS","DPCERA3M086SBEA","average_log_growth"),
("RETAIL","RETAILx","average_log_growth"),
("HOUST","HOUST","average_log_growth"),
("M2","M2REAL","average_log_growth"),
("CPI","CPIAUCSL","average_log_growth"),
("PPI","WPSFD49207","average_log_growth")]
HZ = [1, 3, 6, 9, 12, 24]
POOS = (pd.Timestamp("1980-01-01"), pd.Timestamp("2017-12-01"))
# direct target for every series; report scale at the shortest and longest horizon
print(f"{'target':8s} {'kind':8s} {'h1_n':>5s} {'h1_mean':>8s} {'h1_std':>7s}"
f" {'h24_n':>6s} {'h24_mean':>9s} {'h24_std':>8s}")
for alias, col, kind in SPEC:
d = direct_target(panel, target=col, horizons=[1, 24], transform=kind)
c1 = [c for c in d.columns if c.endswith("_h1")][0]
c24 = [c for c in d.columns if c.endswith("_h24")][0]
s1 = d[c1].loc[POOS[0]:POOS[1]]; s24 = d[c24].loc[POOS[0]:POOS[1]]
knd = "dlog" if kind == "average_log_growth" else "dchange"
print(f"{alias:8s} {knd:8s} {s1.notna().sum():5d} {s1.mean():8.4f} {s1.std():7.4f}"
f" {s24.notna().sum():6d} {s24.mean():9.4f} {s24.std():8.4f}")
target kind h1_n h1_mean h1_std h24_n h24_mean h24_std
INDPRO dlog 455 0.0015 0.0067 432 0.0016 0.0026
EMP dlog 455 0.0011 0.0018 432 0.0011 0.0013
UNRATE dchange 455 -0.0048 0.1701 432 -0.0065 0.0712
INCOME dlog 455 0.0022 0.0062 432 0.0023 0.0013
CONS dlog 455 0.0024 0.0047 432 0.0025 0.0012
RETAIL dlog 455 0.0039 0.0112 432 0.0039 0.0022
HOUST dlog 455 -0.0003 0.0802 432 0.0000 0.0130
M2 dlog 455 0.0024 0.0048 432 0.0025 0.0020
CPI dlog 455 0.0025 0.0029 432 0.0024 0.0012
PPI dlog 455 0.0019 0.0057 432 0.0017 0.0016
The count falls from 455 at h=1 to 432 at h=24 because the longest horizons run past the sample end. The scale is a monthly growth rate, so means near 0.002 are about a quarter of a percent per month, and the standard deviation shrinks with the horizon as averaging smooths the series.
The path-average target produces one column per future step, shifted so that step s holds the one-period growth realised at t+s.
cpi_path = path_targets(panel, target="CPIAUCSL", horizons=[3], transform="log_growth")
print(cpi_path.loc["1980-01-01":"1980-04-01"].round(4).to_string())
CPIAUCSL_log_growth_step1 CPIAUCSL_log_growth_step2 CPIAUCSL_log_growth_step3
date
1980-01-01 0.0127 0.0138 0.0099
1980-02-01 0.0138 0.0099 0.0098
1980-03-01 0.0099 0.0098 0.0097
1980-04-01 0.0098 0.0097 0.0012
Check that the code is bypassed#
The clearest check is the price series. The CPI target is the first log-difference, which is inflation, while the FRED-MD code 6 is the second log-difference, which is the change in inflation. Over the pseudo-out-of-sample period the two have very different means, which confirms the target is built from the raw level and not from the transformed panel series.
raw = panel["CPIAUCSL"]
target_dlog = np.log(raw).diff().loc[POOS[0]:POOS[1]] # what the target uses
code6_ddlog = np.log(raw).diff().diff().loc[POOS[0]:POOS[1]] # what FRED-MD code 6 gives
print(f"CPI target (first log-difference, inflation): mean = {target_dlog.mean():+.5f}")
print(f"CPI code 6 (second log-difference, change in infl.): mean = {code6_ddlog.mean():+.5f}")
CPI target (first log-difference, inflation): mean = +0.00257
CPI code 6 (second log-difference, change in infl.): mean = -0.00002
The target mean of about a quarter of a percent per month is the familiar inflation scale, while the second-difference mean is essentially zero. The target is therefore the average growth built from the raw level, which is what the paper requires and what the earlier scaffold violated.
Cell view#
Each cell carries one target column. A direct cell at horizon h reads the
average_log_growth or average_change column at that horizon, while a path-average cell
reads the step columns and averages the step forecasts in the evaluation stage. The target
is computed once per (target, horizon, target type) and reused across the model and feature
cells.
Step 4. Preprocessing#
Paper to package#
The paper preprocesses the predictor panel in three operations that follow McCracken and
Ng. First the series are stationarised with the standard FRED-MD transformation codes.
Second outliers are flagged, a value more than ten interquartile ranges from the median
being set to missing. Third the missing values are filled by the factor-based EM algorithm
with eight factors. In the package this is one call to reprocess with the official
transform. The call below is run on the full sample to show what the three operations do,
and it is therefore a look-ahead version. The faithful run instead applies the same
operations inside the pseudo-out-of-sample loop, which is shown at the end of this step.
pre = mf.preprocessing.reprocess(
bundle,
transform="official", # standard McCracken-Ng codes
outliers="iqr", outlier_action="flag_as_nan", iqr_threshold=10.0,
impute="em_factor", em_n_factors=8, em_demean=2,
standardize="none",
)
proc = pre.panel
print("raw panel: ", panel.shape, " NaN =", int(panel.isna().sum().sum()))
print("processed panel:", proc.shape, " NaN =", int(proc.isna().sum().sum()))
raw panel: (708, 127) NaN = 942
processed panel: (706, 127) NaN = 0
Which order did the official transform apply#
This is where the predictor-side ambiguity of Step 1 is settled. The phrase “single-period differences and growth rates following McCracken and Ng” can be read two ways for the price series, but the standard FRED-MD codes apply the second log-difference to CPI and PPI. The official transform follows the standard codes, so the two price series enter as the second log-difference and HOUST enters as a log level. The check below recovers the applied order of each series by matching the processed column against candidate transforms of the raw level.
def applied_order(col):
raw = panel[col]; pr = proc[col].dropna()
cands = {"level": raw, "log": np.log(raw), "diff": raw.diff(),
"dlog": np.log(raw).diff(), "ddlog": np.log(raw).diff().diff()}
return max(cands, key=lambda k: pr.corr(cands[k].reindex(pr.index)))
print(f"{'series':12s} {'tcode':>5s} {'applied order'}")
for col in ["INDPRO","UNRATE","HOUST","CPIAUCSL","WPSFD49207"]:
print(f"{col:12s} {tc(col):>5} {applied_order(col)}")
series tcode applied order
INDPRO 5 dlog
UNRATE 2 diff
HOUST 4 log
CPIAUCSL 6 ddlog
WPSFD49207 6 ddlog
The price series enter as the second log-difference, which is the standard FRED-MD code 6, so the predictor reconstruction uses the standard codes. The target, built separately in Step 3 from the raw level, remains the first log-difference, so the predictor and the target differ for these series exactly as intended.
Outlier flagging and imputation#
The outlier rule turns extreme values into missing cells, which the EM step then fills together with the genuine gaps. Running the same call with imputation disabled isolates how many cells the transform and the outlier rule leave missing before the fill.
pre_noimp = mf.preprocessing.reprocess(
bundle, transform="official",
outliers="iqr", outlier_action="flag_as_nan", iqr_threshold=10.0,
impute="none", standardize="none",
)
print("NaN after t-code and outlier flag (pre-impute):", int(pre_noimp.panel.isna().sum().sum()))
print("NaN after EM factor imputation: ", int(proc.isna().sum().sum()))
NaN after t-code and outlier flag (pre-impute): 1086
NaN after EM factor imputation: 0
Leak-aware preprocessing for the run#
The full-sample call above lets the EM imputation see the whole sample, which is a
look-ahead. The faithful run attaches a stage policy so the preprocessing only uses data
available up to each origin. The scope origin_available makes the imputation leak-free,
and the update cadence is pinned so the expensive EM refit runs on a fixed schedule rather
than at every origin, which keeps the cost bounded without reintroducing a leak.
pp_policy = mf.window.stage_policy("origin_available", update=24)
feat_policy = mf.window.stage_policy("fit_window", update=24)
print("preprocessing policy scope:", pp_policy.scope, "| update:", pp_policy.update)
print("feature policy scope: ", feat_policy.scope, "| update:", feat_policy.update)
preprocessing policy scope: origin_available | update: 24
feature policy scope: fit_window | update: 24
Cell view#
The preprocessing is a spec-level stage shared by every model and transformation cell of a target. Because the transformation codes are fixed and only the per-origin imputation changes, the result is cached on the origin position and reused across all arms and horizons of that target, so the EM step is paid once per origin rather than once per cell.
Step 5. Feature cases#
Paper to package#
The five building blocks are factors (F), the stationarised predictors (X), moving-average rotations (MARX), moving-average factors (MAF), and raw levels (Level). The paper uses eight factors, a maximum lag of twelve for every block, and two components for the moving-average factors. The block X and the factor block F carry lags zero through twelve, and the lags of the target are always included.
A short caution on the convenience interface. The package accepts a feature_specification
string such as “F-X-MARX-Level”, but that shortcut uses the package default lag depth of
zero and one, which is not the paper. The paper depth of zero through twelve is set by
building the blocks explicitly with the step helpers, which is what the cell below does. The
moving-average factor block is computed per variable, so it yields two components for each of
the predictors.
fe = mf.feature_engineering
preds = [c for c in proc.columns if c != "INDPRO"]
# augmented panel: stationary predictors plus raw level copies for the Level block
aug = proc.copy()
for c in preds:
aug["LEVEL__" + c] = panel[c]
level_cols = ["LEVEL__" + c for c in preds]
def paper_steps(case):
parts = case.split("-"); steps = []
if "F" in parts:
steps.append(fe.pca_step(name="F_raw", columns=preds, n_components=8,
scale=True, include=False, fit_policy="full_sample"))
steps.append(fe.lag_step(name="F", input="F_raw", lags=range(0, 13), include=True))
if "X" in parts:
steps.append(fe.lag_step(name="X", columns=preds, lags=range(0, 13), include=True))
if "MARX" in parts:
steps.append(fe.marx_step(name="MARX_X", columns=preds, max_lag=12,
scale_lags=False, include=True))
if "MAF" in parts:
steps.append(fe.maf_step(name="MAF_X", columns=preds, max_lag=12, n_components=2,
scale=False, include=True, fit_policy="full_sample"))
if "Level" in parts:
steps.append(fe.lag_step(name="Level", columns=level_cols, lags=range(0, 1), include=True))
return steps
print(f"predictors = {len(preds)}; target lags 0-12 always included (13 columns)")
print(f"{'feature case':18s} {'rows':>5s} {'cols':>6s}")
for case in ["F", "X", "MARX", "MAF", "Level", "F-X-MARX-Level"]:
fs = fe.build_features(aug, target="INDPRO", horizon=1,
feature_steps=paper_steps(case), target_lags=range(0, 13),
target_transform="level", drop_missing=True)
print(f"{case:18s} {fs.X.shape[0]:5d} {fs.X.shape[1]:6d}")
predictors = 126; target lags 0-12 always included (13 columns)
feature case rows cols
F 693 117
X 693 1651
MARX 693 1525
MAF 693 265
Level 309 139
F-X-MARX-Level 309 3393
The column counts decompose cleanly. The factor block is eight factors over thirteen lags, which is one hundred and four, plus thirteen target lags, giving one hundred and seventeen. The predictor block is one hundred and twenty-six series over thirteen lags, which is one thousand six hundred and thirty-eight, plus thirteen target lags. The moving-average rotation is one hundred and twenty-six series over twelve windows, which is one thousand five hundred and twelve, plus thirteen. The moving-average factor block is two components for each of the one hundred and twenty-six series, which is two hundred and fifty-two, plus thirteen. The Level block adds the raw levels and loses more early rows to the level lags. The combined case is the union of the blocks it names, and it is high-dimensional by construction, which is the regime where the random forest and the regularised models earn their keep.
The drop in the row count for any case that includes Level or long lags is the leading rows
removed by drop_missing, since a thirteen-lag block cannot be evaluated until thirteen
observations have accrued.
Reproducible factor extraction#
A subtle point underlies the factor block. For panels of this shape, more than five
hundred rows with a small number of factors, scikit-learn’s PCA selects a randomized
singular value decomposition by default, and that solver draws on the global random
state, so the factors it returns differ from one run to the next unless a seed is fixed.
A factor that changes run to run makes the factor-model benchmark and every factor-based
feature non-reproducible, which is unacceptable for a replication. The macroforecast
package therefore routes every principal-component extraction through a single helper
that uses the exact full decomposition for panels of ordinary width, matching the
decomposition used by the imputation step, and falls back to a seeded randomized solver
only for very wide panels. The factors are exact and identical across runs, so no seed
needs to be set by hand, which is why the cells above pass no random_state.
The 16 information sets#
A random-forest arm is one of the sixteen admissible combinations of the five blocks. Each arm reads the union of the blocks its name lists, so the same five step helpers generate the whole grid.
F F-X F-MARX F-MAF F-Level
F-X-MARX F-X-MAF F-X-Level F-X-MARX-Level
X MARX MAF
X-MARX X-MAF X-Level X-MARX-Level
Cell view#
A feature cell is one (transformation set, target, horizon) triple. The block steps are shared across the models that consume them, so for a given target and horizon the feature matrix of a transformation set is built once and reused by every model arm that uses that set. In the faithful run the factor and moving-average-factor steps use the expanding fit policy so they never see the future, while the illustrative build above uses the full-sample policy for speed.
Step 6. Models and arms#
Paper to package#
The seven models all exist as package factories with a common fit interface that takes a
feature matrix and a target and returns a fitted object with a predict method. The paper
hyperparameters map onto the factory arguments as follows. The random forest uses two
hundred trees, a minimum leaf size of five, and a feature subsample of one third at each
split. The boosted trees use a depth of five. The factor model and the autoregression are
ordinary least squares with the orders fixed at twelve lags and eight factors. The
penalised models choose their penalty by cross-validation in the run; here they are fitted
at a fixed small penalty to demonstrate that they are operational.
One caution before fitting: the target source#
The feature matrix is built from the stationarised panel, but the target must be built from the raw level, as in Step 3. Building the target from the stationarised panel reintroduces the double-transform, because the stationarised industrial-production column is already a log-difference and a second average-log-growth on top of it is a second difference. The cell below therefore takes the target from the raw level and the features from the stationarised panel, then aligns them.
import numpy as np
# target from the RAW level (Step 3); features from the STATIONARISED panel (Step 5)
y = fe.direct_target(panel, target="INDPRO", horizons=[1],
transform="average_log_growth").iloc[:, 0]
F_steps = [fe.pca_step(name="F_raw", columns=preds, n_components=8, scale=True,
include=False, fit_policy="full_sample"),
fe.lag_step(name="F", input="F_raw", lags=range(0, 13), include=True)]
Xmat = fe.build_features(proc, target="INDPRO", horizon=1, feature_steps=F_steps,
target_lags=range(0, 13), target_transform="level",
drop_missing=True).X
d = Xmat.join(y.rename("y"), how="inner").dropna()
Xa, ya = d.drop(columns="y"), d["y"]
print("target scale: mean = %.4f std = %.4f (correct growth scale)" % (ya.mean(), ya.std()))
train = Xa.index < "2001-01-01"
Xtr, ytr, Xte, yte = Xa[train], ya[train], Xa[~train], ya[~train]
print("feature matrix:", Xa.shape, " train:", int(train.sum()), " test:", int((~train).sum()))
target scale: mean = 0.0021 std = 0.0075 (correct growth scale)
feature matrix: (693, 117) train: 490 test: 203
def rmse(a, b):
return float(np.sqrt(np.mean((np.asarray(a) - np.asarray(b)) ** 2)))
arms = [
("Random Forest", "200 trees, leaf 5, mtry #Z/3",
lambda: mf.random_forest(Xtr, ytr, n_estimators=200, min_samples_leaf=5,
max_features=1/3, random_state=123)),
("Boosted Trees", "depth 5, lr 0.1, 200 steps",
lambda: mf.gradient_boosting(Xtr, ytr, max_depth=5, n_estimators=200,
learning_rate=0.1, random_state=123)),
("Elastic Net", "alpha 1e-3, l1 0.5",
lambda: mf.elastic_net(Xtr, ytr, alpha=1e-3, l1_ratio=0.5)),
("Adaptive Lasso", "gamma 1, ridge init",
lambda: mf.adaptive_lasso(Xtr, ytr, gamma=1.0, initial="ridge", alpha=1e-3)),
("Linear Boosting", "glmboost, 200 it, lr 0.1",
lambda: mf.glmboost(Xtr, ytr, n_iter=200, learning_rate=0.1)),
]
print(f"{'model':16s} {'hyperparameters':30s} {'test RMSE':>10s}")
for name, hp, make in arms:
fit = make()
print(f"{name:16s} {hp:30s} {rmse(yte, fit.predict(Xte)):10.5f}")
# benchmark and nested contender
fm = mf.far(Xtr, ytr, n_factors=8, n_lag=12, random_state=123)
ar = mf.ar(ytr, n_lag=12)
print(f"{'FM (benchmark)':16s} {'n_factors 8, n_lag 12':30s} {rmse(yte, fm.predict(Xte)):10.5f}")
print(f"{'AR (contender)':16s} {'n_lag 12':30s} {rmse(yte, ar.predict(Xte)):10.5f}")
model hyperparameters test RMSE
Random Forest 200 trees, leaf 5, mtry #Z/3 0.00645
Boosted Trees depth 5, lr 0.1, 200 steps 0.00677
Elastic Net alpha 1e-3, l1 0.5 0.00615
Adaptive Lasso gamma 1, ridge init 0.00630
Linear Boosting glmboost, 200 it, lr 0.1 0.00617
FM (benchmark) n_factors 8, n_lag 12 0.00665
AR (contender) n_lag 12 0.00716
The pattern is the one the paper reports for this case. The autoregression is the weakest, the factor model is the benchmark, and the machine-learning models on the factor features edge below the benchmark. The random forest over the factor block divides into the factor model at about 0.97, which is close to the appendix figure of 0.95 for industrial production at horizon one. The numbers are not the appendix numbers, because this is a single split with a full-sample factor fit rather than the full pseudo-out-of-sample run, but the ranking is correct and confirms that all seven models are operational under the paper hyperparameters.
Cell view#
A model cell is one (model, transformation set, target, target type, horizon) tuple. The benchmark FM and the contender AR are fitted once per (target, target type, horizon) and shared as the denominator and the data-poor reference. Each machine-learning arm reads the feature matrix of its transformation set and is fitted per origin in the run. The penalty of the penalised arms and the step count of the boosted arm are chosen by cross-validation inside each origin, which is the only per-cell tuning the design carries.
Step 7. Pseudo-out-of-sample window#
Paper to package#
The paper uses an expanding estimation window that starts in 1960M01 and a pseudo-out-of-
sample period that runs from 1980M01 to 2017M12. The package builds this with
from_cutoffs. Two cadence settings carry the design. The model is re-estimated at every
origin, set by retrain_every=1, while the hyperparameters are re-selected only every two
years, set by retune_every=24 with retune_on_retrain=False and reuse_params=True.
This decoupling matters because the autoregressive benchmark forecasts recursively from its
training tail and ignores the test predictors, so freezing the fit for two years would let
its forecast go stale and inflate every model’s relative RMSE.
window = mf.window.from_cutoffs(
estimation_start="1960-01", test_start="1980-01", test_end="2017-12",
mode="expanding", horizon=1,
retrain_every=1, retune_every=24, retune_on_retrain=False, reuse_params=True,
val_method="last_block", val_size=60,
)
schedule = window.origins(panel.index)
print("POOS origins:", len(schedule))
print("test span: ", schedule["test_start"].iloc[0].date(),
"->", schedule["test_start"].iloc[-1].date())
print("estimation: ", schedule["estimation_mode"].iloc[0],
"from", schedule["estimation_start"].iloc[0].date(), "(fixed)")
print("train obs grow:", int(schedule["n_estimation"].iloc[0]),
"->", int(schedule["n_estimation"].iloc[-1]))
print("refit (retrain=True):", int(schedule["retrain"].sum()), "of", len(schedule),
"origins (retrain_every=1)")
POOS origins: 456
test span: 1980-01-01 -> 2017-12-01
estimation: expanding from 1960-01-01 (fixed)
train obs grow: 240 -> 695
refit (retrain=True): 456 of 456 origins (retrain_every=1)
The 456 origins span every month from 1980M01 to 2017M12. The estimation window keeps its 1960M01 start and grows with each origin, from 240 observations to 695. The model refits at all 456 origins.
Why the cadence is decoupled#
The earlier scaffold used a single cadence that refit only every twenty-four months. The contrast below shows the consequence. Under that setting the model, and with it the autoregressive benchmark, refits at only 19 of the 456 origins and is frozen in between. Because the benchmark is the denominator of every relative RMSE, a stale benchmark inflates the whole table, which is the bug this step fixes.
buggy = mf.window.from_cutoffs(
estimation_start="1960-01", test_start="1980-01", test_end="2017-12",
mode="expanding", horizon=1, retrain_every=24,
val_method="last_block", val_size=60,
)
refit_fixed = int(window.origins(panel.index)["retrain"].sum())
refit_buggy = int(buggy.origins(panel.index)["retrain"].sum())
print(f"refit origins, fixed cadence (retrain_every=1): {refit_fixed} of 456")
print(f"refit origins, buggy cadence (retrain_every=24): {refit_buggy} of 456 (benchmark frozen between)")
refit origins, fixed cadence (retrain_every=1): 456 of 456
refit origins, buggy cadence (retrain_every=24): 19 of 456 (benchmark frozen between)
Cell view#
The window is shared by every cell of a target. Each origin defines one training slice and one test point, and the per-origin preprocessing and feature steps attach to it through the stage policies of Step 4. A cell walks the same 456 origins, refitting its model at each and re-selecting hyperparameters on the two-year cadence, so the schedule is identical across models and transformation sets and only the fitted values differ.
Step 8. Evaluation and execution#
Paper to package#
The paper evaluates forecasts by the root mean squared error, reports each model as a
relative RMSE against the FM benchmark, tests pairwise accuracy with the Diebold-Mariano
test, and summarises the best set with the Model Confidence Set. All four live in the
package. The pipeline computes them automatically through EvalSpec, which defaults to
the metrics rmse and relative_mse and the tests dm, cw and mcs. The
one subtlety is that the package reports relative_mse, the ratio of mean squared
errors, so the paper’s relative RMSE is its square root.
from macroforecast import metrics as M, tests as T
# small worked example of the evaluation primitives
rng = np.random.default_rng(0)
actual = pd.Series(rng.standard_normal(120))
fm_pred = actual + rng.standard_normal(120) * 0.9 # benchmark errors
rf_pred = actual + rng.standard_normal(120) * 0.8 # a better model
e_fm = (actual - fm_pred).to_numpy()
e_rf = (actual - rf_pred).to_numpy()
rel_mse = float(np.mean(e_rf**2) / np.mean(e_fm**2))
print("relative MSE (rf vs fm) :", round(rel_mse, 4))
print("relative RMSE :", round(rel_mse**0.5, 4), " (= sqrt of relative MSE)")
print("Diebold-Mariano (sq err):", str(T.dm_test(e_rf**2, e_fm**2))[:70])
relative MSE (rf vs fm) : 0.7162
relative RMSE : 0.8463 (= sqrt of relative MSE)
Diebold-Mariano (sq err): TestResult(statistic=-1.6403833514673867, p_value=0.10356620977927823,
Validation against the appendix ground truth#
The evaluation is exercised on the real run. We forecast industrial production at horizon one over the whole pseudo-out-of-sample period with the FM benchmark, the AR contender, and a random forest over the F-Level and the MARX transformation sets, applying every correction built in the previous steps: the raw-level target, the leak-aware preprocessing, the deterministic factors, the information-criterion order selection for AR and FM, and the per-origin refit cadence. The relative RMSE is then compared to the re-extracted appendix numbers. This is a multi-hour leak-free run, so the table below is the recorded result of that run rather than a live cell.
INDPRO, horizon 1, direct, pseudo-out-of-sample 1980-2017 (455 origins)
model abs RMSE rel RMSE appendix DM p-value
FM (bench) 0.00621 1.000 (0.006) -
AR 0.00648 1.042 1.06 0.062
RF F-Level 0.00612 0.985 0.94 0.391
RF MARX 0.00612 0.984 0.93 0.457
The FM benchmark matches the appendix absolute RMSE of 0.006. The AR relative RMSE of 1.042 is close to the appendix 1.06, and the Diebold-Mariano test agrees with the appendix that AR is the weaker model. The two random-forest specifications beat the benchmark, which is the direction the paper reports, although our gain of about one and a half percent is smaller than the appendix gain of five to seven percent.
Reading the random-forest gap#
The smaller random-forest gain is a genuine reconstruction difference, not a defect. A feature-importance check confirms the moving-average rotation is built correctly and is the signal the forest actually uses. On the MARX matrix the moving-average columns carry about 0.99 of the importance and the target lags only 0.01, so the forest is not collapsing onto the autoregressive component, and the small F-Level versus MARX difference matches the appendix, where the two are also within about one point. What remains is a uniform level difference between our random forest and the paper’s. The paper’s forest is a MATLAB TreeBagger and ours is the scikit-learn random forest, and the two differ in split rules and defaults even at identical hyperparameters; the exact FRED-MD vintage and the bootstrap seeds are also not recoverable. The paper frames its own exercise as a reconstructed-design replication rather than an exact-table replication, and a benchmark and a linear contender that match closely, with a random forest that reproduces the direction and the structure to within a few points, sit inside that tolerance.
Cell view and the full grid#
The single-target run above is one slice of the grid. The full study runs every target, horizon, transformation set, and target type as its own cell, each carrying the corrections of the previous steps, and the cross-arm and cross-horizon caches share the per-origin preprocessing and factors so the expensive imputation is paid once per origin rather than once per cell. The full grid is launched as a single resumable background job and reassembled into the relative-RMSE and Diebold-Mariano tables that mirror the appendix.
Appendix B ground-truth tables#
This companion page holds the relative-RMSE numbers of online Appendix B of Goulet Coulombe, Leroux, Stevanovic, and Surprenant (2021), re-extracted directly from the appendix PDF and validated cell by cell. These are the targets the replication run must approach.
Every value is a ratio to the FM benchmark RMSE. The FM absolute RMSE that forms the denominator is printed above each table. AR is itself reported as a ratio to FM. Tables for the direct target come from appendix Tables 3 to 8 and tables for the path-average (SGR) target come from appendix Tables 9 to 14. At horizon 1 the direct and path-average numbers are identical by construction.
The machine-readable form is data/clss2021_appendix_ground_truth.csv (984 rows, keyed by horizon, target type, model, and information set).
During re-extraction we found that an earlier hand-made extract had transcription errors in several cells, for example the random forest F-MARX row at horizon 1, so the numbers here supersede any earlier extract.
Direct target (appendix Tables 3 to 8)#
Horizon 1 (direct)#
Horizon 1, direct — FM absolute RMSE (denominator): INDPRO 0.006, EMP 0.001, UNRATE 0.148, INCOME 0.007, CONS 0.004, RETAIL 0.011, HOUST 0.072, M2 0.003, CPI 0.002, PPI 0.006
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.06 |
1.03 |
1.04 |
1.06 |
1.03 |
1.02 |
1.01 |
1.01 |
1.03 |
1.01 |
Adaptive Lasso |
F |
0.96 |
0.97 |
0.97 |
1.00 |
1.03 |
1.04 |
1.02 |
0.98 |
0.98 |
0.98 |
F-X |
0.95 |
1.03 |
0.96 |
1.01 |
1.08 |
1.09 |
1.02 |
0.99 |
1.06 |
1.00 |
|
F-MARX |
0.95 |
0.99 |
0.95 |
1.00 |
1.04 |
1.02 |
1.01 |
0.99 |
0.96 |
0.93 |
|
F-MAF |
0.94 |
0.99 |
0.95 |
1.01 |
1.04 |
1.05 |
1.02 |
1.00 |
1.05 |
1.02 |
|
F-Level |
0.96 |
1.02 |
0.95 |
1.00 |
1.02 |
1.04 |
1.02 |
1.00 |
1.02 |
0.99 |
|
F-X-MARX |
1.09 |
1.01 |
0.95 |
1.01 |
1.06 |
1.03 |
1.01 |
0.97 |
1.04 |
0.97 |
|
F-X-MAF |
0.95 |
1.01 |
0.96 |
1.02 |
1.06 |
1.07 |
1.02 |
0.98 |
1.05 |
1.01 |
|
F-X-Level |
0.96 |
1.02 |
0.96 |
1.00 |
1.04 |
1.10 |
1.02 |
0.98 |
1.03 |
1.01 |
|
F-X-MARX-Level |
1.10 |
1.01 |
0.95 |
1.00 |
1.06 |
1.05 |
1.01 |
0.98 |
1.03 |
0.97 |
|
X |
0.95 |
1.03 |
0.96 |
1.00 |
1.08 |
1.05 |
1.03 |
0.99 |
1.04 |
1.02 |
|
MARX |
0.96 |
1.01 |
0.96 |
1.00 |
1.06 |
1.03 |
1.01 |
0.97 |
0.96 |
0.97 |
|
MAF |
0.98 |
1.00 |
0.96 |
1.01 |
1.08 |
1.05 |
1.03 |
1.00 |
1.09 |
1.04 |
|
X-MARX |
1.15 |
1.00 |
0.95 |
1.00 |
1.07 |
1.04 |
1.01 |
0.99 |
1.09 |
0.97 |
|
X-MAF |
1.23 |
1.02 |
0.95 |
1.00 |
1.06 |
1.09 |
1.03 |
0.98 |
1.03 |
1.00 |
|
X-Level |
0.96 |
1.02 |
0.96 |
1.00 |
1.05 |
1.06 |
1.03 |
0.98 |
1.03 |
1.01 |
|
X-MARX-Level |
1.13 |
1.01 |
0.95 |
1.00 |
1.06 |
1.04 |
1.01 |
0.97 |
1.03 |
0.96 |
|
Elastic Net |
F |
0.97 |
0.97 |
0.97 |
1.01 |
1.03 |
1.04 |
1.00 |
0.98 |
0.98 |
0.97 |
F-X |
0.96 |
1.01 |
0.96 |
1.01 |
1.04 |
1.04 |
1.01 |
1.00 |
1.04 |
1.00 |
|
F-MARX |
0.95 |
0.98 |
0.94 |
1.00 |
1.05 |
1.02 |
1.00 |
0.99 |
0.97 |
0.92 |
|
F-MAF |
0.95 |
0.98 |
0.95 |
1.00 |
1.04 |
1.06 |
1.01 |
0.99 |
1.04 |
1.03 |
|
F-Level |
0.96 |
0.98 |
0.95 |
1.01 |
1.03 |
1.02 |
0.97 |
1.00 |
1.00 |
0.99 |
|
F-X-MARX |
1.09 |
1.01 |
0.95 |
1.00 |
1.05 |
1.04 |
1.00 |
0.98 |
1.19 |
0.96 |
|
F-X-MAF |
0.95 |
1.01 |
0.96 |
1.00 |
1.05 |
1.10 |
1.02 |
0.99 |
1.06 |
0.99 |
|
F-X-Level |
0.96 |
1.01 |
0.96 |
1.01 |
1.04 |
1.03 |
1.02 |
0.99 |
1.03 |
0.99 |
|
F-X-MARX-Level |
1.08 |
1.01 |
0.95 |
1.00 |
1.05 |
1.04 |
1.00 |
0.98 |
1.19 |
0.97 |
|
X |
0.96 |
1.02 |
0.96 |
1.00 |
1.04 |
1.05 |
1.02 |
0.98 |
1.03 |
0.99 |
|
MARX |
0.96 |
1.00 |
0.95 |
1.00 |
1.04 |
1.03 |
0.99 |
0.97 |
0.97 |
0.95 |
|
MAF |
0.97 |
0.99 |
0.96 |
1.01 |
1.05 |
1.06 |
1.03 |
1.00 |
1.10 |
1.03 |
|
X-MARX |
1.14 |
1.00 |
0.95 |
1.00 |
1.06 |
1.04 |
1.00 |
0.98 |
1.12 |
0.96 |
|
X-MAF |
0.95 |
1.01 |
0.96 |
1.00 |
1.06 |
1.04 |
1.02 |
1.00 |
1.03 |
0.99 |
|
X-Level |
0.96 |
1.01 |
0.96 |
0.99 |
1.04 |
1.04 |
1.02 |
0.98 |
1.03 |
1.00 |
|
X-MARX-Level |
1.09 |
1.01 |
0.95 |
1.00 |
1.08 |
1.07 |
1.01 |
0.97 |
1.04 |
0.96 |
|
Linear Boosting |
F |
0.97 |
1.00 |
0.97 |
1.00 |
1.03 |
1.04 |
1.00 |
1.17 |
1.07 |
0.99 |
F-X |
0.98 |
1.02 |
0.96 |
1.00 |
1.07 |
1.05 |
1.04 |
1.06 |
1.08 |
1.02 |
|
F-MARX |
0.96 |
1.05 |
0.96 |
0.99 |
1.04 |
1.03 |
1.01 |
1.09 |
1.00 |
0.98 |
|
F-MAF |
0.94 |
0.95 |
0.94 |
1.01 |
1.05 |
1.03 |
1.02 |
1.01 |
1.06 |
1.03 |
|
F-Level |
0.95 |
0.99 |
0.96 |
1.01 |
1.03 |
1.04 |
1.02 |
1.04 |
1.01 |
1.01 |
|
F-X-MARX |
0.94 |
1.05 |
0.96 |
1.00 |
1.07 |
1.12 |
1.04 |
1.08 |
1.14 |
0.96 |
|
F-X-MAF |
1.23 |
1.00 |
0.95 |
0.99 |
1.06 |
1.05 |
1.05 |
0.99 |
1.03 |
1.03 |
|
F-X-Level |
0.94 |
0.99 |
0.96 |
1.00 |
1.07 |
1.03 |
1.03 |
1.02 |
1.09 |
1.01 |
|
F-X-MARX-Level |
0.94 |
0.99 |
0.94 |
0.99 |
1.07 |
1.05 |
1.03 |
1.02 |
0.98 |
0.94 |
|
X |
0.96 |
1.08 |
0.96 |
1.02 |
1.08 |
1.06 |
1.04 |
1.06 |
1.22 |
1.02 |
|
MARX |
0.95 |
1.10 |
0.95 |
0.99 |
1.06 |
1.04 |
1.00 |
1.07 |
1.09 |
0.97 |
|
MAF |
0.99 |
1.00 |
0.96 |
1.00 |
1.06 |
1.04 |
1.02 |
1.02 |
1.19 |
1.04 |
|
X-MARX |
0.96 |
1.08 |
0.94 |
1.00 |
1.06 |
1.10 |
1.03 |
1.09 |
1.04 |
0.97 |
|
X-MAF |
0.96 |
1.02 |
0.96 |
1.02 |
1.11 |
1.06 |
1.04 |
0.98 |
1.02 |
1.01 |
|
X-Level |
0.95 |
1.05 |
0.96 |
1.00 |
1.06 |
1.06 |
1.05 |
1.04 |
1.03 |
1.01 |
|
X-MARX-Level |
0.94 |
1.01 |
0.94 |
1.06 |
1.10 |
1.03 |
1.03 |
1.03 |
1.03 |
1.02 |
|
Random Forest |
F |
0.95 |
0.99 |
0.97 |
0.97 |
1.05 |
1.04 |
1.04 |
0.97 |
1.00 |
0.97 |
F-X |
0.96 |
1.00 |
0.95 |
0.98 |
1.05 |
1.04 |
1.04 |
0.96 |
1.00 |
0.97 |
|
F-MARX |
0.93 |
0.95 |
0.94 |
0.95 |
1.05 |
1.03 |
1.03 |
0.96 |
0.97 |
0.95 |
|
F-MAF |
0.96 |
0.97 |
0.97 |
0.98 |
1.04 |
1.04 |
1.04 |
0.97 |
1.01 |
0.97 |
|
F-Level |
0.94 |
1.00 |
0.96 |
1.02 |
1.05 |
1.05 |
1.04 |
0.96 |
1.00 |
0.98 |
|
F-X-MARX |
0.93 |
0.96 |
0.95 |
0.96 |
1.05 |
1.04 |
1.03 |
0.96 |
0.98 |
0.95 |
|
F-X-MAF |
0.94 |
0.98 |
0.95 |
0.97 |
1.06 |
1.04 |
1.05 |
0.96 |
0.99 |
0.98 |
|
F-X-Level |
0.95 |
0.99 |
0.95 |
1.00 |
1.05 |
1.04 |
1.05 |
0.95 |
1.00 |
0.98 |
|
F-X-MARX-Level |
0.92 |
0.94 |
0.95 |
0.97 |
1.05 |
1.04 |
1.04 |
0.96 |
0.97 |
0.95 |
|
X |
0.96 |
1.01 |
0.95 |
0.98 |
1.04 |
1.04 |
1.05 |
0.96 |
1.00 |
0.97 |
|
MARX |
0.93 |
0.95 |
0.95 |
0.94 |
1.06 |
1.03 |
1.03 |
0.97 |
0.97 |
0.95 |
|
MAF |
0.97 |
0.99 |
0.98 |
0.99 |
1.05 |
1.04 |
1.05 |
0.98 |
1.02 |
0.96 |
|
X-MARX |
0.93 |
0.96 |
0.94 |
0.96 |
1.05 |
1.03 |
1.04 |
0.96 |
0.98 |
0.95 |
|
X-MAF |
0.96 |
0.99 |
0.95 |
0.97 |
1.05 |
1.04 |
1.05 |
0.96 |
0.99 |
0.98 |
|
X-Level |
0.95 |
0.99 |
0.95 |
1.00 |
1.05 |
1.05 |
1.05 |
0.95 |
0.99 |
0.97 |
|
X-MARX-Level |
0.92 |
0.95 |
0.94 |
0.98 |
1.06 |
1.04 |
1.04 |
0.96 |
0.96 |
0.95 |
|
Boosted Trees |
F |
0.97 |
1.06 |
1.01 |
1.00 |
1.05 |
1.03 |
1.05 |
1.04 |
0.98 |
0.99 |
F-X |
0.99 |
1.03 |
0.96 |
1.00 |
1.05 |
1.05 |
1.07 |
1.00 |
0.98 |
0.98 |
|
F-MARX |
0.96 |
1.02 |
0.94 |
1.01 |
1.06 |
1.03 |
1.03 |
1.00 |
0.98 |
0.97 |
|
F-MAF |
0.96 |
1.06 |
0.98 |
1.03 |
1.06 |
1.05 |
1.08 |
0.99 |
1.00 |
0.98 |
|
F-Level |
0.95 |
1.04 |
1.00 |
1.06 |
1.07 |
1.05 |
1.10 |
0.98 |
1.01 |
1.01 |
|
F-X-MARX |
0.98 |
1.01 |
0.97 |
0.98 |
1.06 |
1.04 |
1.06 |
0.99 |
1.01 |
0.99 |
|
F-X-MAF |
0.98 |
1.04 |
0.96 |
1.02 |
1.06 |
1.03 |
1.07 |
0.99 |
0.98 |
1.00 |
|
F-X-Level |
0.96 |
1.09 |
0.96 |
1.04 |
1.04 |
1.05 |
1.08 |
0.98 |
1.01 |
1.02 |
|
F-X-MARX-Level |
0.97 |
1.04 |
0.96 |
0.99 |
1.07 |
1.02 |
1.07 |
0.99 |
1.00 |
0.99 |
|
X |
1.00 |
1.10 |
0.97 |
1.00 |
1.04 |
1.04 |
1.10 |
0.99 |
1.00 |
1.00 |
|
MARX |
0.95 |
1.03 |
0.96 |
1.00 |
1.07 |
1.05 |
1.05 |
1.02 |
0.98 |
0.97 |
|
MAF |
0.97 |
1.07 |
0.99 |
1.04 |
1.05 |
1.05 |
1.09 |
1.03 |
1.02 |
0.99 |
|
X-MARX |
0.96 |
0.97 |
0.95 |
1.01 |
1.06 |
1.05 |
1.08 |
1.01 |
0.99 |
0.97 |
|
X-MAF |
0.98 |
1.07 |
0.97 |
0.99 |
1.05 |
1.05 |
1.07 |
1.01 |
1.00 |
1.00 |
|
X-Level |
0.96 |
1.06 |
0.97 |
1.03 |
1.05 |
1.06 |
1.10 |
0.99 |
0.99 |
1.01 |
|
X-MARX-Level |
0.97 |
1.02 |
0.96 |
0.98 |
1.07 |
1.02 |
1.07 |
0.97 |
0.99 |
0.98 |
Horizon 3 (direct)#
Horizon 3, direct — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.088, INCOME 0.003, CONS 0.002, RETAIL 0.005, HOUST 0.033, M2 0.003, CPI 0.002, PPI 0.004
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.08 |
1.03 |
1.04 |
1.09 |
1.06 |
1.01 |
0.96 |
1.00 |
1.01 |
1.00 |
Adaptive Lasso |
F |
0.95 |
0.91 |
0.94 |
0.98 |
0.99 |
1.07 |
1.05 |
0.98 |
1.01 |
0.99 |
F-X |
0.99 |
0.98 |
0.95 |
1.01 |
1.03 |
1.00 |
0.96 |
1.04 |
1.07 |
0.99 |
|
F-MARX |
1.06 |
1.02 |
0.89 |
1.09 |
1.06 |
1.05 |
0.97 |
0.99 |
1.07 |
0.98 |
|
F-MAF |
1.10 |
1.03 |
0.90 |
1.01 |
1.04 |
1.03 |
0.97 |
1.03 |
1.12 |
1.03 |
|
F-Level |
1.01 |
1.04 |
1.41 |
1.06 |
1.01 |
1.06 |
1.18 |
0.95 |
1.26 |
1.10 |
|
F-X-MARX |
0.96 |
0.94 |
0.89 |
1.05 |
1.04 |
1.02 |
0.97 |
0.96 |
1.06 |
0.94 |
|
F-X-MAF |
0.98 |
0.95 |
0.91 |
1.00 |
1.01 |
0.99 |
0.96 |
1.04 |
1.06 |
1.00 |
|
F-X-Level |
0.97 |
0.98 |
0.93 |
1.02 |
1.02 |
1.01 |
0.96 |
1.04 |
1.06 |
0.98 |
|
F-X-MARX-Level |
0.96 |
0.95 |
0.90 |
1.06 |
1.03 |
1.05 |
0.96 |
0.94 |
1.06 |
0.96 |
|
X |
0.99 |
0.98 |
0.95 |
1.02 |
1.03 |
1.01 |
0.97 |
1.03 |
1.06 |
0.98 |
|
MARX |
1.10 |
1.08 |
0.89 |
1.13 |
1.09 |
1.11 |
0.97 |
0.96 |
1.09 |
0.97 |
|
MAF |
1.10 |
1.08 |
0.92 |
1.01 |
1.11 |
1.09 |
0.98 |
1.09 |
1.15 |
1.05 |
|
X-MARX |
0.94 |
0.95 |
0.89 |
1.03 |
1.03 |
1.03 |
0.97 |
0.97 |
1.03 |
0.94 |
|
X-MAF |
0.98 |
0.95 |
0.91 |
1.00 |
1.02 |
0.99 |
0.97 |
1.03 |
1.07 |
0.99 |
|
X-Level |
0.98 |
0.99 |
0.93 |
1.02 |
1.01 |
1.01 |
0.96 |
1.04 |
1.07 |
0.98 |
|
X-MARX-Level |
0.96 |
0.95 |
0.90 |
1.06 |
1.03 |
1.04 |
0.96 |
0.94 |
1.07 |
0.97 |
|
Elastic Net |
F |
0.94 |
0.91 |
0.92 |
0.98 |
1.00 |
1.07 |
0.97 |
0.98 |
1.00 |
0.99 |
F-X |
0.99 |
0.98 |
0.92 |
1.01 |
1.03 |
1.00 |
0.99 |
1.01 |
1.06 |
0.99 |
|
F-MARX |
1.06 |
0.92 |
0.97 |
1.12 |
1.09 |
1.06 |
0.98 |
0.96 |
1.03 |
0.96 |
|
F-MAF |
1.08 |
0.98 |
0.95 |
1.00 |
1.05 |
1.03 |
1.00 |
0.99 |
1.07 |
1.03 |
|
F-Level |
0.97 |
1.06 |
1.15 |
1.06 |
1.02 |
1.02 |
0.99 |
0.98 |
1.11 |
1.08 |
|
F-X-MARX |
0.96 |
0.94 |
0.89 |
1.07 |
1.03 |
1.02 |
0.97 |
0.96 |
1.04 |
0.94 |
|
F-X-MAF |
0.98 |
0.96 |
0.92 |
1.00 |
1.01 |
1.00 |
0.99 |
1.01 |
1.07 |
0.99 |
|
F-X-Level |
0.97 |
0.99 |
0.92 |
1.02 |
1.02 |
1.02 |
1.00 |
1.03 |
1.08 |
0.98 |
|
F-X-MARX-Level |
0.95 |
0.96 |
0.90 |
1.07 |
1.03 |
1.05 |
0.98 |
0.95 |
1.04 |
0.94 |
|
X |
0.98 |
0.99 |
0.92 |
1.02 |
1.03 |
1.00 |
0.99 |
1.01 |
1.07 |
0.99 |
|
MARX |
1.13 |
0.96 |
0.97 |
1.13 |
1.13 |
1.06 |
0.97 |
0.95 |
1.02 |
0.96 |
|
MAF |
1.10 |
1.01 |
0.98 |
1.00 |
1.11 |
1.04 |
1.02 |
1.00 |
1.08 |
1.06 |
|
X-MARX |
0.96 |
0.95 |
0.89 |
1.07 |
1.03 |
1.03 |
0.97 |
0.96 |
1.03 |
0.93 |
|
X-MAF |
0.98 |
0.96 |
0.92 |
1.00 |
1.01 |
1.00 |
0.99 |
1.01 |
1.07 |
1.00 |
|
X-Level |
0.98 |
0.99 |
0.92 |
1.02 |
1.02 |
1.02 |
1.00 |
1.03 |
1.09 |
0.98 |
|
X-MARX-Level |
0.96 |
0.97 |
0.89 |
1.08 |
1.03 |
1.05 |
0.98 |
0.95 |
1.05 |
0.94 |
|
Linear Boosting |
F |
0.96 |
0.96 |
0.90 |
0.98 |
1.00 |
1.04 |
0.98 |
1.23 |
1.08 |
1.00 |
F-X |
0.96 |
1.02 |
0.93 |
1.01 |
1.09 |
1.04 |
0.96 |
1.08 |
1.11 |
1.00 |
|
F-MARX |
1.03 |
1.10 |
0.91 |
1.17 |
1.07 |
1.13 |
0.99 |
1.10 |
1.08 |
0.96 |
|
F-MAF |
1.05 |
0.95 |
0.97 |
0.98 |
1.01 |
1.02 |
0.98 |
1.04 |
1.08 |
1.07 |
|
F-Level |
0.92 |
1.01 |
0.95 |
1.01 |
1.02 |
1.07 |
0.96 |
1.00 |
1.08 |
1.03 |
|
F-X-MARX |
0.96 |
1.06 |
0.89 |
1.08 |
1.06 |
1.08 |
1.00 |
1.12 |
1.07 |
0.95 |
|
F-X-MAF |
0.98 |
0.91 |
0.89 |
0.99 |
1.02 |
1.02 |
0.98 |
0.95 |
1.04 |
0.99 |
|
F-X-Level |
0.96 |
0.98 |
0.91 |
1.01 |
1.04 |
1.02 |
0.98 |
1.02 |
1.03 |
0.98 |
|
F-X-MARX-Level |
0.96 |
1.00 |
0.88 |
1.03 |
1.04 |
1.08 |
0.99 |
1.04 |
1.00 |
0.96 |
|
X |
1.02 |
1.12 |
0.94 |
1.03 |
1.09 |
1.02 |
0.97 |
1.10 |
1.09 |
0.99 |
|
MARX |
1.08 |
1.20 |
0.94 |
1.14 |
1.13 |
1.16 |
0.99 |
1.08 |
1.09 |
0.98 |
|
MAF |
1.11 |
1.02 |
0.97 |
0.99 |
1.06 |
1.04 |
1.00 |
1.13 |
1.17 |
1.04 |
|
X-MARX |
0.99 |
1.14 |
0.89 |
1.05 |
1.06 |
1.12 |
1.00 |
1.13 |
1.07 |
0.96 |
|
X-MAF |
0.99 |
0.93 |
0.89 |
1.00 |
1.05 |
1.02 |
0.98 |
0.96 |
1.06 |
0.99 |
|
X-Level |
0.99 |
1.01 |
0.94 |
1.02 |
1.04 |
1.04 |
0.98 |
1.04 |
1.00 |
0.98 |
|
X-MARX-Level |
0.96 |
1.01 |
0.88 |
1.08 |
1.03 |
1.10 |
1.00 |
1.06 |
1.01 |
0.95 |
|
Random Forest |
F |
0.97 |
1.00 |
0.93 |
0.98 |
1.00 |
1.00 |
0.94 |
0.96 |
0.94 |
0.97 |
F-X |
1.01 |
1.02 |
0.93 |
1.00 |
1.03 |
1.03 |
0.95 |
0.99 |
0.96 |
0.97 |
|
F-MARX |
0.88 |
0.87 |
0.84 |
0.96 |
1.01 |
1.04 |
0.95 |
0.98 |
0.97 |
0.97 |
|
F-MAF |
1.02 |
0.98 |
0.92 |
0.98 |
1.02 |
1.02 |
0.94 |
1.00 |
0.98 |
0.97 |
|
F-Level |
0.96 |
1.00 |
0.94 |
1.04 |
0.99 |
1.05 |
0.95 |
0.95 |
1.03 |
1.05 |
|
F-X-MARX |
0.88 |
0.87 |
0.84 |
0.97 |
1.02 |
1.03 |
0.95 |
0.98 |
0.98 |
0.98 |
|
F-X-MAF |
1.00 |
0.98 |
0.91 |
0.99 |
1.02 |
1.03 |
0.95 |
1.01 |
0.98 |
0.98 |
|
F-X-Level |
0.97 |
1.01 |
0.92 |
1.01 |
1.01 |
1.04 |
0.96 |
0.94 |
1.00 |
1.03 |
|
F-X-MARX-Level |
0.89 |
0.88 |
0.83 |
0.98 |
1.01 |
1.04 |
0.96 |
0.96 |
0.97 |
1.00 |
|
X |
1.03 |
1.05 |
0.95 |
0.99 |
1.02 |
1.03 |
0.95 |
0.98 |
0.95 |
0.97 |
|
MARX |
0.86 |
0.88 |
0.84 |
0.97 |
1.01 |
1.04 |
0.95 |
0.97 |
0.97 |
0.97 |
|
MAF |
1.04 |
1.05 |
0.95 |
0.99 |
1.02 |
1.02 |
0.95 |
1.00 |
0.97 |
0.98 |
|
X-MARX |
0.88 |
0.88 |
0.84 |
0.96 |
1.02 |
1.04 |
0.96 |
0.98 |
0.98 |
0.97 |
|
X-MAF |
1.01 |
1.01 |
0.93 |
0.98 |
1.02 |
1.03 |
0.96 |
1.00 |
0.98 |
0.98 |
|
X-Level |
0.99 |
1.04 |
0.95 |
1.01 |
1.01 |
1.05 |
0.96 |
0.95 |
0.99 |
1.02 |
|
X-MARX-Level |
0.89 |
0.87 |
0.84 |
0.97 |
1.01 |
1.04 |
0.96 |
0.96 |
0.98 |
0.99 |
|
Boosted Trees |
F |
0.96 |
1.10 |
0.97 |
0.98 |
1.05 |
1.02 |
0.97 |
1.01 |
0.95 |
1.00 |
F-X |
1.01 |
1.07 |
0.94 |
1.00 |
1.04 |
1.06 |
0.96 |
1.06 |
0.98 |
1.00 |
|
F-MARX |
0.90 |
0.98 |
0.86 |
0.97 |
1.03 |
1.05 |
0.95 |
0.99 |
0.99 |
1.00 |
|
F-MAF |
0.98 |
1.12 |
0.96 |
1.01 |
1.09 |
1.06 |
0.95 |
1.01 |
0.95 |
0.98 |
|
F-Level |
0.96 |
1.05 |
0.97 |
1.12 |
1.01 |
1.05 |
1.03 |
0.99 |
1.05 |
1.07 |
|
F-X-MARX |
0.91 |
0.96 |
0.86 |
0.97 |
1.04 |
1.05 |
0.94 |
1.00 |
1.00 |
0.99 |
|
F-X-MAF |
1.01 |
1.07 |
0.92 |
0.99 |
1.04 |
1.06 |
0.93 |
1.02 |
1.00 |
1.00 |
|
F-X-Level |
0.98 |
1.07 |
0.92 |
0.99 |
1.06 |
1.11 |
0.98 |
0.99 |
1.05 |
1.08 |
|
F-X-MARX-Level |
0.90 |
0.94 |
0.86 |
0.99 |
1.05 |
1.01 |
0.92 |
0.97 |
1.04 |
1.01 |
|
X |
1.02 |
1.08 |
0.91 |
1.01 |
1.04 |
1.06 |
0.95 |
1.05 |
1.01 |
1.02 |
|
MARX |
0.92 |
0.90 |
0.87 |
0.98 |
1.05 |
1.09 |
0.96 |
1.04 |
0.99 |
0.97 |
|
MAF |
1.04 |
1.16 |
0.97 |
1.00 |
1.12 |
1.07 |
0.98 |
1.03 |
0.98 |
0.98 |
|
X-MARX |
0.91 |
0.97 |
0.86 |
0.99 |
1.04 |
1.04 |
0.98 |
1.05 |
1.02 |
0.98 |
|
X-MAF |
1.02 |
1.03 |
0.92 |
1.02 |
1.03 |
1.08 |
0.97 |
1.00 |
1.02 |
1.02 |
|
X-Level |
1.02 |
1.08 |
0.96 |
1.04 |
1.04 |
1.12 |
0.95 |
0.98 |
1.00 |
1.08 |
|
X-MARX-Level |
0.91 |
0.97 |
0.84 |
0.99 |
1.06 |
1.03 |
0.94 |
0.97 |
1.02 |
1.03 |
Horizon 6 (direct)#
Horizon 6, direct — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.077, INCOME 0.002, CONS 0.002, RETAIL 0.004, HOUST 0.024, M2 0.002, CPI 0.002, PPI 0.004
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.03 |
1.07 |
1.09 |
1.04 |
0.92 |
0.98 |
0.94 |
0.94 |
0.96 |
0.95 |
Adaptive Lasso |
F |
0.94 |
0.93 |
0.95 |
0.96 |
0.97 |
1.05 |
1.03 |
0.96 |
0.99 |
1.00 |
F-X |
0.96 |
0.97 |
0.99 |
1.01 |
0.99 |
0.95 |
0.91 |
0.96 |
1.00 |
0.99 |
|
F-MARX |
1.01 |
1.04 |
0.94 |
1.05 |
1.00 |
0.92 |
1.05 |
1.02 |
1.09 |
1.11 |
|
F-MAF |
1.17 |
1.16 |
0.94 |
1.09 |
1.04 |
1.09 |
1.48 |
1.06 |
1.12 |
1.16 |
|
F-Level |
1.08 |
1.10 |
1.52 |
1.08 |
0.95 |
1.07 |
1.38 |
0.92 |
1.39 |
1.09 |
|
F-X-MARX |
0.98 |
1.03 |
0.94 |
0.97 |
1.00 |
0.95 |
0.90 |
1.00 |
1.04 |
1.02 |
|
F-X-MAF |
0.97 |
0.97 |
0.92 |
0.97 |
0.98 |
0.98 |
0.91 |
0.95 |
1.01 |
1.00 |
|
F-X-Level |
0.99 |
0.97 |
1.02 |
1.01 |
1.01 |
0.96 |
0.90 |
0.90 |
1.26 |
1.06 |
|
F-X-MARX-Level |
1.05 |
1.00 |
0.97 |
0.97 |
1.00 |
0.97 |
0.89 |
0.95 |
1.29 |
1.11 |
|
X |
0.97 |
0.98 |
0.99 |
1.01 |
0.99 |
0.95 |
0.91 |
0.96 |
1.00 |
1.00 |
|
MARX |
1.03 |
1.12 |
1.04 |
1.06 |
1.09 |
0.92 |
1.08 |
1.05 |
1.08 |
1.06 |
|
MAF |
1.29 |
1.24 |
1.45 |
1.12 |
1.16 |
1.18 |
1.44 |
1.11 |
1.22 |
1.18 |
|
X-MARX |
0.99 |
0.98 |
0.94 |
0.96 |
1.00 |
0.95 |
0.90 |
0.99 |
1.03 |
1.00 |
|
X-MAF |
0.97 |
0.97 |
0.93 |
0.98 |
0.99 |
0.98 |
0.91 |
0.94 |
1.02 |
0.99 |
|
X-Level |
0.99 |
0.97 |
1.03 |
1.02 |
1.00 |
0.97 |
0.90 |
0.90 |
1.26 |
1.06 |
|
X-MARX-Level |
1.05 |
1.00 |
0.97 |
0.96 |
1.00 |
0.97 |
0.89 |
0.95 |
1.33 |
1.10 |
|
Elastic Net |
F |
0.93 |
0.95 |
0.90 |
0.96 |
0.98 |
1.03 |
0.95 |
0.97 |
1.00 |
1.00 |
F-X |
0.97 |
0.98 |
0.95 |
1.01 |
0.99 |
0.95 |
0.95 |
0.96 |
0.98 |
0.99 |
|
F-MARX |
1.00 |
0.95 |
1.06 |
0.96 |
0.98 |
0.93 |
1.00 |
0.94 |
1.01 |
0.97 |
|
F-MAF |
1.10 |
1.02 |
1.11 |
1.03 |
0.99 |
1.09 |
1.04 |
0.98 |
1.05 |
1.15 |
|
F-Level |
1.12 |
1.17 |
1.50 |
1.02 |
0.99 |
1.10 |
1.17 |
0.88 |
1.37 |
1.04 |
|
F-X-MARX |
0.98 |
0.98 |
0.98 |
0.96 |
0.99 |
0.94 |
0.96 |
0.99 |
1.02 |
1.01 |
|
F-X-MAF |
0.95 |
0.99 |
0.93 |
0.98 |
0.98 |
0.98 |
1.01 |
0.94 |
0.99 |
1.01 |
|
F-X-Level |
0.97 |
0.96 |
1.00 |
1.01 |
1.01 |
1.00 |
1.01 |
0.90 |
1.29 |
1.03 |
|
F-X-MARX-Level |
1.05 |
0.98 |
1.01 |
0.97 |
1.00 |
0.97 |
0.99 |
0.93 |
1.22 |
1.10 |
|
X |
0.97 |
0.98 |
0.95 |
1.01 |
0.99 |
0.96 |
0.95 |
0.95 |
0.99 |
0.99 |
|
MARX |
1.02 |
1.25 |
1.08 |
0.98 |
1.00 |
0.96 |
1.04 |
0.95 |
1.13 |
1.01 |
|
MAF |
1.14 |
1.03 |
1.27 |
1.04 |
1.04 |
1.08 |
1.18 |
0.98 |
1.11 |
1.17 |
|
X-MARX |
0.98 |
0.96 |
0.98 |
0.97 |
0.99 |
0.95 |
0.96 |
0.97 |
1.02 |
0.99 |
|
X-MAF |
0.95 |
0.99 |
0.93 |
0.99 |
0.99 |
0.97 |
1.01 |
0.94 |
0.99 |
1.00 |
|
X-Level |
0.97 |
0.96 |
1.01 |
1.02 |
1.00 |
0.96 |
1.01 |
0.90 |
1.29 |
1.03 |
|
X-MARX-Level |
1.05 |
0.98 |
1.00 |
0.97 |
1.01 |
0.98 |
0.99 |
0.93 |
1.22 |
1.10 |
|
Linear Boosting |
F |
0.92 |
0.97 |
0.91 |
0.97 |
0.97 |
1.04 |
0.96 |
1.20 |
1.12 |
1.02 |
F-X |
0.98 |
1.02 |
0.95 |
1.02 |
1.05 |
1.01 |
0.95 |
1.07 |
1.05 |
0.99 |
|
F-MARX |
1.06 |
1.13 |
1.04 |
1.05 |
1.10 |
1.01 |
1.00 |
1.12 |
1.06 |
1.01 |
|
F-MAF |
1.17 |
1.21 |
1.06 |
1.05 |
0.99 |
1.09 |
1.03 |
1.06 |
1.16 |
1.15 |
|
F-Level |
1.02 |
1.10 |
1.09 |
0.99 |
0.96 |
1.01 |
1.00 |
0.97 |
1.41 |
1.09 |
|
F-X-MARX |
1.05 |
1.13 |
0.97 |
1.03 |
1.07 |
1.03 |
0.96 |
1.16 |
1.07 |
0.98 |
|
F-X-MAF |
0.96 |
0.96 |
0.90 |
0.95 |
0.98 |
0.96 |
0.99 |
0.95 |
1.06 |
1.00 |
|
F-X-Level |
0.92 |
0.97 |
0.93 |
0.99 |
0.98 |
0.96 |
0.97 |
1.00 |
1.05 |
0.95 |
|
F-X-MARX-Level |
0.99 |
1.02 |
0.98 |
0.97 |
1.00 |
0.98 |
0.96 |
1.04 |
1.06 |
0.97 |
|
X |
0.99 |
1.11 |
1.00 |
1.01 |
1.09 |
1.01 |
0.93 |
1.07 |
1.06 |
0.97 |
|
MARX |
1.10 |
1.19 |
1.05 |
1.07 |
1.16 |
1.05 |
1.01 |
1.13 |
1.08 |
1.00 |
|
MAF |
1.24 |
1.32 |
1.13 |
1.13 |
1.13 |
1.13 |
1.08 |
1.11 |
1.27 |
1.20 |
|
X-MARX |
1.04 |
1.18 |
0.98 |
1.04 |
1.09 |
1.03 |
0.96 |
1.14 |
1.07 |
0.96 |
|
X-MAF |
0.96 |
0.98 |
0.90 |
0.96 |
0.99 |
0.97 |
0.98 |
0.94 |
1.06 |
1.02 |
|
X-Level |
0.95 |
0.99 |
0.96 |
0.99 |
0.98 |
0.97 |
0.95 |
0.99 |
1.05 |
0.96 |
|
X-MARX-Level |
0.99 |
1.01 |
0.97 |
0.97 |
1.00 |
0.99 |
0.99 |
1.05 |
1.05 |
0.99 |
|
Random Forest |
F |
0.95 |
1.03 |
0.95 |
0.97 |
0.93 |
0.98 |
0.89 |
0.92 |
0.83 |
0.89 |
F-X |
1.05 |
1.12 |
0.99 |
1.00 |
0.96 |
1.00 |
0.88 |
1.00 |
0.87 |
0.92 |
|
F-MARX |
1.03 |
0.92 |
0.92 |
0.95 |
0.96 |
1.05 |
0.89 |
1.01 |
0.89 |
0.93 |
|
F-MAF |
1.02 |
1.05 |
0.95 |
0.96 |
0.94 |
0.96 |
0.89 |
0.99 |
0.88 |
0.92 |
|
F-Level |
1.07 |
1.14 |
1.07 |
1.08 |
0.92 |
1.02 |
0.91 |
0.84 |
0.92 |
1.00 |
|
F-X-MARX |
1.02 |
0.93 |
0.92 |
0.95 |
0.96 |
1.04 |
0.89 |
1.03 |
0.89 |
0.93 |
|
F-X-MAF |
1.01 |
1.07 |
0.98 |
0.96 |
0.96 |
0.99 |
0.89 |
1.02 |
0.90 |
0.93 |
|
F-X-Level |
1.04 |
1.12 |
1.04 |
1.03 |
0.91 |
1.01 |
0.89 |
0.89 |
0.91 |
0.99 |
|
F-X-MARX-Level |
1.01 |
0.93 |
0.93 |
0.96 |
0.94 |
1.02 |
0.88 |
0.91 |
0.91 |
0.96 |
|
X |
1.05 |
1.15 |
1.02 |
0.99 |
0.96 |
1.00 |
0.88 |
1.01 |
0.87 |
0.92 |
|
MARX |
1.02 |
0.92 |
0.92 |
0.95 |
0.95 |
1.05 |
0.88 |
1.02 |
0.89 |
0.93 |
|
MAF |
1.02 |
1.09 |
0.99 |
0.96 |
0.95 |
0.96 |
0.89 |
1.00 |
0.88 |
0.91 |
|
X-MARX |
1.03 |
0.93 |
0.93 |
0.95 |
0.97 |
1.05 |
0.88 |
1.02 |
0.90 |
0.92 |
|
X-MAF |
1.02 |
1.09 |
0.99 |
0.96 |
0.96 |
0.99 |
0.89 |
1.02 |
0.89 |
0.93 |
|
X-Level |
1.04 |
1.16 |
1.05 |
1.02 |
0.91 |
1.01 |
0.89 |
0.89 |
0.91 |
0.99 |
|
X-MARX-Level |
1.02 |
0.93 |
0.94 |
0.96 |
0.93 |
1.02 |
0.88 |
0.91 |
0.91 |
0.96 |
|
Boosted Trees |
F |
0.97 |
1.06 |
1.01 |
0.99 |
1.00 |
1.01 |
0.96 |
0.96 |
0.86 |
0.97 |
F-X |
1.06 |
1.08 |
0.99 |
0.99 |
0.98 |
0.95 |
0.89 |
1.03 |
0.93 |
0.94 |
|
F-MARX |
1.02 |
1.05 |
0.99 |
0.99 |
0.95 |
0.98 |
0.88 |
0.99 |
0.91 |
0.90 |
|
F-MAF |
0.97 |
1.18 |
0.97 |
0.96 |
1.03 |
0.94 |
0.93 |
1.03 |
0.86 |
0.95 |
|
F-Level |
1.09 |
1.26 |
1.14 |
1.10 |
0.94 |
0.97 |
0.92 |
0.86 |
0.97 |
1.01 |
|
F-X-MARX |
1.02 |
1.02 |
0.94 |
0.99 |
0.99 |
1.00 |
0.94 |
1.03 |
0.92 |
0.93 |
|
F-X-MAF |
1.05 |
1.11 |
1.02 |
0.99 |
0.95 |
1.00 |
0.87 |
1.00 |
0.94 |
0.94 |
|
F-X-Level |
1.12 |
1.17 |
1.07 |
1.01 |
0.92 |
1.17 |
0.91 |
0.93 |
1.00 |
1.05 |
|
F-X-MARX-Level |
1.02 |
1.03 |
0.93 |
0.98 |
0.96 |
0.96 |
0.91 |
0.91 |
0.96 |
0.98 |
|
X |
1.07 |
1.11 |
1.04 |
1.00 |
0.98 |
0.98 |
0.88 |
1.05 |
0.90 |
0.96 |
|
MARX |
1.00 |
1.07 |
0.98 |
1.00 |
1.00 |
1.06 |
0.93 |
1.06 |
0.90 |
0.91 |
|
MAF |
1.08 |
1.20 |
0.99 |
0.99 |
1.06 |
0.97 |
0.89 |
1.00 |
0.87 |
0.95 |
|
X-MARX |
1.05 |
1.06 |
0.93 |
0.99 |
0.98 |
0.99 |
0.90 |
1.07 |
0.85 |
0.91 |
|
X-MAF |
1.06 |
1.13 |
1.02 |
1.04 |
0.94 |
1.00 |
0.88 |
1.01 |
0.96 |
0.95 |
|
X-Level |
1.05 |
1.16 |
1.12 |
1.02 |
0.92 |
1.17 |
0.88 |
0.89 |
0.94 |
1.08 |
|
X-MARX-Level |
1.01 |
1.04 |
0.95 |
1.02 |
0.95 |
1.06 |
0.91 |
0.91 |
0.96 |
0.99 |
Horizon 9 (direct)#
Horizon 9, direct — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.076, INCOME 0.002, CONS 0.002, RETAIL 0.004, HOUST 0.021, M2 0.002, CPI 0.002, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.01 |
1.07 |
1.11 |
1.02 |
0.90 |
0.96 |
0.92 |
0.92 |
1.02 |
0.94 |
Adaptive Lasso |
F |
0.95 |
0.95 |
0.96 |
0.97 |
0.96 |
1.03 |
1.04 |
0.96 |
1.00 |
0.99 |
F-X |
0.97 |
1.00 |
1.04 |
1.02 |
1.01 |
0.92 |
1.01 |
0.95 |
1.02 |
1.02 |
|
F-MARX |
1.07 |
1.14 |
1.00 |
1.10 |
1.07 |
0.97 |
1.23 |
1.03 |
1.05 |
1.07 |
|
F-MAF |
1.28 |
1.27 |
1.13 |
1.15 |
1.21 |
1.16 |
1.44 |
1.01 |
1.31 |
1.19 |
|
F-Level |
1.10 |
1.33 |
1.63 |
1.13 |
1.07 |
1.11 |
1.44 |
0.93 |
1.48 |
1.06 |
|
F-X-MARX |
1.02 |
1.06 |
1.00 |
0.99 |
1.03 |
0.91 |
0.89 |
1.00 |
1.02 |
1.01 |
|
F-X-MAF |
1.00 |
1.04 |
0.99 |
0.99 |
1.00 |
0.93 |
1.03 |
0.94 |
1.06 |
1.02 |
|
F-X-Level |
1.04 |
1.15 |
1.14 |
1.09 |
1.02 |
1.00 |
1.04 |
0.91 |
1.44 |
1.06 |
|
F-X-MARX-Level |
1.18 |
1.14 |
1.10 |
1.01 |
1.02 |
1.01 |
0.87 |
0.97 |
1.39 |
1.15 |
|
X |
0.96 |
1.01 |
1.05 |
1.03 |
1.01 |
0.91 |
1.01 |
0.96 |
1.02 |
1.01 |
|
MARX |
1.10 |
1.14 |
1.04 |
1.07 |
1.19 |
0.98 |
1.34 |
1.08 |
1.07 |
1.10 |
|
MAF |
1.34 |
1.38 |
1.82 |
1.16 |
1.22 |
1.18 |
1.40 |
1.05 |
1.28 |
1.20 |
|
X-MARX |
1.01 |
1.02 |
0.99 |
0.99 |
1.03 |
0.91 |
0.89 |
0.97 |
1.05 |
0.99 |
|
X-MAF |
0.99 |
1.05 |
0.98 |
0.98 |
1.00 |
0.93 |
1.03 |
0.94 |
1.05 |
1.02 |
|
X-Level |
1.05 |
1.12 |
1.16 |
1.09 |
1.02 |
0.99 |
1.02 |
0.91 |
1.44 |
1.07 |
|
X-MARX-Level |
1.16 |
1.15 |
1.10 |
1.01 |
1.02 |
1.02 |
0.87 |
0.97 |
1.40 |
1.14 |
|
Elastic Net |
F |
0.94 |
0.98 |
0.93 |
0.96 |
0.97 |
1.02 |
0.96 |
0.97 |
0.98 |
0.99 |
F-X |
0.97 |
1.01 |
0.99 |
1.02 |
1.01 |
0.91 |
1.01 |
0.94 |
0.99 |
1.01 |
|
F-MARX |
1.05 |
1.03 |
1.14 |
0.99 |
0.96 |
0.93 |
1.06 |
0.99 |
1.08 |
0.99 |
|
F-MAF |
1.17 |
1.06 |
1.32 |
1.07 |
1.02 |
1.13 |
1.18 |
0.94 |
1.10 |
1.16 |
|
F-Level |
1.16 |
1.33 |
1.58 |
1.05 |
1.03 |
1.02 |
1.29 |
0.90 |
1.42 |
1.05 |
|
F-X-MARX |
1.02 |
1.04 |
1.04 |
0.97 |
1.01 |
0.91 |
1.00 |
0.95 |
0.99 |
1.00 |
|
F-X-MAF |
1.00 |
1.03 |
0.98 |
0.99 |
1.00 |
0.93 |
1.05 |
0.94 |
1.02 |
1.03 |
|
F-X-Level |
1.06 |
1.06 |
1.06 |
1.09 |
1.04 |
0.99 |
1.02 |
0.91 |
1.38 |
1.07 |
|
F-X-MARX-Level |
1.11 |
1.07 |
1.18 |
1.01 |
1.02 |
1.00 |
1.05 |
0.88 |
1.37 |
1.11 |
|
X |
0.98 |
1.02 |
1.00 |
1.02 |
1.01 |
0.91 |
1.01 |
0.94 |
0.99 |
1.01 |
|
MARX |
1.05 |
1.26 |
1.16 |
1.01 |
1.04 |
0.97 |
1.08 |
1.09 |
1.32 |
1.02 |
|
MAF |
1.22 |
1.06 |
1.74 |
1.07 |
1.04 |
1.12 |
1.23 |
0.93 |
1.19 |
1.19 |
|
X-MARX |
1.01 |
1.01 |
1.04 |
0.97 |
1.00 |
0.91 |
1.00 |
0.95 |
1.01 |
0.98 |
|
X-MAF |
1.00 |
1.03 |
0.98 |
0.99 |
1.01 |
0.93 |
1.05 |
0.94 |
1.03 |
1.03 |
|
X-Level |
1.05 |
1.06 |
1.05 |
1.10 |
1.03 |
0.98 |
1.02 |
0.92 |
1.37 |
1.12 |
|
X-MARX-Level |
1.11 |
1.07 |
1.18 |
1.01 |
1.02 |
1.00 |
1.05 |
0.87 |
1.36 |
1.11 |
|
Linear Boosting |
F |
0.95 |
0.96 |
0.95 |
0.96 |
0.97 |
1.00 |
0.96 |
1.20 |
1.33 |
1.05 |
F-X |
1.01 |
1.07 |
1.00 |
1.01 |
1.05 |
1.03 |
0.92 |
1.08 |
1.12 |
0.99 |
|
F-MARX |
1.05 |
1.13 |
1.07 |
1.03 |
1.08 |
1.04 |
1.04 |
1.13 |
1.23 |
1.03 |
|
F-MAF |
1.22 |
1.33 |
1.30 |
1.14 |
1.20 |
1.11 |
1.19 |
1.03 |
1.28 |
1.22 |
|
F-Level |
1.12 |
1.26 |
1.20 |
1.05 |
1.06 |
0.99 |
1.08 |
0.99 |
1.48 |
1.06 |
|
F-X-MARX |
1.05 |
1.14 |
1.03 |
0.99 |
1.06 |
1.03 |
0.96 |
1.16 |
1.20 |
1.01 |
|
F-X-MAF |
1.00 |
0.98 |
0.97 |
0.98 |
0.98 |
0.93 |
0.98 |
0.97 |
1.12 |
1.04 |
|
F-X-Level |
0.97 |
1.00 |
1.00 |
1.00 |
0.95 |
1.00 |
1.02 |
1.02 |
1.14 |
0.97 |
|
F-X-MARX-Level |
1.01 |
1.01 |
1.04 |
0.94 |
0.99 |
0.93 |
0.99 |
1.07 |
1.08 |
0.97 |
|
X |
1.01 |
1.13 |
1.02 |
1.00 |
1.05 |
1.01 |
0.92 |
1.05 |
1.14 |
0.99 |
|
MARX |
1.11 |
1.17 |
1.08 |
1.02 |
1.14 |
1.10 |
1.02 |
1.10 |
1.19 |
1.03 |
|
MAF |
1.35 |
1.46 |
1.35 |
1.20 |
1.31 |
1.21 |
1.23 |
1.07 |
1.29 |
1.18 |
|
X-MARX |
1.05 |
1.18 |
1.05 |
0.99 |
1.07 |
1.05 |
0.97 |
1.13 |
1.20 |
1.00 |
|
X-MAF |
1.00 |
0.99 |
0.96 |
0.97 |
0.99 |
0.93 |
0.98 |
0.95 |
1.08 |
1.05 |
|
X-Level |
0.96 |
0.98 |
1.02 |
0.99 |
0.94 |
0.97 |
0.95 |
1.01 |
1.18 |
0.99 |
|
X-MARX-Level |
1.00 |
1.01 |
1.03 |
0.96 |
0.96 |
0.94 |
0.96 |
1.09 |
1.12 |
1.00 |
|
Random Forest |
F |
0.95 |
1.05 |
0.96 |
0.97 |
0.94 |
0.95 |
0.84 |
0.87 |
0.84 |
0.85 |
F-X |
1.03 |
1.11 |
1.00 |
1.02 |
0.95 |
0.93 |
0.86 |
1.00 |
0.92 |
0.91 |
|
F-MARX |
1.03 |
1.01 |
0.99 |
0.96 |
0.99 |
0.96 |
0.88 |
1.04 |
0.93 |
0.90 |
|
F-MAF |
0.95 |
1.08 |
0.94 |
0.97 |
0.96 |
0.92 |
0.88 |
1.00 |
0.92 |
0.90 |
|
F-Level |
1.13 |
1.24 |
1.26 |
1.19 |
0.93 |
1.04 |
0.91 |
0.77 |
0.91 |
0.92 |
|
F-X-MARX |
1.03 |
1.02 |
1.00 |
0.96 |
0.99 |
0.95 |
0.87 |
1.05 |
0.92 |
0.90 |
|
F-X-MAF |
0.99 |
1.08 |
0.97 |
0.97 |
0.97 |
0.93 |
0.88 |
1.02 |
0.93 |
0.93 |
|
F-X-Level |
1.04 |
1.14 |
1.08 |
1.10 |
0.89 |
1.00 |
0.87 |
0.84 |
0.94 |
0.96 |
|
F-X-MARX-Level |
1.00 |
1.03 |
1.03 |
0.98 |
0.93 |
1.00 |
0.87 |
0.87 |
0.95 |
0.95 |
|
X |
1.03 |
1.12 |
1.02 |
1.03 |
0.95 |
0.92 |
0.86 |
0.99 |
0.91 |
0.92 |
|
MARX |
1.03 |
1.02 |
1.00 |
0.95 |
0.99 |
0.96 |
0.86 |
1.04 |
0.93 |
0.90 |
|
MAF |
0.96 |
1.09 |
0.95 |
0.98 |
0.96 |
0.93 |
0.89 |
1.00 |
0.92 |
0.90 |
|
X-MARX |
1.03 |
1.02 |
1.00 |
0.96 |
0.99 |
0.94 |
0.87 |
1.05 |
0.92 |
0.90 |
|
X-MAF |
0.99 |
1.09 |
0.98 |
0.97 |
0.97 |
0.93 |
0.89 |
1.02 |
0.93 |
0.93 |
|
X-Level |
1.04 |
1.15 |
1.10 |
1.09 |
0.89 |
1.00 |
0.87 |
0.83 |
0.94 |
0.96 |
|
X-MARX-Level |
0.99 |
1.02 |
1.04 |
0.98 |
0.93 |
1.00 |
0.86 |
0.88 |
0.95 |
0.95 |
|
Boosted Trees |
F |
0.97 |
1.11 |
0.98 |
0.99 |
0.98 |
0.99 |
0.87 |
0.91 |
0.90 |
0.91 |
F-X |
1.04 |
1.13 |
1.02 |
1.00 |
1.00 |
0.93 |
0.88 |
1.01 |
0.93 |
0.91 |
|
F-MARX |
1.05 |
1.14 |
1.04 |
0.99 |
0.99 |
0.93 |
0.89 |
0.95 |
0.94 |
0.86 |
|
F-MAF |
1.00 |
1.14 |
0.99 |
1.01 |
1.05 |
0.97 |
0.82 |
0.99 |
0.89 |
0.94 |
|
F-Level |
1.06 |
1.39 |
1.29 |
1.19 |
1.00 |
1.00 |
0.96 |
0.79 |
1.00 |
0.92 |
|
F-X-MARX |
1.03 |
1.09 |
1.06 |
0.98 |
1.00 |
0.94 |
0.91 |
1.02 |
0.95 |
0.87 |
|
F-X-MAF |
1.00 |
1.09 |
1.00 |
0.99 |
0.98 |
0.94 |
0.94 |
1.00 |
0.95 |
0.92 |
|
F-X-Level |
1.18 |
1.25 |
1.17 |
1.03 |
0.89 |
0.95 |
0.92 |
0.84 |
0.97 |
0.99 |
|
F-X-MARX-Level |
1.02 |
1.16 |
1.06 |
0.98 |
0.97 |
0.88 |
0.90 |
0.89 |
1.05 |
0.93 |
|
X |
1.06 |
1.13 |
1.04 |
1.01 |
0.99 |
0.93 |
0.87 |
1.03 |
0.95 |
0.91 |
|
MARX |
1.02 |
1.17 |
1.01 |
0.99 |
1.01 |
0.97 |
0.91 |
1.01 |
0.94 |
0.86 |
|
MAF |
1.06 |
1.15 |
0.95 |
1.02 |
1.05 |
0.94 |
0.87 |
0.97 |
0.89 |
0.91 |
|
X-MARX |
1.00 |
1.10 |
1.03 |
0.96 |
1.00 |
0.93 |
0.90 |
1.07 |
0.90 |
0.86 |
|
X-MAF |
1.05 |
1.21 |
1.03 |
1.04 |
1.00 |
0.94 |
0.92 |
1.03 |
0.97 |
0.91 |
|
X-Level |
1.01 |
1.16 |
1.15 |
1.07 |
0.92 |
1.07 |
0.85 |
0.87 |
0.94 |
1.02 |
|
X-MARX-Level |
1.00 |
1.13 |
1.07 |
1.01 |
0.96 |
0.89 |
0.87 |
0.91 |
1.02 |
0.98 |
Horizon 12 (direct)#
Horizon 12, direct — FM absolute RMSE (denominator): INDPRO 0.003, EMP 0.001, UNRATE 0.077, INCOME 0.002, CONS 0.002, RETAIL 0.003, HOUST 0.019, M2 0.002, CPI 0.001, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.01 |
1.06 |
1.10 |
1.02 |
0.95 |
0.95 |
0.92 |
0.92 |
1.06 |
0.97 |
Adaptive Lasso |
F |
0.96 |
0.96 |
0.95 |
0.97 |
0.96 |
1.02 |
0.97 |
0.99 |
1.01 |
1.05 |
F-X |
0.99 |
1.01 |
1.03 |
1.05 |
1.05 |
0.92 |
1.00 |
0.96 |
1.05 |
1.06 |
|
F-MARX |
1.20 |
1.07 |
1.02 |
1.05 |
1.14 |
1.14 |
1.15 |
1.01 |
1.12 |
1.13 |
|
F-MAF |
1.32 |
1.19 |
1.41 |
1.21 |
1.22 |
1.16 |
1.40 |
0.99 |
1.19 |
1.21 |
|
F-Level |
1.14 |
1.20 |
1.41 |
1.20 |
1.16 |
1.08 |
1.24 |
0.97 |
1.35 |
1.18 |
|
F-X-MARX |
1.05 |
1.04 |
0.97 |
1.02 |
1.08 |
1.02 |
0.93 |
0.94 |
1.08 |
1.04 |
|
F-X-MAF |
1.05 |
1.05 |
0.97 |
1.03 |
1.06 |
0.96 |
1.02 |
0.92 |
1.08 |
1.04 |
|
F-X-Level |
1.24 |
1.12 |
1.09 |
1.13 |
1.09 |
0.94 |
1.04 |
0.92 |
1.34 |
1.16 |
|
F-X-MARX-Level |
1.18 |
1.17 |
1.04 |
1.09 |
1.05 |
0.91 |
0.89 |
0.94 |
1.42 |
1.08 |
|
X |
0.99 |
1.01 |
1.04 |
1.05 |
1.05 |
0.92 |
0.99 |
0.96 |
1.08 |
1.06 |
|
MARX |
1.24 |
1.17 |
1.24 |
1.10 |
1.18 |
1.16 |
1.25 |
1.00 |
1.15 |
1.16 |
|
MAF |
1.33 |
1.27 |
1.77 |
1.21 |
1.22 |
1.21 |
1.40 |
1.00 |
1.18 |
1.24 |
|
X-MARX |
1.02 |
1.01 |
0.97 |
1.03 |
1.05 |
0.95 |
0.96 |
0.92 |
1.08 |
1.03 |
|
X-MAF |
1.04 |
1.05 |
0.97 |
1.05 |
1.05 |
0.96 |
0.99 |
0.94 |
1.09 |
1.07 |
|
X-Level |
1.22 |
1.11 |
1.09 |
1.12 |
1.09 |
0.94 |
1.04 |
0.92 |
1.41 |
1.18 |
|
X-MARX-Level |
1.18 |
1.23 |
1.02 |
1.10 |
1.07 |
0.92 |
0.89 |
0.94 |
1.44 |
1.13 |
|
Elastic Net |
F |
0.95 |
0.99 |
0.92 |
0.98 |
0.97 |
1.02 |
0.97 |
0.99 |
0.98 |
1.02 |
F-X |
0.99 |
1.02 |
1.00 |
1.05 |
1.04 |
0.93 |
0.99 |
0.95 |
1.03 |
1.06 |
|
F-MARX |
1.11 |
1.03 |
1.15 |
1.01 |
1.00 |
1.09 |
0.98 |
0.94 |
1.11 |
1.01 |
|
F-MAF |
1.23 |
1.03 |
1.52 |
1.11 |
1.00 |
1.12 |
1.18 |
0.94 |
1.15 |
1.22 |
|
F-Level |
1.16 |
1.28 |
1.41 |
1.22 |
1.14 |
1.11 |
1.23 |
0.92 |
1.38 |
1.20 |
|
F-X-MARX |
1.07 |
1.04 |
1.06 |
1.01 |
1.03 |
1.04 |
0.93 |
0.92 |
1.02 |
1.04 |
|
F-X-MAF |
1.04 |
1.06 |
1.03 |
1.06 |
1.04 |
0.97 |
1.01 |
0.92 |
1.05 |
1.06 |
|
F-X-Level |
1.17 |
1.11 |
1.10 |
1.11 |
1.07 |
0.94 |
1.06 |
0.93 |
1.16 |
1.13 |
|
F-X-MARX-Level |
1.14 |
1.06 |
1.17 |
1.06 |
1.03 |
0.91 |
1.00 |
0.91 |
1.17 |
1.14 |
|
X |
0.99 |
1.02 |
1.01 |
1.05 |
1.04 |
0.93 |
0.99 |
0.95 |
1.04 |
1.06 |
|
MARX |
1.19 |
1.35 |
1.20 |
1.14 |
1.16 |
1.10 |
1.05 |
1.18 |
1.26 |
1.15 |
|
MAF |
1.24 |
1.26 |
1.72 |
1.22 |
1.02 |
1.11 |
1.22 |
1.02 |
1.17 |
1.22 |
|
X-MARX |
1.03 |
1.03 |
1.06 |
1.01 |
1.03 |
1.03 |
0.93 |
0.91 |
1.03 |
1.03 |
|
X-MAF |
1.04 |
1.06 |
1.04 |
1.06 |
1.04 |
0.97 |
1.01 |
0.92 |
1.05 |
1.07 |
|
X-Level |
1.17 |
1.12 |
1.08 |
1.11 |
1.06 |
0.94 |
1.05 |
0.92 |
1.17 |
1.13 |
|
X-MARX-Level |
1.14 |
1.06 |
1.19 |
1.06 |
1.03 |
0.90 |
1.00 |
0.91 |
1.17 |
1.14 |
|
Linear Boosting |
F |
0.95 |
0.98 |
0.93 |
0.97 |
0.96 |
1.02 |
0.97 |
1.21 |
1.45 |
1.14 |
F-X |
1.06 |
1.06 |
1.00 |
1.05 |
1.05 |
1.03 |
0.91 |
1.07 |
1.17 |
1.08 |
|
F-MARX |
1.10 |
1.08 |
1.07 |
1.01 |
1.12 |
1.13 |
0.94 |
1.17 |
1.29 |
1.08 |
|
F-MAF |
1.27 |
1.28 |
1.28 |
1.18 |
1.23 |
1.19 |
1.17 |
1.04 |
1.23 |
1.23 |
|
F-Level |
1.20 |
1.17 |
1.18 |
1.28 |
1.17 |
0.98 |
1.09 |
0.96 |
1.28 |
1.28 |
|
F-X-MARX |
1.08 |
1.10 |
0.99 |
1.00 |
1.06 |
1.04 |
0.93 |
1.12 |
1.31 |
1.07 |
|
F-X-MAF |
1.04 |
0.99 |
1.01 |
1.06 |
1.03 |
0.94 |
0.97 |
0.96 |
1.20 |
1.10 |
|
F-X-Level |
0.96 |
0.94 |
1.03 |
1.01 |
0.94 |
0.97 |
0.97 |
1.04 |
1.28 |
1.10 |
|
F-X-MARX-Level |
1.02 |
0.98 |
0.99 |
0.96 |
1.01 |
0.91 |
0.91 |
1.08 |
1.17 |
1.04 |
|
X |
1.04 |
1.08 |
1.02 |
1.03 |
1.08 |
1.02 |
0.90 |
1.06 |
1.22 |
1.05 |
|
MARX |
1.15 |
1.12 |
1.09 |
1.00 |
1.14 |
1.12 |
1.00 |
1.10 |
1.28 |
1.08 |
|
MAF |
1.28 |
1.36 |
1.36 |
1.24 |
1.32 |
1.25 |
1.22 |
1.06 |
1.32 |
1.20 |
|
X-MARX |
1.06 |
1.12 |
1.00 |
1.00 |
1.06 |
1.05 |
0.91 |
1.11 |
1.31 |
1.06 |
|
X-MAF |
1.06 |
0.99 |
1.01 |
1.04 |
1.03 |
0.99 |
0.98 |
0.94 |
1.22 |
1.12 |
|
X-Level |
0.96 |
0.94 |
1.03 |
1.01 |
0.95 |
0.92 |
0.93 |
1.06 |
1.29 |
1.08 |
|
X-MARX-Level |
1.03 |
0.96 |
1.01 |
0.97 |
1.00 |
0.93 |
0.91 |
1.07 |
1.13 |
1.03 |
|
Random Forest |
F |
0.96 |
1.02 |
0.92 |
0.97 |
0.92 |
0.94 |
0.84 |
0.89 |
0.85 |
0.86 |
F-X |
0.98 |
1.05 |
0.97 |
1.01 |
0.94 |
0.89 |
0.87 |
1.01 |
1.00 |
0.98 |
|
F-MARX |
0.98 |
1.01 |
0.97 |
0.97 |
0.99 |
0.93 |
0.93 |
1.05 |
1.03 |
1.00 |
|
F-MAF |
0.92 |
1.01 |
0.90 |
0.98 |
0.97 |
0.89 |
0.90 |
1.03 |
0.99 |
0.97 |
|
F-Level |
1.14 |
1.30 |
1.39 |
1.26 |
0.92 |
1.09 |
0.91 |
0.74 |
0.98 |
0.91 |
|
F-X-MARX |
0.98 |
1.02 |
0.96 |
0.97 |
1.01 |
0.91 |
0.94 |
1.08 |
0.98 |
0.99 |
|
F-X-MAF |
0.96 |
1.03 |
0.93 |
0.98 |
0.96 |
0.89 |
0.90 |
1.04 |
0.99 |
0.97 |
|
F-X-Level |
1.00 |
1.08 |
1.11 |
1.13 |
0.88 |
1.04 |
0.87 |
0.84 |
1.05 |
0.98 |
|
F-X-MARX-Level |
0.95 |
1.06 |
1.01 |
1.02 |
0.91 |
1.03 |
0.90 |
0.89 |
1.09 |
1.02 |
|
X |
0.99 |
1.05 |
0.98 |
1.01 |
0.94 |
0.89 |
0.87 |
1.01 |
0.99 |
0.97 |
|
MARX |
0.98 |
1.02 |
0.96 |
0.97 |
1.00 |
0.93 |
0.93 |
1.06 |
1.02 |
1.00 |
|
MAF |
0.92 |
1.01 |
0.90 |
0.98 |
0.97 |
0.89 |
0.90 |
1.02 |
0.99 |
0.97 |
|
X-MARX |
0.98 |
1.02 |
0.96 |
0.97 |
1.00 |
0.92 |
0.93 |
1.08 |
0.98 |
0.99 |
|
X-MAF |
0.96 |
1.03 |
0.94 |
0.97 |
0.96 |
0.88 |
0.91 |
1.04 |
0.99 |
0.97 |
|
X-Level |
1.00 |
1.08 |
1.12 |
1.14 |
0.88 |
1.03 |
0.87 |
0.83 |
1.04 |
0.99 |
|
X-MARX-Level |
0.95 |
1.07 |
1.01 |
1.02 |
0.91 |
1.04 |
0.90 |
0.89 |
1.08 |
1.02 |
|
Boosted Trees |
F |
0.97 |
1.06 |
0.98 |
1.01 |
0.95 |
0.94 |
0.87 |
0.93 |
0.92 |
0.91 |
F-X |
0.99 |
1.11 |
0.96 |
1.02 |
1.06 |
0.90 |
0.91 |
1.03 |
0.98 |
0.93 |
|
F-MARX |
1.00 |
1.05 |
1.02 |
1.01 |
1.01 |
0.93 |
0.94 |
1.04 |
0.97 |
0.95 |
|
F-MAF |
0.98 |
1.04 |
0.89 |
1.03 |
1.03 |
0.94 |
0.89 |
1.04 |
0.90 |
0.98 |
|
F-Level |
1.09 |
1.32 |
1.30 |
1.21 |
0.98 |
1.08 |
1.06 |
0.74 |
1.05 |
0.93 |
|
F-X-MARX |
0.98 |
1.11 |
1.02 |
1.01 |
1.03 |
0.95 |
0.93 |
1.04 |
0.99 |
0.90 |
|
F-X-MAF |
0.93 |
1.03 |
0.95 |
1.03 |
1.02 |
0.92 |
0.94 |
1.03 |
0.99 |
0.95 |
|
F-X-Level |
1.16 |
1.17 |
1.16 |
1.11 |
0.85 |
0.88 |
1.00 |
0.83 |
1.04 |
0.95 |
|
F-X-MARX-Level |
1.03 |
1.14 |
1.06 |
1.05 |
0.99 |
0.97 |
0.91 |
0.93 |
1.09 |
1.00 |
|
X |
1.01 |
1.06 |
1.00 |
1.03 |
1.02 |
0.94 |
0.88 |
1.05 |
1.03 |
0.93 |
|
MARX |
1.00 |
1.09 |
0.98 |
0.99 |
1.08 |
0.95 |
0.92 |
1.06 |
0.95 |
0.89 |
|
MAF |
0.98 |
1.11 |
0.91 |
1.01 |
1.08 |
0.93 |
0.91 |
1.07 |
0.88 |
0.97 |
|
X-MARX |
0.98 |
1.11 |
0.97 |
0.98 |
1.02 |
0.90 |
0.91 |
1.10 |
1.01 |
0.93 |
|
X-MAF |
1.01 |
1.07 |
0.97 |
1.03 |
1.00 |
0.95 |
0.94 |
1.04 |
1.02 |
0.93 |
|
X-Level |
1.03 |
1.20 |
1.19 |
1.12 |
0.91 |
0.95 |
0.90 |
0.85 |
1.02 |
0.99 |
|
X-MARX-Level |
0.97 |
1.08 |
1.03 |
1.07 |
0.95 |
0.90 |
0.90 |
0.92 |
1.13 |
0.99 |
Horizon 24 (direct)#
Horizon 24, direct — FM absolute RMSE (denominator): INDPRO 0.003, EMP 0.001, UNRATE 0.068, INCOME 0.002, CONS 0.002, RETAIL 0.003, HOUST 0.014, M2 0.002, CPI 0.002, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
0.98 |
1.03 |
1.08 |
0.98 |
0.85 |
0.93 |
0.92 |
0.90 |
0.95 |
0.87 |
Adaptive Lasso |
F |
0.93 |
0.95 |
0.93 |
0.98 |
0.91 |
1.00 |
0.94 |
0.99 |
1.21 |
1.06 |
F-X |
1.08 |
0.98 |
0.95 |
1.11 |
1.11 |
0.89 |
0.95 |
1.08 |
1.07 |
0.88 |
|
F-MARX |
1.22 |
1.13 |
1.17 |
1.12 |
1.08 |
1.06 |
1.17 |
1.00 |
1.05 |
1.01 |
|
F-MAF |
1.33 |
1.19 |
1.03 |
1.31 |
1.23 |
0.98 |
1.30 |
1.03 |
1.20 |
0.98 |
|
F-Level |
1.21 |
1.18 |
1.42 |
1.36 |
1.19 |
1.13 |
1.28 |
1.19 |
1.48 |
1.41 |
|
F-X-MARX |
1.10 |
1.03 |
0.93 |
1.19 |
1.12 |
0.97 |
0.95 |
1.03 |
1.02 |
0.99 |
|
F-X-MAF |
1.12 |
1.00 |
0.95 |
1.19 |
1.09 |
0.96 |
0.94 |
1.05 |
1.10 |
0.88 |
|
F-X-Level |
1.12 |
1.17 |
1.05 |
1.30 |
1.23 |
0.93 |
1.07 |
1.01 |
1.28 |
1.20 |
|
F-X-MARX-Level |
1.11 |
1.15 |
1.02 |
1.30 |
1.17 |
1.01 |
1.18 |
1.02 |
1.06 |
1.14 |
|
X |
1.08 |
0.99 |
0.95 |
1.12 |
1.12 |
0.89 |
0.95 |
1.07 |
1.09 |
0.87 |
|
MARX |
1.31 |
1.13 |
1.26 |
1.20 |
1.15 |
1.02 |
1.28 |
1.00 |
1.00 |
1.11 |
|
MAF |
1.32 |
1.19 |
1.58 |
1.32 |
1.25 |
0.99 |
1.30 |
1.04 |
1.08 |
0.99 |
|
X-MARX |
1.09 |
1.04 |
0.94 |
1.18 |
1.10 |
0.97 |
1.07 |
1.01 |
1.00 |
0.94 |
|
X-MAF |
1.12 |
1.01 |
0.95 |
1.17 |
1.11 |
0.96 |
0.95 |
1.06 |
1.03 |
0.88 |
|
X-Level |
1.12 |
1.16 |
1.05 |
1.31 |
1.22 |
0.93 |
1.06 |
1.02 |
1.30 |
1.21 |
|
X-MARX-Level |
1.10 |
1.15 |
1.02 |
1.31 |
1.17 |
1.01 |
1.18 |
1.02 |
1.06 |
1.14 |
|
Elastic Net |
F |
0.94 |
0.98 |
0.92 |
0.97 |
0.90 |
0.99 |
0.93 |
0.98 |
1.44 |
1.02 |
F-X |
1.07 |
1.00 |
0.98 |
1.10 |
1.07 |
0.89 |
0.94 |
1.08 |
1.07 |
0.86 |
|
F-MARX |
1.00 |
1.02 |
1.19 |
1.08 |
0.97 |
0.98 |
0.99 |
1.05 |
0.95 |
0.99 |
|
F-MAF |
1.15 |
1.11 |
1.22 |
1.16 |
1.05 |
0.98 |
1.07 |
1.02 |
1.34 |
0.96 |
|
F-Level |
1.18 |
1.23 |
1.42 |
1.39 |
1.32 |
1.14 |
1.22 |
1.15 |
1.81 |
1.43 |
|
F-X-MARX |
1.03 |
0.95 |
1.04 |
1.06 |
1.06 |
0.93 |
0.93 |
1.09 |
0.97 |
0.86 |
|
F-X-MAF |
1.11 |
0.98 |
1.01 |
1.09 |
1.05 |
0.94 |
0.94 |
1.06 |
1.08 |
0.87 |
|
F-X-Level |
1.02 |
1.00 |
1.13 |
1.25 |
1.11 |
0.83 |
1.07 |
1.05 |
1.39 |
1.28 |
|
F-X-MARX-Level |
1.01 |
0.97 |
0.98 |
1.15 |
1.08 |
0.87 |
1.02 |
1.12 |
1.23 |
1.25 |
|
X |
1.07 |
0.99 |
0.98 |
1.10 |
1.07 |
0.89 |
0.94 |
1.08 |
1.07 |
0.87 |
|
MARX |
1.33 |
1.27 |
1.21 |
1.29 |
1.20 |
1.03 |
1.02 |
1.07 |
1.42 |
1.18 |
|
MAF |
1.27 |
1.24 |
1.44 |
1.21 |
1.25 |
1.01 |
1.08 |
1.05 |
1.30 |
1.00 |
|
X-MARX |
1.05 |
0.96 |
1.04 |
1.06 |
1.05 |
0.93 |
0.95 |
1.07 |
0.98 |
0.83 |
|
X-MAF |
1.11 |
0.98 |
1.02 |
1.09 |
1.05 |
0.94 |
0.95 |
1.06 |
1.08 |
0.87 |
|
X-Level |
1.03 |
1.00 |
1.12 |
1.25 |
1.11 |
0.85 |
1.07 |
1.05 |
1.42 |
1.28 |
|
X-MARX-Level |
1.02 |
0.97 |
0.98 |
1.15 |
1.08 |
0.88 |
1.02 |
1.12 |
1.24 |
1.25 |
|
Linear Boosting |
F |
0.93 |
0.94 |
0.95 |
0.97 |
0.90 |
1.02 |
0.92 |
1.11 |
1.32 |
1.11 |
F-X |
1.00 |
1.04 |
0.94 |
1.00 |
0.93 |
1.00 |
0.84 |
1.09 |
1.10 |
1.03 |
|
F-MARX |
1.11 |
1.07 |
0.97 |
1.03 |
0.96 |
1.13 |
0.90 |
1.11 |
1.40 |
1.08 |
|
F-MAF |
1.30 |
1.21 |
1.17 |
1.31 |
1.27 |
1.03 |
0.99 |
1.11 |
1.16 |
1.04 |
|
F-Level |
1.27 |
1.14 |
1.18 |
1.60 |
1.30 |
1.08 |
1.21 |
1.06 |
1.55 |
1.38 |
|
F-X-MARX |
1.03 |
1.02 |
0.93 |
0.99 |
0.92 |
0.99 |
0.86 |
1.11 |
1.34 |
1.11 |
|
F-X-MAF |
1.07 |
1.01 |
1.00 |
1.18 |
1.07 |
0.97 |
0.92 |
1.06 |
1.06 |
0.94 |
|
F-X-Level |
0.96 |
0.95 |
0.94 |
1.00 |
0.95 |
0.94 |
0.91 |
1.03 |
1.42 |
1.16 |
|
F-X-MARX-Level |
1.01 |
0.90 |
0.91 |
0.99 |
0.89 |
0.95 |
0.95 |
1.04 |
1.07 |
1.03 |
|
X |
1.03 |
1.06 |
0.96 |
1.02 |
0.91 |
0.98 |
0.88 |
1.07 |
1.22 |
1.06 |
|
MARX |
1.12 |
1.10 |
1.03 |
1.08 |
0.98 |
1.04 |
0.98 |
1.07 |
1.45 |
1.15 |
|
MAF |
1.36 |
1.26 |
1.21 |
1.32 |
1.32 |
0.98 |
1.04 |
1.11 |
1.10 |
1.06 |
|
X-MARX |
1.04 |
1.03 |
0.93 |
0.98 |
0.90 |
0.97 |
0.95 |
1.08 |
1.32 |
1.05 |
|
X-MAF |
1.09 |
1.02 |
1.00 |
1.19 |
1.09 |
0.98 |
0.93 |
1.07 |
1.07 |
0.94 |
|
X-Level |
0.95 |
0.91 |
0.92 |
1.01 |
0.95 |
0.89 |
1.04 |
1.04 |
1.49 |
1.30 |
|
X-MARX-Level |
1.01 |
0.89 |
0.90 |
0.98 |
0.88 |
0.93 |
0.99 |
1.04 |
1.15 |
1.08 |
|
Random Forest |
F |
0.93 |
0.97 |
0.86 |
0.93 |
0.86 |
0.90 |
0.77 |
0.88 |
0.81 |
0.82 |
F-X |
0.89 |
0.92 |
0.90 |
0.96 |
0.91 |
0.86 |
0.77 |
1.04 |
1.04 |
0.94 |
|
F-MARX |
0.97 |
0.97 |
0.89 |
1.01 |
0.94 |
0.87 |
0.87 |
1.13 |
1.14 |
1.11 |
|
F-MAF |
0.94 |
0.91 |
0.87 |
1.01 |
0.90 |
0.82 |
0.85 |
1.04 |
1.22 |
1.04 |
|
F-Level |
0.87 |
1.26 |
1.26 |
1.16 |
0.82 |
0.96 |
0.92 |
0.82 |
1.10 |
0.84 |
|
F-X-MARX |
0.95 |
0.98 |
0.89 |
0.98 |
0.91 |
0.87 |
0.82 |
1.16 |
1.09 |
1.08 |
|
F-X-MAF |
0.89 |
0.90 |
0.86 |
0.99 |
0.91 |
0.83 |
0.80 |
1.06 |
1.13 |
1.00 |
|
F-X-Level |
0.87 |
1.09 |
1.13 |
1.12 |
0.86 |
0.93 |
0.92 |
0.94 |
1.13 |
0.94 |
|
F-X-MARX-Level |
0.89 |
1.00 |
0.95 |
1.10 |
0.89 |
0.95 |
0.93 |
0.99 |
1.16 |
1.07 |
|
X |
0.89 |
0.92 |
0.90 |
0.96 |
0.91 |
0.86 |
0.77 |
1.04 |
1.05 |
0.94 |
|
MARX |
0.98 |
0.98 |
0.89 |
1.02 |
0.94 |
0.87 |
0.87 |
1.14 |
1.15 |
1.12 |
|
MAF |
0.97 |
0.93 |
0.89 |
1.01 |
0.90 |
0.82 |
0.85 |
1.04 |
1.21 |
1.04 |
|
X-MARX |
0.95 |
0.98 |
0.88 |
0.98 |
0.91 |
0.86 |
0.83 |
1.16 |
1.09 |
1.08 |
|
X-MAF |
0.89 |
0.90 |
0.87 |
0.99 |
0.92 |
0.83 |
0.80 |
1.07 |
1.13 |
1.01 |
|
X-Level |
0.87 |
1.09 |
1.14 |
1.12 |
0.87 |
0.94 |
0.91 |
0.94 |
1.14 |
0.94 |
|
X-MARX-Level |
0.89 |
1.00 |
0.94 |
1.10 |
0.89 |
0.95 |
0.94 |
0.99 |
1.16 |
1.08 |
|
Boosted Trees |
F |
0.93 |
0.99 |
0.90 |
0.95 |
0.87 |
0.95 |
0.78 |
0.95 |
0.84 |
0.89 |
F-X |
0.90 |
1.01 |
0.91 |
1.02 |
0.94 |
0.83 |
0.82 |
1.07 |
0.97 |
0.93 |
|
F-MARX |
0.96 |
1.06 |
0.87 |
1.04 |
0.98 |
0.84 |
0.88 |
1.07 |
1.02 |
1.00 |
|
F-MAF |
1.00 |
1.01 |
0.84 |
1.04 |
0.96 |
0.90 |
0.88 |
1.01 |
1.20 |
1.15 |
|
F-Level |
0.95 |
1.25 |
1.22 |
1.14 |
0.90 |
1.01 |
0.98 |
0.83 |
1.02 |
0.81 |
|
F-X-MARX |
0.97 |
1.05 |
0.94 |
1.03 |
0.98 |
0.85 |
0.85 |
1.11 |
1.12 |
0.96 |
|
F-X-MAF |
0.93 |
0.98 |
0.92 |
1.07 |
0.93 |
0.80 |
0.86 |
1.09 |
1.26 |
0.96 |
|
F-X-Level |
0.89 |
1.13 |
1.20 |
1.08 |
0.90 |
0.83 |
0.96 |
0.93 |
1.12 |
0.86 |
|
F-X-MARX-Level |
0.91 |
1.11 |
1.02 |
1.13 |
0.95 |
0.88 |
0.99 |
0.96 |
1.21 |
1.05 |
|
X |
0.90 |
1.01 |
0.92 |
1.02 |
0.98 |
0.84 |
0.82 |
1.07 |
1.08 |
0.96 |
|
MARX |
0.99 |
1.06 |
0.91 |
1.00 |
0.97 |
0.84 |
0.91 |
1.09 |
1.13 |
0.97 |
|
MAF |
1.01 |
1.01 |
0.87 |
1.04 |
0.97 |
0.83 |
0.83 |
1.00 |
1.16 |
1.13 |
|
X-MARX |
0.93 |
1.03 |
0.90 |
1.01 |
0.98 |
0.85 |
0.85 |
1.13 |
1.09 |
0.99 |
|
X-MAF |
0.94 |
0.99 |
0.92 |
1.04 |
0.98 |
0.82 |
0.83 |
1.09 |
1.24 |
0.95 |
|
X-Level |
0.92 |
1.20 |
1.16 |
1.12 |
0.82 |
0.91 |
0.91 |
0.92 |
1.22 |
0.86 |
|
X-MARX-Level |
0.96 |
1.05 |
1.00 |
1.09 |
0.92 |
0.87 |
1.03 |
0.98 |
1.11 |
0.99 |
Path-average / SGR target (appendix Tables 9 to 14)#
Horizon 1 (path-average)#
Horizon 1, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.006, EMP 0.001, UNRATE 0.148, INCOME 0.007, CONS 0.004, RETAIL 0.011, HOUST 0.072, M2 0.003, CPI 0.002, PPI 0.006
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
1.00 |
Adaptive Lasso |
F |
0.96 |
0.97 |
0.97 |
1.00 |
1.03 |
1.04 |
1.02 |
0.98 |
0.98 |
0.98 |
F-X |
0.95 |
1.03 |
0.96 |
1.01 |
1.08 |
1.09 |
1.02 |
0.99 |
1.06 |
1.00 |
|
F-MARX |
0.95 |
0.99 |
0.95 |
1.00 |
1.04 |
1.02 |
1.01 |
0.99 |
0.96 |
0.93 |
|
F-MAF |
0.94 |
0.99 |
0.95 |
1.01 |
1.04 |
1.05 |
1.02 |
1.00 |
1.05 |
1.02 |
|
F-Level |
0.96 |
1.02 |
0.95 |
1.00 |
1.02 |
1.04 |
1.02 |
1.00 |
1.02 |
0.99 |
|
F-X-MARX |
1.09 |
1.01 |
0.95 |
1.01 |
1.06 |
1.03 |
1.01 |
0.97 |
1.04 |
0.97 |
|
F-X-MAF |
0.95 |
1.01 |
0.96 |
1.02 |
1.06 |
1.07 |
1.02 |
0.98 |
1.05 |
1.01 |
|
F-X-Level |
0.96 |
1.02 |
0.96 |
1.00 |
1.04 |
1.10 |
1.02 |
0.98 |
1.03 |
1.01 |
|
F-X-MARX-Level |
1.10 |
1.01 |
0.95 |
1.00 |
1.06 |
1.05 |
1.01 |
0.98 |
1.03 |
0.97 |
|
X |
0.95 |
1.03 |
0.96 |
1.00 |
1.08 |
1.05 |
1.03 |
0.99 |
1.04 |
1.02 |
|
MARX |
0.96 |
1.01 |
0.96 |
1.00 |
1.06 |
1.03 |
1.01 |
0.97 |
0.96 |
0.97 |
|
MAF |
0.98 |
1.00 |
0.96 |
1.01 |
1.08 |
1.05 |
1.03 |
1.00 |
1.09 |
1.04 |
|
X-MARX |
1.15 |
1.00 |
0.95 |
1.00 |
1.07 |
1.04 |
1.01 |
0.99 |
1.09 |
0.97 |
|
X-MAF |
1.23 |
1.02 |
0.95 |
1.00 |
1.06 |
1.09 |
1.03 |
0.98 |
1.03 |
1.00 |
|
X-Level |
0.96 |
1.02 |
0.96 |
1.00 |
1.05 |
1.06 |
1.03 |
0.98 |
1.03 |
1.01 |
|
X-MARX-Level |
1.13 |
1.01 |
0.95 |
1.00 |
1.06 |
1.04 |
1.01 |
0.97 |
1.03 |
0.96 |
|
Elastic Net |
F |
0.97 |
0.97 |
0.97 |
1.01 |
1.03 |
1.04 |
1.00 |
0.98 |
0.98 |
0.97 |
F-X |
0.96 |
1.01 |
0.96 |
1.01 |
1.04 |
1.04 |
1.01 |
1.00 |
1.04 |
1.00 |
|
F-MARX |
0.95 |
0.98 |
0.94 |
1.00 |
1.05 |
1.02 |
1.00 |
0.99 |
0.97 |
0.92 |
|
F-MAF |
0.95 |
0.98 |
0.95 |
1.00 |
1.04 |
1.06 |
1.01 |
0.99 |
1.04 |
1.03 |
|
F-Level |
0.96 |
0.98 |
0.95 |
1.01 |
1.03 |
1.02 |
0.97 |
1.00 |
1.00 |
0.99 |
|
F-X-MARX |
1.09 |
1.01 |
0.95 |
1.00 |
1.05 |
1.04 |
1.00 |
0.98 |
1.19 |
0.96 |
|
F-X-MAF |
0.95 |
1.01 |
0.96 |
1.00 |
1.05 |
1.10 |
1.02 |
0.99 |
1.06 |
0.99 |
|
F-X-Level |
0.96 |
1.01 |
0.96 |
1.01 |
1.04 |
1.03 |
1.02 |
0.99 |
1.03 |
0.99 |
|
F-X-MARX-Level |
1.08 |
1.01 |
0.95 |
1.00 |
1.05 |
1.04 |
1.00 |
0.98 |
1.19 |
0.97 |
|
X |
0.96 |
1.02 |
0.96 |
1.00 |
1.04 |
1.05 |
1.02 |
0.98 |
1.03 |
0.99 |
|
MARX |
0.96 |
1.00 |
0.95 |
1.00 |
1.04 |
1.03 |
0.99 |
0.97 |
0.97 |
0.95 |
|
MAF |
0.97 |
0.99 |
0.96 |
1.01 |
1.05 |
1.06 |
1.03 |
1.00 |
1.10 |
1.03 |
|
X-MARX |
1.14 |
1.00 |
0.95 |
1.00 |
1.06 |
1.04 |
1.00 |
0.98 |
1.12 |
0.96 |
|
X-MAF |
0.95 |
1.01 |
0.96 |
1.00 |
1.06 |
1.04 |
1.02 |
1.00 |
1.03 |
0.99 |
|
X-Level |
0.96 |
1.01 |
0.96 |
0.99 |
1.04 |
1.04 |
1.02 |
0.98 |
1.03 |
1.00 |
|
X-MARX-Level |
1.09 |
1.01 |
0.95 |
1.00 |
1.08 |
1.07 |
1.01 |
0.97 |
1.04 |
0.96 |
|
Linear Boosting |
F |
0.97 |
1.00 |
0.97 |
1.00 |
1.03 |
1.04 |
1.00 |
1.17 |
1.07 |
0.99 |
F-X |
0.98 |
1.02 |
0.96 |
1.00 |
1.07 |
1.05 |
1.04 |
1.06 |
1.08 |
1.02 |
|
F-MARX |
0.96 |
1.05 |
0.96 |
0.99 |
1.04 |
1.03 |
1.01 |
1.09 |
1.00 |
0.98 |
|
F-MAF |
0.94 |
0.95 |
0.94 |
1.01 |
1.05 |
1.03 |
1.02 |
1.01 |
1.06 |
1.03 |
|
F-Level |
0.95 |
0.99 |
0.96 |
1.01 |
1.03 |
1.04 |
1.02 |
1.04 |
1.01 |
1.01 |
|
F-X-MARX |
0.94 |
1.05 |
0.96 |
1.00 |
1.07 |
1.12 |
1.04 |
1.08 |
1.14 |
0.96 |
|
F-X-MAF |
1.23 |
1.00 |
0.95 |
0.99 |
1.06 |
1.05 |
1.05 |
0.99 |
1.03 |
1.03 |
|
F-X-Level |
0.94 |
0.99 |
0.96 |
1.00 |
1.07 |
1.03 |
1.03 |
1.02 |
1.09 |
1.01 |
|
F-X-MARX-Level |
0.94 |
0.99 |
0.94 |
0.99 |
1.07 |
1.05 |
1.03 |
1.02 |
0.98 |
0.94 |
|
X |
0.96 |
1.08 |
0.96 |
1.02 |
1.08 |
1.06 |
1.04 |
1.06 |
1.22 |
1.02 |
|
MARX |
0.95 |
1.10 |
0.95 |
0.99 |
1.06 |
1.04 |
1.00 |
1.07 |
1.09 |
0.97 |
|
MAF |
0.99 |
1.00 |
0.96 |
1.00 |
1.06 |
1.04 |
1.02 |
1.02 |
1.19 |
1.04 |
|
X-MARX |
0.96 |
1.08 |
0.94 |
1.00 |
1.06 |
1.10 |
1.03 |
1.09 |
1.04 |
0.97 |
|
X-MAF |
0.96 |
1.02 |
0.96 |
1.02 |
1.11 |
1.06 |
1.04 |
0.98 |
1.02 |
1.01 |
|
X-Level |
0.95 |
1.05 |
0.96 |
1.00 |
1.06 |
1.06 |
1.05 |
1.04 |
1.03 |
1.01 |
|
X-MARX-Level |
0.94 |
1.01 |
0.94 |
1.06 |
1.10 |
1.03 |
1.03 |
1.03 |
1.03 |
1.02 |
|
Random Forest |
F |
0.95 |
0.99 |
0.97 |
0.97 |
1.05 |
1.04 |
1.04 |
0.97 |
1.00 |
0.97 |
F-X |
0.96 |
1.00 |
0.95 |
0.98 |
1.05 |
1.04 |
1.04 |
0.96 |
1.00 |
0.97 |
|
F-MARX |
0.93 |
0.95 |
0.94 |
0.95 |
1.05 |
1.03 |
1.03 |
0.96 |
0.97 |
0.95 |
|
F-MAF |
0.96 |
0.97 |
0.97 |
0.98 |
1.04 |
1.04 |
1.04 |
0.97 |
1.01 |
0.97 |
|
F-Level |
0.94 |
1.00 |
0.96 |
1.02 |
1.05 |
1.05 |
1.04 |
0.96 |
1.00 |
0.98 |
|
F-X-MARX |
0.93 |
0.96 |
0.95 |
0.96 |
1.05 |
1.04 |
1.03 |
0.96 |
0.98 |
0.95 |
|
F-X-MAF |
0.94 |
0.98 |
0.95 |
0.97 |
1.06 |
1.04 |
1.05 |
0.96 |
0.99 |
0.98 |
|
F-X-Level |
0.95 |
0.99 |
0.95 |
1.00 |
1.05 |
1.04 |
1.05 |
0.95 |
1.00 |
0.98 |
|
F-X-MARX-Level |
0.92 |
0.94 |
0.95 |
0.97 |
1.05 |
1.04 |
1.04 |
0.96 |
0.97 |
0.95 |
|
X |
0.96 |
1.01 |
0.95 |
0.98 |
1.04 |
1.04 |
1.05 |
0.96 |
1.00 |
0.97 |
|
MARX |
0.93 |
0.95 |
0.95 |
0.94 |
1.06 |
1.03 |
1.03 |
0.97 |
0.97 |
0.95 |
|
MAF |
0.97 |
0.99 |
0.98 |
0.99 |
1.05 |
1.04 |
1.05 |
0.98 |
1.02 |
0.96 |
|
X-MARX |
0.93 |
0.96 |
0.94 |
0.96 |
1.05 |
1.03 |
1.04 |
0.96 |
0.98 |
0.95 |
|
X-MAF |
0.96 |
0.99 |
0.95 |
0.97 |
1.05 |
1.04 |
1.05 |
0.96 |
0.99 |
0.98 |
|
X-Level |
0.95 |
0.99 |
0.95 |
1.00 |
1.05 |
1.05 |
1.05 |
0.95 |
0.99 |
0.97 |
|
X-MARX-Level |
0.92 |
0.95 |
0.94 |
0.98 |
1.06 |
1.04 |
1.04 |
0.96 |
0.96 |
0.95 |
|
Boosted Trees |
F |
0.98 |
1.05 |
1.01 |
1.02 |
1.05 |
1.02 |
1.06 |
1.04 |
0.97 |
0.98 |
F-X |
0.98 |
1.04 |
0.95 |
1.00 |
1.06 |
1.04 |
1.07 |
1.01 |
0.99 |
0.99 |
|
F-MARX |
0.96 |
1.02 |
0.94 |
1.01 |
1.05 |
1.06 |
1.03 |
1.00 |
0.99 |
0.98 |
|
F-MAF |
0.95 |
1.07 |
0.99 |
1.04 |
1.06 |
1.05 |
1.08 |
1.00 |
1.01 |
0.97 |
|
F-Level |
0.97 |
1.02 |
1.01 |
1.06 |
1.07 |
1.05 |
1.10 |
0.98 |
1.02 |
1.00 |
|
F-X-MARX |
0.96 |
1.05 |
0.96 |
0.97 |
1.07 |
1.04 |
1.06 |
1.00 |
1.00 |
0.98 |
|
F-X-MAF |
0.99 |
1.06 |
0.97 |
1.02 |
1.06 |
1.02 |
1.07 |
0.99 |
0.99 |
0.99 |
|
F-X-Level |
0.96 |
1.09 |
0.95 |
1.03 |
1.05 |
1.06 |
1.08 |
0.99 |
1.00 |
1.01 |
|
F-X-MARX-Level |
0.97 |
1.01 |
0.96 |
0.98 |
1.05 |
1.02 |
1.07 |
0.98 |
0.99 |
0.99 |
|
X |
0.98 |
1.08 |
0.98 |
1.00 |
1.05 |
1.06 |
1.08 |
0.97 |
0.99 |
1.01 |
|
MARX |
0.94 |
1.02 |
0.95 |
0.99 |
1.08 |
1.05 |
1.04 |
1.01 |
0.99 |
0.97 |
|
MAF |
0.98 |
1.06 |
0.99 |
1.04 |
1.06 |
1.04 |
1.09 |
1.02 |
1.03 |
0.99 |
|
X-MARX |
0.95 |
1.00 |
0.96 |
1.00 |
1.06 |
1.05 |
1.08 |
0.97 |
0.99 |
0.98 |
|
X-MAF |
0.98 |
1.08 |
0.98 |
1.02 |
1.06 |
1.04 |
1.07 |
1.01 |
1.00 |
1.00 |
|
X-Level |
0.97 |
1.07 |
0.97 |
1.02 |
1.06 |
1.06 |
1.09 |
0.98 |
0.98 |
1.01 |
|
X-MARX-Level |
0.96 |
1.02 |
0.95 |
0.98 |
1.08 |
1.02 |
1.07 |
0.99 |
0.99 |
1.00 |
Horizon 3 (path-average)#
Horizon 3, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.088, INCOME 0.003, CONS 0.002, RETAIL 0.005, HOUST 0.033, M2 0.003, CPI 0.002, PPI 0.004
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
0.97 |
0.96 |
0.96 |
1.00 |
1.03 |
0.98 |
0.98 |
1.01 |
1.02 |
1.00 |
Adaptive Lasso |
F |
0.92 |
0.90 |
0.92 |
1.00 |
1.04 |
1.03 |
0.92 |
0.97 |
0.98 |
0.98 |
F-X |
1.00 |
0.99 |
0.94 |
1.03 |
1.16 |
1.07 |
0.92 |
0.95 |
1.00 |
1.00 |
|
F-MARX |
0.91 |
0.92 |
0.87 |
1.02 |
1.06 |
1.01 |
0.91 |
0.96 |
0.99 |
0.94 |
|
F-MAF |
0.96 |
0.93 |
0.89 |
1.02 |
1.04 |
1.03 |
0.93 |
0.98 |
1.02 |
1.02 |
|
F-Level |
0.90 |
0.91 |
0.90 |
1.03 |
1.01 |
1.02 |
0.93 |
0.96 |
1.12 |
0.99 |
|
F-X-MARX |
1.05 |
0.96 |
0.90 |
0.99 |
1.13 |
1.02 |
0.92 |
0.94 |
1.02 |
0.94 |
|
F-X-MAF |
0.99 |
0.96 |
0.91 |
0.99 |
1.08 |
1.09 |
0.92 |
0.94 |
1.00 |
0.99 |
|
F-X-Level |
1.00 |
0.98 |
0.95 |
1.02 |
1.08 |
1.10 |
0.93 |
0.93 |
1.02 |
0.99 |
|
F-X-MARX-Level |
1.05 |
0.96 |
0.91 |
1.03 |
1.08 |
1.05 |
0.91 |
0.92 |
1.02 |
0.94 |
|
X |
0.99 |
0.99 |
0.94 |
1.03 |
1.11 |
1.03 |
0.93 |
0.95 |
1.02 |
1.01 |
|
MARX |
0.92 |
0.94 |
0.86 |
1.02 |
1.08 |
1.02 |
0.91 |
0.95 |
0.99 |
0.94 |
|
MAF |
1.01 |
0.97 |
0.92 |
1.02 |
1.12 |
1.03 |
0.93 |
0.99 |
1.06 |
1.03 |
|
X-MARX |
1.08 |
0.95 |
0.90 |
1.05 |
1.09 |
1.03 |
0.92 |
0.94 |
0.99 |
0.94 |
|
X-MAF |
1.12 |
0.97 |
0.91 |
1.03 |
1.09 |
1.08 |
0.93 |
0.93 |
1.01 |
0.99 |
|
X-Level |
1.00 |
0.98 |
0.95 |
1.02 |
1.08 |
1.05 |
0.94 |
0.92 |
1.03 |
0.99 |
|
X-MARX-Level |
1.08 |
0.96 |
0.91 |
1.02 |
1.08 |
1.04 |
0.92 |
0.92 |
1.02 |
0.94 |
|
Elastic Net |
F |
0.95 |
0.89 |
0.91 |
1.01 |
1.04 |
1.03 |
0.94 |
0.97 |
0.97 |
0.97 |
F-X |
0.99 |
0.97 |
0.93 |
1.04 |
1.04 |
1.02 |
0.93 |
0.96 |
1.01 |
0.99 |
|
F-MARX |
0.91 |
0.90 |
0.86 |
1.02 |
1.06 |
1.01 |
0.93 |
0.96 |
0.99 |
0.93 |
|
F-MAF |
0.96 |
0.92 |
0.89 |
1.01 |
1.04 |
1.04 |
0.95 |
0.98 |
1.02 |
1.02 |
|
F-Level |
0.91 |
0.88 |
0.87 |
1.04 |
1.00 |
1.00 |
0.87 |
0.98 |
1.03 |
1.02 |
|
F-X-MARX |
1.05 |
0.96 |
0.88 |
1.04 |
1.09 |
1.04 |
0.92 |
0.94 |
1.00 |
0.94 |
|
F-X-MAF |
1.00 |
0.96 |
0.90 |
1.03 |
1.10 |
1.08 |
0.93 |
0.95 |
1.00 |
0.99 |
|
F-X-Level |
1.00 |
0.97 |
0.93 |
1.04 |
1.03 |
1.01 |
0.93 |
0.94 |
1.02 |
0.99 |
|
F-X-MARX-Level |
1.04 |
0.95 |
0.88 |
1.04 |
1.06 |
1.02 |
0.92 |
0.93 |
1.03 |
0.94 |
|
X |
1.00 |
0.98 |
0.93 |
1.03 |
1.06 |
1.02 |
0.94 |
0.94 |
1.01 |
0.99 |
|
MARX |
0.91 |
0.94 |
0.86 |
1.01 |
1.05 |
1.01 |
0.93 |
0.95 |
0.99 |
0.93 |
|
MAF |
1.00 |
0.96 |
0.91 |
1.02 |
1.08 |
1.03 |
0.99 |
0.99 |
1.05 |
1.02 |
|
X-MARX |
1.08 |
0.94 |
0.88 |
1.05 |
1.09 |
1.03 |
0.93 |
0.94 |
1.00 |
0.94 |
|
X-MAF |
0.99 |
0.96 |
0.91 |
1.00 |
1.12 |
1.02 |
0.94 |
0.96 |
1.00 |
0.99 |
|
X-Level |
1.00 |
0.97 |
0.94 |
1.01 |
1.04 |
1.02 |
0.93 |
0.93 |
1.02 |
1.00 |
|
X-MARX-Level |
1.05 |
0.95 |
0.88 |
1.05 |
1.10 |
1.07 |
0.92 |
0.93 |
1.01 |
0.94 |
|
Linear Boosting |
F |
0.94 |
0.97 |
0.91 |
1.01 |
1.02 |
1.02 |
0.95 |
1.21 |
1.09 |
1.01 |
F-X |
1.02 |
1.02 |
0.92 |
1.03 |
1.10 |
1.04 |
0.95 |
1.08 |
1.07 |
1.01 |
|
F-MARX |
0.90 |
1.06 |
0.88 |
1.03 |
1.03 |
1.03 |
0.94 |
1.13 |
1.06 |
0.97 |
|
F-MAF |
0.94 |
0.89 |
0.87 |
1.02 |
1.04 |
1.01 |
0.95 |
1.00 |
1.03 |
1.02 |
|
F-Level |
0.91 |
0.91 |
0.88 |
1.03 |
1.02 |
1.01 |
0.95 |
1.00 |
1.01 |
0.98 |
|
F-X-MARX |
0.95 |
1.08 |
0.87 |
1.07 |
1.07 |
1.11 |
0.96 |
1.12 |
1.10 |
0.96 |
|
F-X-MAF |
1.18 |
0.96 |
0.88 |
1.02 |
1.09 |
1.03 |
0.96 |
0.97 |
1.01 |
1.02 |
|
F-X-Level |
0.98 |
0.97 |
0.92 |
1.02 |
1.14 |
1.01 |
0.96 |
1.01 |
1.04 |
0.99 |
|
F-X-MARX-Level |
0.94 |
0.98 |
0.86 |
1.03 |
1.07 |
1.05 |
0.98 |
1.01 |
0.99 |
0.97 |
|
X |
1.00 |
1.13 |
0.93 |
1.04 |
1.14 |
1.04 |
0.95 |
1.08 |
1.12 |
1.01 |
|
MARX |
0.92 |
1.14 |
0.85 |
1.04 |
1.07 |
1.03 |
0.95 |
1.10 |
1.09 |
0.97 |
|
MAF |
1.01 |
0.96 |
0.92 |
1.01 |
1.07 |
1.01 |
0.96 |
1.02 |
1.10 |
1.01 |
|
X-MARX |
0.96 |
1.13 |
0.88 |
1.07 |
1.10 |
1.12 |
1.00 |
1.12 |
1.04 |
0.99 |
|
X-MAF |
1.00 |
0.98 |
0.90 |
1.00 |
1.18 |
1.04 |
0.95 |
0.96 |
1.00 |
1.04 |
|
X-Level |
0.99 |
1.04 |
0.94 |
1.02 |
1.11 |
1.04 |
0.95 |
1.01 |
0.99 |
1.00 |
|
X-MARX-Level |
0.94 |
1.00 |
0.88 |
1.10 |
1.14 |
1.00 |
0.97 |
1.02 |
0.99 |
1.03 |
|
Random Forest |
F |
0.95 |
0.96 |
0.91 |
0.96 |
1.02 |
1.01 |
0.93 |
0.96 |
0.93 |
0.96 |
F-X |
0.98 |
0.97 |
0.90 |
0.99 |
1.02 |
1.01 |
0.92 |
0.96 |
0.94 |
0.97 |
|
F-MARX |
0.87 |
0.82 |
0.83 |
0.96 |
1.01 |
0.99 |
0.94 |
0.96 |
0.94 |
0.96 |
|
F-MAF |
0.97 |
0.92 |
0.90 |
0.99 |
1.00 |
1.00 |
0.92 |
0.98 |
0.95 |
0.97 |
|
F-Level |
0.92 |
0.95 |
0.92 |
1.10 |
1.02 |
1.04 |
0.95 |
0.93 |
0.97 |
0.99 |
|
F-X-MARX |
0.89 |
0.84 |
0.85 |
0.97 |
1.02 |
1.00 |
0.92 |
0.96 |
0.95 |
0.97 |
|
F-X-MAF |
0.98 |
0.93 |
0.89 |
0.99 |
1.01 |
1.01 |
0.93 |
0.97 |
0.94 |
0.98 |
|
F-X-Level |
0.94 |
0.96 |
0.90 |
1.02 |
1.00 |
1.02 |
0.93 |
0.93 |
0.95 |
0.97 |
|
F-X-MARX-Level |
0.88 |
0.83 |
0.85 |
0.99 |
1.01 |
1.01 |
0.93 |
0.95 |
0.94 |
0.97 |
|
X |
0.99 |
0.98 |
0.91 |
0.98 |
1.01 |
1.01 |
0.94 |
0.96 |
0.93 |
0.97 |
|
MARX |
0.86 |
0.82 |
0.85 |
0.96 |
1.03 |
0.99 |
0.93 |
0.96 |
0.95 |
0.97 |
|
MAF |
1.01 |
0.97 |
0.92 |
1.00 |
1.01 |
1.01 |
0.94 |
0.98 |
0.95 |
0.96 |
|
X-MARX |
0.88 |
0.84 |
0.84 |
0.96 |
1.02 |
0.99 |
0.93 |
0.96 |
0.95 |
0.97 |
|
X-MAF |
0.99 |
0.95 |
0.89 |
0.98 |
1.02 |
1.01 |
0.93 |
0.97 |
0.94 |
0.98 |
|
X-Level |
0.95 |
0.98 |
0.91 |
1.04 |
1.01 |
1.01 |
0.94 |
0.92 |
0.95 |
0.98 |
|
X-MARX-Level |
0.88 |
0.83 |
0.84 |
1.00 |
1.03 |
1.01 |
0.93 |
0.94 |
0.94 |
0.97 |
|
Boosted Trees |
F |
0.97 |
1.00 |
0.98 |
1.00 |
1.02 |
0.99 |
0.96 |
1.01 |
0.94 |
0.96 |
F-X |
0.97 |
0.96 |
0.94 |
0.99 |
1.06 |
1.00 |
0.96 |
0.99 |
0.98 |
0.98 |
|
F-MARX |
0.91 |
0.87 |
0.86 |
0.99 |
1.04 |
1.01 |
0.97 |
1.00 |
0.98 |
0.98 |
|
F-MAF |
0.97 |
1.01 |
0.95 |
1.04 |
1.06 |
1.01 |
0.97 |
0.99 |
0.95 |
0.96 |
|
F-Level |
0.93 |
0.95 |
0.99 |
1.13 |
1.08 |
1.02 |
0.98 |
0.95 |
1.01 |
1.00 |
|
F-X-MARX |
0.91 |
0.90 |
0.89 |
0.99 |
1.05 |
0.97 |
0.99 |
1.00 |
0.98 |
0.99 |
|
F-X-MAF |
1.00 |
0.99 |
0.92 |
1.02 |
1.03 |
0.99 |
0.98 |
1.00 |
0.96 |
0.97 |
|
F-X-Level |
0.94 |
1.00 |
0.92 |
1.04 |
1.07 |
1.01 |
0.98 |
0.97 |
0.99 |
0.99 |
|
F-X-MARX-Level |
0.92 |
0.92 |
0.89 |
0.99 |
1.05 |
0.99 |
1.00 |
0.96 |
0.96 |
0.99 |
|
X |
0.97 |
1.03 |
0.94 |
1.01 |
1.05 |
1.03 |
0.97 |
1.00 |
0.96 |
0.99 |
|
MARX |
0.89 |
0.89 |
0.87 |
0.98 |
1.09 |
0.98 |
0.98 |
1.03 |
0.99 |
0.97 |
|
MAF |
1.04 |
1.01 |
0.98 |
1.04 |
1.05 |
1.01 |
0.97 |
1.00 |
0.97 |
0.96 |
|
X-MARX |
0.92 |
0.89 |
0.90 |
1.00 |
1.05 |
1.01 |
0.99 |
0.98 |
0.97 |
0.99 |
|
X-MAF |
1.00 |
1.04 |
0.94 |
1.03 |
1.02 |
1.03 |
0.99 |
1.00 |
0.98 |
0.99 |
|
X-Level |
0.94 |
1.04 |
0.94 |
1.04 |
1.07 |
1.04 |
1.01 |
0.96 |
0.96 |
1.01 |
|
X-MARX-Level |
0.89 |
0.90 |
0.88 |
0.98 |
1.07 |
0.99 |
0.98 |
0.94 |
0.97 |
0.99 |
Horizon 6 (path-average)#
Horizon 6, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.077, INCOME 0.002, CONS 0.002, RETAIL 0.004, HOUST 0.024, M2 0.002, CPI 0.002, PPI 0.004
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
0.93 |
0.93 |
0.95 |
0.97 |
1.01 |
0.95 |
1.02 |
0.99 |
0.97 |
0.97 |
Adaptive Lasso |
F |
0.86 |
0.87 |
0.90 |
0.95 |
1.00 |
1.03 |
0.90 |
0.95 |
0.93 |
0.94 |
F-X |
0.96 |
0.94 |
0.93 |
1.01 |
1.14 |
1.10 |
0.89 |
0.91 |
0.93 |
0.97 |
|
F-MARX |
0.87 |
0.87 |
0.84 |
0.96 |
1.03 |
1.00 |
0.90 |
0.95 |
0.96 |
0.92 |
|
F-MAF |
0.91 |
0.89 |
0.87 |
0.96 |
0.98 |
1.02 |
0.90 |
0.94 |
0.96 |
0.97 |
|
F-Level |
0.84 |
0.86 |
0.89 |
0.99 |
0.94 |
1.00 |
0.92 |
0.93 |
1.20 |
1.02 |
|
F-X-MARX |
1.02 |
0.91 |
0.89 |
0.95 |
1.05 |
1.00 |
0.90 |
0.91 |
0.97 |
0.91 |
|
F-X-MAF |
0.95 |
0.92 |
0.89 |
0.97 |
1.03 |
1.08 |
0.89 |
0.90 |
0.94 |
0.94 |
|
F-X-Level |
0.94 |
0.92 |
0.94 |
1.00 |
1.04 |
1.12 |
0.90 |
0.87 |
0.98 |
0.95 |
|
F-X-MARX-Level |
1.01 |
0.90 |
0.89 |
0.97 |
1.03 |
1.04 |
0.90 |
0.88 |
0.98 |
0.91 |
|
X |
0.96 |
0.94 |
0.93 |
1.02 |
1.10 |
1.00 |
0.90 |
0.92 |
0.96 |
0.97 |
|
MARX |
0.89 |
0.88 |
0.84 |
0.95 |
1.04 |
1.00 |
0.90 |
0.94 |
0.96 |
0.91 |
|
MAF |
0.96 |
0.91 |
0.89 |
0.98 |
1.10 |
1.01 |
0.90 |
0.95 |
0.98 |
0.98 |
|
X-MARX |
1.06 |
0.90 |
0.89 |
1.00 |
1.05 |
1.01 |
0.91 |
0.91 |
0.95 |
0.90 |
|
X-MAF |
1.10 |
0.93 |
0.89 |
0.99 |
1.05 |
1.07 |
0.91 |
0.90 |
0.95 |
0.94 |
|
X-Level |
0.95 |
0.93 |
0.94 |
1.01 |
1.04 |
1.03 |
0.91 |
0.87 |
0.99 |
0.95 |
|
X-MARX-Level |
1.03 |
0.90 |
0.89 |
0.97 |
1.04 |
1.02 |
0.91 |
0.88 |
0.98 |
0.91 |
|
Elastic Net |
F |
0.88 |
0.87 |
0.89 |
0.97 |
0.99 |
1.03 |
0.97 |
0.94 |
0.92 |
0.94 |
F-X |
0.95 |
0.93 |
0.92 |
1.02 |
0.99 |
0.98 |
0.92 |
0.93 |
0.94 |
0.94 |
|
F-MARX |
0.86 |
0.86 |
0.82 |
0.96 |
1.02 |
1.00 |
0.96 |
0.95 |
0.96 |
0.92 |
|
F-MAF |
0.90 |
0.88 |
0.86 |
0.96 |
0.98 |
1.02 |
0.99 |
0.94 |
0.96 |
0.97 |
|
F-Level |
0.83 |
0.83 |
0.85 |
1.00 |
0.94 |
0.98 |
0.99 |
0.95 |
1.09 |
1.03 |
|
F-X-MARX |
1.01 |
0.91 |
0.84 |
0.98 |
1.02 |
1.01 |
0.94 |
0.91 |
0.94 |
0.90 |
|
F-X-MAF |
0.96 |
0.92 |
0.88 |
1.01 |
1.01 |
1.11 |
0.92 |
0.91 |
0.93 |
0.95 |
|
F-X-Level |
0.94 |
0.90 |
0.92 |
1.02 |
0.97 |
0.98 |
0.92 |
0.90 |
0.98 |
0.96 |
|
F-X-MARX-Level |
1.00 |
0.89 |
0.84 |
0.98 |
0.98 |
1.00 |
0.94 |
0.89 |
1.00 |
0.90 |
|
X |
0.96 |
0.93 |
0.92 |
1.01 |
1.00 |
0.98 |
0.93 |
0.91 |
0.94 |
0.95 |
|
MARX |
0.86 |
0.88 |
0.82 |
0.95 |
0.99 |
0.99 |
0.96 |
0.94 |
0.95 |
0.91 |
|
MAF |
0.94 |
0.90 |
0.87 |
0.98 |
1.02 |
1.00 |
1.04 |
0.95 |
0.98 |
0.98 |
|
X-MARX |
1.06 |
0.90 |
0.84 |
0.98 |
1.01 |
1.00 |
0.95 |
0.91 |
0.94 |
0.90 |
|
X-MAF |
0.96 |
0.92 |
0.88 |
0.97 |
1.03 |
0.98 |
0.94 |
0.92 |
0.93 |
0.94 |
|
X-Level |
0.94 |
0.91 |
0.92 |
0.99 |
0.98 |
0.97 |
0.93 |
0.88 |
0.99 |
0.97 |
|
X-MARX-Level |
1.01 |
0.89 |
0.84 |
0.99 |
1.03 |
1.04 |
0.96 |
0.88 |
0.98 |
0.91 |
|
Linear Boosting |
F |
0.87 |
0.93 |
0.88 |
0.97 |
0.98 |
1.01 |
0.99 |
1.18 |
1.10 |
0.99 |
F-X |
0.99 |
0.98 |
0.92 |
1.00 |
1.07 |
1.02 |
0.94 |
1.04 |
1.03 |
0.97 |
|
F-MARX |
0.85 |
1.00 |
0.84 |
0.99 |
0.98 |
1.03 |
0.98 |
1.13 |
1.07 |
0.95 |
|
F-MAF |
0.89 |
0.87 |
0.84 |
0.97 |
0.97 |
0.98 |
1.00 |
0.95 |
0.96 |
0.97 |
|
F-Level |
0.83 |
0.84 |
0.85 |
0.98 |
0.98 |
1.00 |
1.00 |
0.97 |
1.01 |
0.97 |
|
F-X-MARX |
0.90 |
1.02 |
0.84 |
1.02 |
1.02 |
1.16 |
0.98 |
1.10 |
1.11 |
0.96 |
|
F-X-MAF |
1.16 |
0.93 |
0.86 |
0.99 |
1.05 |
1.00 |
0.96 |
0.93 |
0.96 |
0.97 |
|
F-X-Level |
0.93 |
0.93 |
0.90 |
0.99 |
1.10 |
0.99 |
0.96 |
0.98 |
0.98 |
0.94 |
|
F-X-MARX-Level |
0.89 |
0.92 |
0.82 |
0.98 |
1.03 |
1.04 |
1.00 |
1.00 |
1.01 |
0.96 |
|
X |
0.96 |
1.06 |
0.92 |
1.03 |
1.12 |
1.02 |
0.95 |
1.05 |
1.08 |
0.96 |
|
MARX |
0.86 |
1.04 |
0.83 |
1.00 |
1.01 |
1.00 |
1.01 |
1.10 |
1.13 |
0.98 |
|
MAF |
0.95 |
0.91 |
0.89 |
0.96 |
1.00 |
0.97 |
0.99 |
0.97 |
1.03 |
0.98 |
|
X-MARX |
0.93 |
1.06 |
0.84 |
1.00 |
1.06 |
1.11 |
1.02 |
1.11 |
1.05 |
0.99 |
|
X-MAF |
0.95 |
0.93 |
0.88 |
0.97 |
1.16 |
1.01 |
0.94 |
0.91 |
0.97 |
1.01 |
|
X-Level |
0.94 |
0.96 |
0.93 |
1.00 |
1.07 |
1.02 |
0.94 |
0.98 |
0.95 |
0.96 |
|
X-MARX-Level |
0.88 |
0.93 |
0.84 |
1.09 |
1.13 |
0.98 |
0.99 |
1.01 |
0.98 |
1.05 |
|
Random Forest |
F |
0.88 |
0.90 |
0.87 |
0.90 |
0.93 |
0.95 |
0.92 |
0.91 |
0.84 |
0.90 |
F-X |
0.94 |
0.93 |
0.89 |
0.92 |
0.92 |
0.96 |
0.89 |
0.92 |
0.85 |
0.91 |
|
F-MARX |
0.84 |
0.81 |
0.80 |
0.89 |
0.92 |
0.92 |
0.90 |
0.93 |
0.89 |
0.96 |
|
F-MAF |
0.93 |
0.87 |
0.87 |
0.89 |
0.89 |
0.94 |
0.89 |
0.94 |
0.88 |
0.93 |
|
F-Level |
0.89 |
0.93 |
0.93 |
1.09 |
0.89 |
1.00 |
0.93 |
0.86 |
0.88 |
0.97 |
|
F-X-MARX |
0.85 |
0.83 |
0.82 |
0.88 |
0.93 |
0.95 |
0.87 |
0.93 |
0.90 |
0.95 |
|
F-X-MAF |
0.93 |
0.90 |
0.88 |
0.90 |
0.90 |
0.96 |
0.88 |
0.93 |
0.86 |
0.93 |
|
F-X-Level |
0.90 |
0.93 |
0.89 |
0.96 |
0.92 |
0.97 |
0.89 |
0.86 |
0.86 |
0.94 |
|
F-X-MARX-Level |
0.84 |
0.82 |
0.82 |
0.90 |
0.92 |
0.95 |
0.89 |
0.90 |
0.89 |
0.96 |
|
X |
0.94 |
0.94 |
0.90 |
0.92 |
0.93 |
0.95 |
0.90 |
0.92 |
0.84 |
0.91 |
|
MARX |
0.83 |
0.81 |
0.81 |
0.89 |
0.94 |
0.93 |
0.89 |
0.93 |
0.90 |
0.97 |
|
MAF |
0.96 |
0.89 |
0.90 |
0.91 |
0.91 |
0.95 |
0.90 |
0.94 |
0.89 |
0.93 |
|
X-MARX |
0.85 |
0.82 |
0.82 |
0.88 |
0.94 |
0.94 |
0.88 |
0.92 |
0.90 |
0.95 |
|
X-MAF |
0.94 |
0.90 |
0.88 |
0.90 |
0.92 |
0.96 |
0.88 |
0.92 |
0.86 |
0.93 |
|
X-Level |
0.92 |
0.93 |
0.90 |
0.98 |
0.91 |
0.98 |
0.90 |
0.86 |
0.86 |
0.94 |
|
X-MARX-Level |
0.85 |
0.82 |
0.82 |
0.91 |
0.94 |
0.94 |
0.89 |
0.89 |
0.89 |
0.96 |
|
Boosted Trees |
F |
0.89 |
0.92 |
0.96 |
0.96 |
0.96 |
0.93 |
0.93 |
0.96 |
0.88 |
0.91 |
F-X |
0.92 |
0.94 |
0.95 |
0.92 |
0.97 |
0.95 |
0.97 |
0.98 |
0.90 |
0.92 |
|
F-MARX |
0.87 |
0.81 |
0.85 |
0.92 |
0.99 |
0.95 |
0.96 |
0.99 |
0.95 |
0.97 |
|
F-MAF |
0.88 |
0.91 |
0.92 |
1.00 |
0.98 |
0.96 |
0.92 |
0.95 |
0.90 |
0.91 |
|
F-Level |
0.88 |
0.92 |
0.99 |
1.14 |
1.01 |
0.99 |
0.96 |
0.90 |
0.98 |
0.97 |
|
F-X-MARX |
0.84 |
0.86 |
0.86 |
0.91 |
0.96 |
0.93 |
0.96 |
0.98 |
0.93 |
0.97 |
|
F-X-MAF |
0.92 |
0.92 |
0.92 |
0.96 |
0.93 |
0.95 |
0.96 |
0.96 |
0.89 |
0.91 |
|
F-X-Level |
0.91 |
0.95 |
0.91 |
1.00 |
0.99 |
0.99 |
0.97 |
0.93 |
0.93 |
0.94 |
|
F-X-MARX-Level |
0.87 |
0.86 |
0.88 |
0.93 |
1.00 |
0.95 |
0.99 |
0.92 |
0.93 |
0.98 |
|
X |
0.92 |
0.97 |
0.94 |
0.98 |
0.95 |
0.97 |
0.95 |
0.97 |
0.89 |
0.91 |
|
MARX |
0.85 |
0.84 |
0.86 |
0.93 |
1.03 |
0.94 |
0.96 |
1.01 |
0.95 |
0.97 |
|
MAF |
0.99 |
0.90 |
0.95 |
0.96 |
0.98 |
0.96 |
0.94 |
0.97 |
0.92 |
0.91 |
|
X-MARX |
0.86 |
0.85 |
0.87 |
0.91 |
0.97 |
0.98 |
0.95 |
0.97 |
0.94 |
0.96 |
|
X-MAF |
0.94 |
0.95 |
0.95 |
0.97 |
0.92 |
0.97 |
0.97 |
0.98 |
0.91 |
0.93 |
|
X-Level |
0.90 |
0.96 |
0.95 |
0.99 |
0.98 |
1.00 |
1.02 |
0.91 |
0.88 |
0.97 |
|
X-MARX-Level |
0.86 |
0.84 |
0.85 |
0.93 |
1.00 |
0.93 |
0.97 |
0.94 |
0.92 |
0.97 |
Horizon 9 (path-average)#
Horizon 9, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.004, EMP 0.001, UNRATE 0.076, INCOME 0.002, CONS 0.002, RETAIL 0.004, HOUST 0.021, M2 0.002, CPI 0.002, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
0.95 |
0.89 |
0.95 |
0.95 |
1.02 |
0.97 |
1.06 |
1.01 |
1.04 |
0.97 |
Adaptive Lasso |
F |
0.86 |
0.85 |
0.89 |
0.92 |
0.96 |
1.04 |
0.90 |
0.94 |
0.99 |
0.95 |
F-X |
0.96 |
0.92 |
0.93 |
0.98 |
1.13 |
1.16 |
0.90 |
0.89 |
0.96 |
0.95 |
|
F-MARX |
0.88 |
0.86 |
0.85 |
0.94 |
0.99 |
1.00 |
0.91 |
0.94 |
1.04 |
0.94 |
|
F-MAF |
0.91 |
0.88 |
0.87 |
0.94 |
0.96 |
1.01 |
0.90 |
0.93 |
1.01 |
0.95 |
|
F-Level |
0.86 |
0.83 |
0.89 |
0.99 |
0.90 |
1.01 |
0.95 |
0.94 |
1.31 |
1.03 |
|
F-X-MARX |
0.99 |
0.90 |
0.88 |
0.92 |
1.03 |
1.00 |
0.92 |
0.88 |
1.03 |
0.90 |
|
F-X-MAF |
0.96 |
0.91 |
0.90 |
0.98 |
0.99 |
1.11 |
0.89 |
0.88 |
0.96 |
0.93 |
|
F-X-Level |
0.94 |
0.90 |
0.93 |
0.97 |
1.01 |
1.20 |
0.91 |
0.84 |
1.05 |
0.95 |
|
F-X-MARX-Level |
0.98 |
0.88 |
0.88 |
0.94 |
1.00 |
1.04 |
0.92 |
0.85 |
1.05 |
0.91 |
|
X |
0.97 |
0.92 |
0.92 |
1.00 |
1.09 |
1.00 |
0.90 |
0.89 |
1.01 |
0.96 |
|
MARX |
0.90 |
0.88 |
0.84 |
0.92 |
1.03 |
1.01 |
0.93 |
0.93 |
1.03 |
0.98 |
|
MAF |
0.95 |
0.89 |
0.89 |
0.99 |
1.08 |
1.00 |
0.90 |
0.93 |
1.02 |
0.96 |
|
X-MARX |
1.03 |
0.90 |
0.88 |
0.98 |
1.01 |
1.00 |
0.93 |
0.89 |
0.98 |
0.89 |
|
X-MAF |
1.07 |
0.92 |
0.89 |
0.99 |
1.02 |
1.10 |
0.91 |
0.88 |
0.98 |
0.92 |
|
X-Level |
0.95 |
0.91 |
0.93 |
0.98 |
1.01 |
1.04 |
0.92 |
0.84 |
1.05 |
0.95 |
|
X-MARX-Level |
1.00 |
0.88 |
0.88 |
0.94 |
1.02 |
1.01 |
0.93 |
0.85 |
1.05 |
0.91 |
|
Elastic Net |
F |
0.87 |
0.86 |
0.88 |
0.95 |
0.95 |
1.04 |
1.02 |
0.94 |
0.99 |
0.94 |
F-X |
0.96 |
0.92 |
0.91 |
1.00 |
0.96 |
0.98 |
0.94 |
0.90 |
0.98 |
0.93 |
|
F-MARX |
0.88 |
0.85 |
0.83 |
0.94 |
1.00 |
1.00 |
1.01 |
0.94 |
1.03 |
0.95 |
|
F-MAF |
0.89 |
0.87 |
0.86 |
0.94 |
0.95 |
1.01 |
1.08 |
0.93 |
1.01 |
0.96 |
|
F-Level |
0.85 |
0.83 |
0.84 |
1.00 |
0.90 |
0.98 |
1.06 |
0.95 |
1.18 |
1.05 |
|
F-X-MARX |
0.99 |
0.89 |
0.84 |
0.96 |
1.00 |
1.01 |
0.98 |
0.89 |
0.98 |
0.89 |
|
F-X-MAF |
0.96 |
0.91 |
0.88 |
1.00 |
0.98 |
1.19 |
0.94 |
0.89 |
0.95 |
0.93 |
|
F-X-Level |
0.95 |
0.89 |
0.91 |
1.01 |
0.94 |
0.97 |
0.93 |
0.87 |
1.04 |
0.96 |
|
F-X-MARX-Level |
0.97 |
0.87 |
0.84 |
0.96 |
0.95 |
0.98 |
0.98 |
0.86 |
1.05 |
0.90 |
|
X |
0.97 |
0.92 |
0.91 |
0.99 |
0.98 |
0.97 |
0.95 |
0.89 |
0.98 |
0.94 |
|
MARX |
0.88 |
0.88 |
0.83 |
0.92 |
0.96 |
1.00 |
1.03 |
0.93 |
1.02 |
0.96 |
|
MAF |
0.93 |
0.88 |
0.87 |
0.97 |
1.00 |
0.99 |
1.17 |
0.93 |
1.03 |
0.96 |
|
X-MARX |
1.02 |
0.89 |
0.84 |
0.96 |
0.98 |
0.99 |
0.99 |
0.89 |
0.98 |
0.88 |
|
X-MAF |
0.96 |
0.91 |
0.88 |
0.96 |
0.99 |
0.97 |
0.96 |
0.90 |
0.97 |
0.92 |
|
X-Level |
0.95 |
0.89 |
0.91 |
0.98 |
0.95 |
0.96 |
0.95 |
0.85 |
1.05 |
0.96 |
|
X-MARX-Level |
0.98 |
0.87 |
0.84 |
0.96 |
1.00 |
1.05 |
0.99 |
0.85 |
1.04 |
0.90 |
|
Linear Boosting |
F |
0.86 |
0.89 |
0.87 |
0.95 |
0.94 |
1.01 |
1.04 |
1.17 |
1.24 |
1.00 |
F-X |
1.00 |
0.94 |
0.90 |
0.99 |
1.03 |
1.02 |
0.96 |
1.03 |
1.11 |
0.97 |
|
F-MARX |
0.87 |
0.94 |
0.82 |
0.95 |
0.93 |
1.03 |
1.03 |
1.13 |
1.19 |
1.00 |
|
F-MAF |
0.89 |
0.88 |
0.86 |
0.96 |
0.93 |
0.97 |
1.08 |
0.93 |
1.02 |
0.97 |
|
F-Level |
0.85 |
0.81 |
0.84 |
0.97 |
0.93 |
1.00 |
1.04 |
0.98 |
1.12 |
0.99 |
|
F-X-MARX |
0.91 |
0.96 |
0.83 |
0.98 |
0.97 |
1.23 |
1.03 |
1.10 |
1.25 |
0.99 |
|
F-X-MAF |
1.13 |
0.91 |
0.86 |
0.96 |
1.01 |
0.98 |
0.98 |
0.91 |
1.02 |
0.97 |
|
F-X-Level |
0.92 |
0.90 |
0.89 |
0.98 |
1.07 |
0.98 |
1.00 |
0.96 |
1.03 |
0.94 |
|
F-X-MARX-Level |
0.89 |
0.89 |
0.81 |
0.95 |
1.00 |
1.05 |
1.05 |
0.99 |
1.07 |
0.99 |
|
X |
0.95 |
0.99 |
0.90 |
1.00 |
1.09 |
1.02 |
0.97 |
1.02 |
1.18 |
0.97 |
|
MARX |
0.87 |
0.97 |
0.82 |
0.98 |
0.97 |
0.99 |
1.08 |
1.09 |
1.29 |
1.06 |
|
MAF |
0.95 |
0.91 |
0.89 |
0.96 |
0.96 |
0.95 |
1.09 |
0.95 |
1.09 |
0.96 |
|
X-MARX |
0.93 |
0.99 |
0.82 |
0.99 |
1.03 |
1.13 |
1.09 |
1.09 |
1.17 |
1.02 |
|
X-MAF |
0.95 |
0.91 |
0.88 |
0.95 |
1.13 |
1.01 |
0.97 |
0.89 |
1.03 |
1.01 |
|
X-Level |
0.94 |
0.91 |
0.90 |
0.99 |
1.03 |
1.00 |
0.96 |
0.97 |
1.03 |
0.95 |
|
X-MARX-Level |
0.88 |
0.89 |
0.83 |
1.08 |
1.10 |
0.97 |
1.05 |
1.00 |
1.05 |
1.07 |
|
Random Forest |
F |
0.87 |
0.86 |
0.87 |
0.87 |
0.89 |
0.92 |
0.91 |
0.89 |
0.85 |
0.87 |
F-X |
0.93 |
0.90 |
0.89 |
0.89 |
0.88 |
0.93 |
0.86 |
0.89 |
0.87 |
0.89 |
|
F-MARX |
0.85 |
0.79 |
0.82 |
0.82 |
0.86 |
0.91 |
0.86 |
0.92 |
0.94 |
0.96 |
|
F-MAF |
0.93 |
0.84 |
0.88 |
0.86 |
0.84 |
0.91 |
0.85 |
0.91 |
0.91 |
0.92 |
|
F-Level |
0.92 |
0.92 |
0.95 |
1.10 |
0.85 |
0.97 |
0.92 |
0.82 |
0.92 |
0.98 |
|
F-X-MARX |
0.86 |
0.81 |
0.83 |
0.83 |
0.87 |
0.93 |
0.84 |
0.91 |
0.94 |
0.95 |
|
F-X-MAF |
0.93 |
0.87 |
0.88 |
0.87 |
0.86 |
0.94 |
0.84 |
0.90 |
0.89 |
0.92 |
|
F-X-Level |
0.90 |
0.90 |
0.89 |
0.94 |
0.86 |
0.94 |
0.85 |
0.83 |
0.89 |
0.93 |
|
F-X-MARX-Level |
0.85 |
0.80 |
0.83 |
0.86 |
0.86 |
0.92 |
0.86 |
0.87 |
0.93 |
0.96 |
|
X |
0.93 |
0.90 |
0.90 |
0.89 |
0.88 |
0.92 |
0.86 |
0.88 |
0.86 |
0.89 |
|
MARX |
0.84 |
0.79 |
0.83 |
0.83 |
0.88 |
0.91 |
0.87 |
0.92 |
0.95 |
0.97 |
|
MAF |
0.96 |
0.85 |
0.91 |
0.88 |
0.84 |
0.93 |
0.87 |
0.91 |
0.91 |
0.91 |
|
X-MARX |
0.86 |
0.80 |
0.83 |
0.83 |
0.88 |
0.92 |
0.85 |
0.90 |
0.94 |
0.95 |
|
X-MAF |
0.93 |
0.87 |
0.89 |
0.87 |
0.87 |
0.94 |
0.85 |
0.90 |
0.88 |
0.91 |
|
X-Level |
0.92 |
0.90 |
0.90 |
0.95 |
0.87 |
0.95 |
0.87 |
0.82 |
0.89 |
0.93 |
|
X-MARX-Level |
0.86 |
0.80 |
0.84 |
0.86 |
0.88 |
0.91 |
0.86 |
0.87 |
0.93 |
0.96 |
|
Boosted Trees |
F |
0.88 |
0.87 |
0.96 |
0.93 |
0.92 |
0.89 |
0.92 |
0.96 |
0.92 |
0.89 |
F-X |
0.92 |
0.88 |
0.94 |
0.91 |
0.93 |
0.92 |
0.95 |
0.95 |
0.93 |
0.91 |
|
F-MARX |
0.87 |
0.77 |
0.85 |
0.86 |
0.95 |
0.96 |
0.97 |
0.99 |
1.02 |
0.97 |
|
F-MAF |
0.88 |
0.86 |
0.92 |
0.97 |
0.92 |
0.92 |
0.91 |
0.95 |
0.95 |
0.89 |
|
F-Level |
0.90 |
0.89 |
0.99 |
1.16 |
0.98 |
0.96 |
0.94 |
0.84 |
1.04 |
0.97 |
|
F-X-MARX |
0.84 |
0.84 |
0.85 |
0.86 |
0.92 |
0.90 |
0.95 |
0.98 |
0.99 |
0.97 |
|
F-X-MAF |
0.91 |
0.87 |
0.91 |
0.95 |
0.90 |
0.92 |
0.94 |
0.95 |
0.93 |
0.89 |
|
F-X-Level |
0.90 |
0.91 |
0.91 |
1.00 |
0.94 |
0.96 |
0.95 |
0.90 |
0.98 |
0.92 |
|
F-X-MARX-Level |
0.85 |
0.83 |
0.87 |
0.89 |
0.96 |
0.94 |
0.98 |
0.91 |
0.99 |
0.96 |
|
X |
0.93 |
0.91 |
0.93 |
0.98 |
0.93 |
0.94 |
0.94 |
0.94 |
0.93 |
0.90 |
|
MARX |
0.86 |
0.81 |
0.86 |
0.87 |
0.99 |
0.95 |
0.96 |
1.02 |
1.01 |
0.97 |
|
MAF |
1.00 |
0.83 |
0.95 |
0.95 |
0.93 |
0.93 |
0.91 |
0.96 |
0.97 |
0.89 |
|
X-MARX |
0.85 |
0.82 |
0.87 |
0.89 |
0.93 |
0.95 |
0.94 |
0.96 |
0.99 |
0.95 |
|
X-MAF |
0.95 |
0.91 |
0.93 |
0.97 |
0.87 |
0.93 |
0.96 |
0.96 |
0.95 |
0.91 |
|
X-Level |
0.90 |
0.91 |
0.93 |
1.00 |
0.93 |
0.97 |
1.01 |
0.88 |
0.92 |
0.95 |
|
X-MARX-Level |
0.85 |
0.82 |
0.86 |
0.89 |
0.97 |
0.91 |
0.96 |
0.92 |
0.99 |
0.97 |
Horizon 12 (path-average)#
Horizon 12, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.003, EMP 0.001, UNRATE 0.077, INCOME 0.002, CONS 0.002, RETAIL 0.003, HOUST 0.019, M2 0.002, CPI 0.001, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
0.97 |
0.88 |
0.94 |
0.90 |
1.00 |
0.98 |
1.15 |
1.02 |
1.09 |
1.03 |
Adaptive Lasso |
F |
0.87 |
0.84 |
0.86 |
0.89 |
0.91 |
1.03 |
0.90 |
0.95 |
1.03 |
0.98 |
F-X |
0.96 |
0.89 |
0.90 |
0.94 |
1.04 |
1.17 |
0.92 |
0.89 |
0.98 |
0.98 |
|
F-MARX |
0.90 |
0.86 |
0.84 |
0.90 |
0.96 |
0.99 |
0.93 |
0.94 |
1.08 |
1.02 |
|
F-MAF |
0.92 |
0.87 |
0.86 |
0.91 |
0.91 |
1.01 |
0.91 |
0.93 |
1.03 |
0.99 |
|
F-Level |
0.89 |
0.81 |
0.88 |
0.97 |
0.86 |
1.00 |
0.98 |
0.96 |
1.33 |
1.06 |
|
F-X-MARX |
0.99 |
0.89 |
0.86 |
0.89 |
0.99 |
0.99 |
0.95 |
0.87 |
1.06 |
0.96 |
|
F-X-MAF |
0.96 |
0.89 |
0.88 |
0.96 |
0.96 |
1.11 |
0.91 |
0.88 |
0.99 |
0.95 |
|
F-X-Level |
0.94 |
0.88 |
0.90 |
0.95 |
0.96 |
1.20 |
0.93 |
0.85 |
1.08 |
0.99 |
|
F-X-MARX-Level |
0.98 |
0.87 |
0.87 |
0.91 |
0.95 |
1.03 |
0.95 |
0.85 |
1.09 |
0.97 |
|
X |
0.97 |
0.90 |
0.90 |
0.96 |
1.04 |
0.99 |
0.92 |
0.89 |
1.03 |
0.98 |
|
MARX |
0.91 |
0.87 |
0.84 |
0.89 |
1.01 |
1.00 |
0.95 |
0.92 |
1.08 |
1.08 |
|
MAF |
0.96 |
0.87 |
0.86 |
0.94 |
1.05 |
0.99 |
0.89 |
0.93 |
1.04 |
1.00 |
|
X-MARX |
1.03 |
0.89 |
0.87 |
0.94 |
0.98 |
0.99 |
0.96 |
0.89 |
1.00 |
0.94 |
|
X-MAF |
1.07 |
0.90 |
0.88 |
0.94 |
0.98 |
1.09 |
0.93 |
0.88 |
1.01 |
0.95 |
|
X-Level |
0.95 |
0.88 |
0.91 |
0.97 |
0.96 |
1.02 |
0.94 |
0.85 |
1.08 |
0.99 |
|
X-MARX-Level |
1.00 |
0.87 |
0.86 |
0.91 |
0.99 |
1.00 |
0.96 |
0.85 |
1.09 |
0.97 |
|
Elastic Net |
F |
0.88 |
0.85 |
0.86 |
0.91 |
0.91 |
1.03 |
1.06 |
0.95 |
1.02 |
0.98 |
F-X |
0.96 |
0.90 |
0.88 |
0.95 |
0.93 |
0.97 |
0.97 |
0.90 |
1.01 |
0.96 |
|
F-MARX |
0.90 |
0.85 |
0.83 |
0.90 |
0.97 |
0.99 |
1.06 |
0.94 |
1.07 |
1.02 |
|
F-MAF |
0.91 |
0.87 |
0.84 |
0.91 |
0.90 |
1.00 |
1.12 |
0.93 |
1.03 |
1.00 |
|
F-Level |
0.89 |
0.81 |
0.84 |
0.99 |
0.86 |
0.98 |
1.15 |
0.96 |
1.20 |
1.09 |
|
F-X-MARX |
0.98 |
0.88 |
0.83 |
0.92 |
0.97 |
1.00 |
1.03 |
0.88 |
1.00 |
0.93 |
|
F-X-MAF |
0.96 |
0.89 |
0.86 |
0.95 |
0.95 |
1.20 |
0.97 |
0.89 |
0.98 |
0.95 |
|
F-X-Level |
0.94 |
0.87 |
0.88 |
0.96 |
0.91 |
0.96 |
0.96 |
0.87 |
1.08 |
0.99 |
|
F-X-MARX-Level |
0.97 |
0.86 |
0.82 |
0.92 |
0.91 |
0.98 |
1.03 |
0.85 |
1.09 |
0.95 |
|
X |
0.97 |
0.90 |
0.88 |
0.95 |
0.95 |
0.96 |
0.98 |
0.88 |
1.00 |
0.96 |
|
MARX |
0.90 |
0.87 |
0.83 |
0.89 |
0.93 |
0.99 |
1.09 |
0.92 |
1.08 |
1.06 |
|
MAF |
0.95 |
0.87 |
0.84 |
0.94 |
0.97 |
0.98 |
1.21 |
0.93 |
1.05 |
1.00 |
|
X-MARX |
1.02 |
0.88 |
0.83 |
0.92 |
0.95 |
0.98 |
1.05 |
0.89 |
1.00 |
0.93 |
|
X-MAF |
0.97 |
0.90 |
0.86 |
0.91 |
0.96 |
0.96 |
0.99 |
0.89 |
0.99 |
0.95 |
|
X-Level |
0.95 |
0.87 |
0.88 |
0.94 |
0.92 |
0.95 |
0.98 |
0.86 |
1.09 |
0.99 |
|
X-MARX-Level |
0.98 |
0.86 |
0.82 |
0.93 |
0.97 |
1.05 |
1.06 |
0.85 |
1.09 |
0.96 |
|
Linear Boosting |
F |
0.87 |
0.87 |
0.84 |
0.91 |
0.90 |
1.00 |
1.09 |
1.19 |
1.35 |
1.05 |
F-X |
0.98 |
0.90 |
0.86 |
0.95 |
1.01 |
1.01 |
0.99 |
1.03 |
1.19 |
1.01 |
|
F-MARX |
0.89 |
0.91 |
0.81 |
0.92 |
0.90 |
1.02 |
1.09 |
1.14 |
1.28 |
1.06 |
|
F-MAF |
0.91 |
0.88 |
0.84 |
0.93 |
0.88 |
0.96 |
1.13 |
0.93 |
1.06 |
1.00 |
|
F-Level |
0.87 |
0.80 |
0.82 |
0.96 |
0.89 |
1.00 |
1.10 |
1.01 |
1.19 |
1.05 |
|
F-X-MARX |
0.91 |
0.92 |
0.81 |
0.95 |
0.93 |
1.24 |
1.07 |
1.11 |
1.35 |
1.06 |
|
F-X-MAF |
1.12 |
0.89 |
0.84 |
0.93 |
0.97 |
0.98 |
1.01 |
0.90 |
1.07 |
1.00 |
|
F-X-Level |
0.92 |
0.87 |
0.85 |
0.94 |
1.03 |
0.97 |
1.03 |
0.98 |
1.10 |
0.98 |
|
F-X-MARX-Level |
0.90 |
0.86 |
0.80 |
0.93 |
0.95 |
1.03 |
1.09 |
1.00 |
1.14 |
1.05 |
|
X |
0.94 |
0.94 |
0.86 |
0.98 |
1.04 |
1.01 |
1.01 |
1.02 |
1.24 |
1.02 |
|
MARX |
0.89 |
0.92 |
0.82 |
0.94 |
0.93 |
0.98 |
1.15 |
1.11 |
1.38 |
1.13 |
|
MAF |
0.96 |
0.90 |
0.86 |
0.93 |
0.93 |
0.94 |
1.14 |
0.95 |
1.12 |
1.01 |
|
X-MARX |
0.93 |
0.94 |
0.81 |
0.94 |
0.98 |
1.11 |
1.14 |
1.10 |
1.26 |
1.08 |
|
X-MAF |
0.94 |
0.89 |
0.86 |
0.94 |
1.10 |
1.00 |
1.00 |
0.88 |
1.09 |
1.04 |
|
X-Level |
0.94 |
0.88 |
0.86 |
0.96 |
1.00 |
1.00 |
1.00 |
0.99 |
1.10 |
1.00 |
|
X-MARX-Level |
0.89 |
0.86 |
0.82 |
1.06 |
1.06 |
0.96 |
1.11 |
1.01 |
1.12 |
1.15 |
|
Random Forest |
F |
0.89 |
0.84 |
0.85 |
0.85 |
0.86 |
0.91 |
0.91 |
0.90 |
0.87 |
0.89 |
F-X |
0.94 |
0.87 |
0.87 |
0.88 |
0.84 |
0.94 |
0.87 |
0.89 |
0.88 |
0.92 |
|
F-MARX |
0.88 |
0.78 |
0.82 |
0.81 |
0.82 |
0.91 |
0.87 |
0.92 |
0.97 |
1.01 |
|
F-MAF |
0.96 |
0.81 |
0.87 |
0.84 |
0.80 |
0.91 |
0.85 |
0.92 |
0.92 |
0.95 |
|
F-Level |
0.95 |
0.90 |
0.94 |
1.10 |
0.81 |
0.97 |
0.93 |
0.81 |
0.97 |
1.05 |
|
F-X-MARX |
0.88 |
0.80 |
0.82 |
0.81 |
0.84 |
0.94 |
0.85 |
0.91 |
0.97 |
0.99 |
|
F-X-MAF |
0.95 |
0.84 |
0.86 |
0.85 |
0.83 |
0.94 |
0.85 |
0.89 |
0.90 |
0.95 |
|
F-X-Level |
0.92 |
0.87 |
0.88 |
0.92 |
0.83 |
0.95 |
0.86 |
0.83 |
0.94 |
0.98 |
|
F-X-MARX-Level |
0.87 |
0.79 |
0.83 |
0.84 |
0.83 |
0.93 |
0.88 |
0.87 |
0.98 |
1.02 |
|
X |
0.94 |
0.87 |
0.88 |
0.88 |
0.85 |
0.93 |
0.88 |
0.88 |
0.88 |
0.92 |
|
MARX |
0.87 |
0.78 |
0.82 |
0.82 |
0.84 |
0.91 |
0.89 |
0.93 |
0.99 |
1.02 |
|
MAF |
0.99 |
0.81 |
0.89 |
0.85 |
0.82 |
0.94 |
0.88 |
0.91 |
0.93 |
0.95 |
|
X-MARX |
0.88 |
0.79 |
0.82 |
0.82 |
0.85 |
0.92 |
0.86 |
0.91 |
0.96 |
0.99 |
|
X-MAF |
0.95 |
0.84 |
0.87 |
0.85 |
0.85 |
0.94 |
0.86 |
0.90 |
0.90 |
0.94 |
|
X-Level |
0.93 |
0.87 |
0.88 |
0.95 |
0.84 |
0.95 |
0.88 |
0.82 |
0.94 |
0.98 |
|
X-MARX-Level |
0.88 |
0.79 |
0.83 |
0.85 |
0.85 |
0.92 |
0.87 |
0.86 |
0.98 |
1.02 |
|
Boosted Trees |
F |
0.90 |
0.84 |
0.93 |
0.91 |
0.89 |
0.89 |
0.93 |
0.97 |
0.95 |
0.92 |
F-X |
0.94 |
0.85 |
0.92 |
0.88 |
0.89 |
0.91 |
0.97 |
0.96 |
0.97 |
0.94 |
|
F-MARX |
0.90 |
0.75 |
0.84 |
0.85 |
0.91 |
0.95 |
1.01 |
0.99 |
1.05 |
1.03 |
|
F-MAF |
0.89 |
0.82 |
0.88 |
0.94 |
0.89 |
0.91 |
0.92 |
0.95 |
0.98 |
0.91 |
|
F-Level |
0.93 |
0.88 |
0.94 |
1.16 |
0.96 |
0.96 |
0.96 |
0.84 |
1.13 |
1.03 |
|
F-X-MARX |
0.87 |
0.82 |
0.85 |
0.86 |
0.89 |
0.88 |
0.97 |
0.98 |
1.02 |
1.01 |
|
F-X-MAF |
0.92 |
0.84 |
0.88 |
0.93 |
0.87 |
0.91 |
0.95 |
0.96 |
0.96 |
0.92 |
|
F-X-Level |
0.91 |
0.87 |
0.89 |
0.99 |
0.93 |
0.94 |
0.96 |
0.90 |
1.03 |
0.96 |
|
F-X-MARX-Level |
0.87 |
0.82 |
0.85 |
0.91 |
0.94 |
0.92 |
1.01 |
0.92 |
1.03 |
1.02 |
|
X |
0.95 |
0.88 |
0.90 |
0.96 |
0.88 |
0.94 |
0.98 |
0.93 |
0.96 |
0.92 |
|
MARX |
0.89 |
0.79 |
0.85 |
0.86 |
0.94 |
0.93 |
1.00 |
1.02 |
1.06 |
1.03 |
|
MAF |
1.02 |
0.79 |
0.91 |
0.92 |
0.91 |
0.92 |
0.92 |
0.96 |
1.01 |
0.91 |
|
X-MARX |
0.87 |
0.81 |
0.86 |
0.88 |
0.90 |
0.94 |
0.96 |
0.97 |
1.03 |
1.00 |
|
X-MAF |
0.97 |
0.87 |
0.92 |
0.95 |
0.84 |
0.93 |
0.97 |
0.96 |
0.97 |
0.93 |
|
X-Level |
0.92 |
0.88 |
0.91 |
0.98 |
0.91 |
0.95 |
1.03 |
0.88 |
0.96 |
0.98 |
|
X-MARX-Level |
0.88 |
0.80 |
0.85 |
0.89 |
0.93 |
0.89 |
0.97 |
0.92 |
1.03 |
1.02 |
Horizon 24 (path-average)#
Horizon 24, path-average (SGR) — FM absolute RMSE (denominator): INDPRO 0.003, EMP 0.001, UNRATE 0.068, INCOME 0.002, CONS 0.002, RETAIL 0.003, HOUST 0.014, M2 0.002, CPI 0.002, PPI 0.003
Model |
Set |
INDPRO |
EMP |
UNRATE |
INCOME |
CONS |
RETAIL |
HOUST |
M2 |
CPI |
PPI |
|---|---|---|---|---|---|---|---|---|---|---|---|
AR |
— |
1.15 |
0.94 |
1.13 |
0.96 |
0.97 |
1.05 |
1.48 |
1.02 |
1.04 |
0.99 |
Adaptive Lasso |
F |
1.02 |
0.93 |
0.99 |
0.91 |
0.82 |
1.06 |
1.01 |
0.95 |
0.99 |
0.96 |
F-X |
1.02 |
0.94 |
1.01 |
0.93 |
0.96 |
1.18 |
1.05 |
0.89 |
0.91 |
0.94 |
|
F-MARX |
1.07 |
0.95 |
1.03 |
0.92 |
0.84 |
1.02 |
1.09 |
0.96 |
0.98 |
1.01 |
|
F-MAF |
1.04 |
0.96 |
1.00 |
0.92 |
0.79 |
1.02 |
1.04 |
0.95 |
0.97 |
0.92 |
|
F-Level |
1.03 |
0.90 |
1.02 |
1.07 |
0.82 |
1.00 |
1.07 |
1.03 |
1.30 |
1.08 |
|
F-X-MARX |
1.09 |
0.96 |
1.00 |
0.97 |
0.88 |
1.00 |
1.10 |
0.88 |
0.99 |
0.92 |
|
F-X-MAF |
1.04 |
0.95 |
1.02 |
1.03 |
0.84 |
1.13 |
1.05 |
0.89 |
0.92 |
0.90 |
|
F-X-Level |
1.00 |
0.93 |
1.03 |
0.98 |
0.88 |
1.27 |
1.04 |
0.92 |
1.03 |
0.95 |
|
F-X-MARX-Level |
1.09 |
0.94 |
1.01 |
0.95 |
0.84 |
1.04 |
1.09 |
0.92 |
1.04 |
0.94 |
|
X |
1.05 |
0.95 |
1.01 |
0.96 |
0.93 |
0.99 |
1.05 |
0.89 |
0.97 |
0.93 |
|
MARX |
1.10 |
0.98 |
1.02 |
0.92 |
0.89 |
1.03 |
1.12 |
0.95 |
0.98 |
1.04 |
|
MAF |
1.07 |
0.95 |
0.97 |
0.99 |
0.93 |
0.98 |
1.01 |
0.94 |
0.96 |
0.93 |
|
X-MARX |
1.14 |
0.97 |
1.01 |
0.95 |
0.86 |
0.98 |
1.12 |
0.89 |
0.92 |
0.90 |
|
X-MAF |
1.15 |
0.96 |
1.01 |
0.95 |
0.87 |
1.12 |
1.06 |
0.89 |
0.95 |
0.91 |
|
X-Level |
1.01 |
0.93 |
1.03 |
1.00 |
0.90 |
1.08 |
1.05 |
0.92 |
1.03 |
0.94 |
|
X-MARX-Level |
1.11 |
0.94 |
1.01 |
0.95 |
0.87 |
1.00 |
1.11 |
0.91 |
1.03 |
0.94 |
|
Elastic Net |
F |
0.99 |
0.93 |
0.99 |
0.93 |
0.80 |
1.06 |
1.27 |
0.94 |
0.99 |
0.94 |
F-X |
1.03 |
0.95 |
0.99 |
0.93 |
0.85 |
1.03 |
1.15 |
0.90 |
0.95 |
0.93 |
|
F-MARX |
1.09 |
0.96 |
1.01 |
0.93 |
0.86 |
1.01 |
1.31 |
0.96 |
0.97 |
1.00 |
|
F-MAF |
1.01 |
0.96 |
0.97 |
0.94 |
0.79 |
1.01 |
1.40 |
0.95 |
0.96 |
0.95 |
|
F-Level |
1.04 |
0.91 |
1.01 |
1.10 |
0.78 |
0.98 |
1.50 |
1.04 |
1.18 |
1.11 |
|
F-X-MARX |
1.09 |
0.95 |
0.98 |
0.93 |
0.88 |
1.01 |
1.25 |
0.88 |
0.93 |
0.90 |
|
F-X-MAF |
1.04 |
0.95 |
1.00 |
0.94 |
0.85 |
1.26 |
1.13 |
0.90 |
0.92 |
0.91 |
|
F-X-Level |
1.01 |
0.93 |
1.00 |
0.97 |
0.83 |
1.01 |
1.13 |
0.94 |
1.04 |
0.94 |
|
F-X-MARX-Level |
1.08 |
0.94 |
0.97 |
0.95 |
0.83 |
0.98 |
1.26 |
0.92 |
1.05 |
0.92 |
|
X |
1.04 |
0.95 |
0.99 |
0.94 |
0.88 |
1.03 |
1.15 |
0.89 |
0.94 |
0.92 |
|
MARX |
1.10 |
0.97 |
1.02 |
0.92 |
0.82 |
1.02 |
1.37 |
0.95 |
0.97 |
1.05 |
|
MAF |
1.05 |
0.95 |
0.95 |
0.99 |
0.84 |
0.97 |
1.55 |
0.95 |
0.96 |
0.94 |
|
X-MARX |
1.13 |
0.96 |
0.97 |
0.94 |
0.84 |
0.98 |
1.28 |
0.89 |
0.93 |
0.89 |
|
X-MAF |
1.05 |
0.95 |
1.00 |
0.94 |
0.88 |
0.96 |
1.16 |
0.90 |
0.92 |
0.91 |
|
X-Level |
1.01 |
0.93 |
1.00 |
1.00 |
0.85 |
0.94 |
1.15 |
0.93 |
1.05 |
0.95 |
|
X-MARX-Level |
1.08 |
0.94 |
0.97 |
0.95 |
0.86 |
1.07 |
1.29 |
0.92 |
1.04 |
0.92 |
|
Linear Boosting |
F |
1.01 |
0.95 |
0.99 |
0.91 |
0.80 |
1.01 |
1.36 |
1.16 |
1.34 |
1.02 |
F-X |
1.06 |
0.93 |
0.97 |
0.93 |
0.92 |
1.03 |
1.19 |
1.04 |
1.15 |
0.98 |
|
F-MARX |
1.10 |
0.95 |
1.00 |
0.94 |
0.80 |
1.06 |
1.36 |
1.16 |
1.19 |
1.06 |
|
F-MAF |
1.03 |
0.97 |
1.00 |
0.94 |
0.79 |
0.94 |
1.41 |
0.97 |
1.00 |
0.95 |
|
F-Level |
1.02 |
0.90 |
0.98 |
1.03 |
0.81 |
1.01 |
1.35 |
1.09 |
1.22 |
1.05 |
|
F-X-MARX |
1.05 |
0.94 |
0.97 |
0.95 |
0.83 |
1.27 |
1.32 |
1.11 |
1.25 |
1.04 |
|
F-X-MAF |
1.23 |
0.93 |
0.96 |
0.94 |
0.86 |
0.97 |
1.25 |
0.93 |
1.04 |
0.98 |
|
F-X-Level |
1.01 |
0.92 |
0.98 |
0.95 |
0.94 |
0.95 |
1.28 |
1.05 |
1.10 |
0.97 |
|
F-X-MARX-Level |
1.04 |
0.92 |
0.97 |
0.95 |
0.85 |
1.03 |
1.34 |
1.06 |
1.07 |
1.04 |
|
X |
1.01 |
0.93 |
0.95 |
0.97 |
0.94 |
0.98 |
1.22 |
1.04 |
1.20 |
1.00 |
|
MARX |
1.13 |
0.95 |
1.00 |
0.97 |
0.85 |
0.98 |
1.47 |
1.12 |
1.27 |
1.14 |
|
MAF |
1.06 |
0.97 |
0.98 |
0.97 |
0.80 |
0.92 |
1.43 |
0.98 |
1.06 |
0.95 |
|
X-MARX |
1.07 |
0.94 |
0.95 |
0.94 |
0.88 |
1.12 |
1.44 |
1.11 |
1.16 |
1.06 |
|
X-MAF |
1.02 |
0.93 |
0.95 |
0.98 |
0.98 |
0.97 |
1.21 |
0.91 |
1.06 |
0.99 |
|
X-Level |
1.00 |
0.89 |
0.94 |
0.95 |
0.95 |
0.97 |
1.21 |
1.07 |
1.12 |
0.97 |
|
X-MARX-Level |
1.06 |
0.91 |
0.96 |
1.09 |
0.95 |
0.95 |
1.38 |
1.08 |
1.06 |
1.14 |
|
Random Forest |
F |
1.03 |
0.90 |
1.03 |
0.89 |
0.78 |
0.91 |
1.00 |
0.86 |
0.81 |
0.81 |
F-X |
1.05 |
0.91 |
1.03 |
0.93 |
0.74 |
0.95 |
0.95 |
0.86 |
0.80 |
0.86 |
|
F-MARX |
1.10 |
0.89 |
1.07 |
0.91 |
0.75 |
0.96 |
1.08 |
0.89 |
0.88 |
0.97 |
|
F-MAF |
1.12 |
0.88 |
1.06 |
0.93 |
0.73 |
0.92 |
0.94 |
0.86 |
0.84 |
0.89 |
|
F-Level |
1.16 |
0.96 |
1.17 |
1.23 |
0.77 |
1.02 |
1.10 |
0.78 |
0.93 |
1.02 |
|
F-X-MARX |
1.07 |
0.89 |
1.04 |
0.89 |
0.75 |
0.95 |
1.01 |
0.89 |
0.87 |
0.94 |
|
F-X-MAF |
1.08 |
0.90 |
1.03 |
0.92 |
0.73 |
0.95 |
0.93 |
0.85 |
0.82 |
0.89 |
|
F-X-Level |
1.06 |
0.92 |
1.05 |
1.00 |
0.74 |
0.96 |
0.96 |
0.81 |
0.88 |
0.95 |
|
F-X-MARX-Level |
1.07 |
0.89 |
1.06 |
0.92 |
0.74 |
0.94 |
1.03 |
0.87 |
0.91 |
0.99 |
|
X |
1.03 |
0.91 |
1.02 |
0.94 |
0.75 |
0.93 |
0.96 |
0.85 |
0.80 |
0.85 |
|
MARX |
1.10 |
0.88 |
1.08 |
0.92 |
0.77 |
0.96 |
1.11 |
0.90 |
0.90 |
0.98 |
|
MAF |
1.14 |
0.87 |
1.07 |
0.95 |
0.73 |
0.95 |
0.97 |
0.84 |
0.84 |
0.89 |
|
X-MARX |
1.05 |
0.89 |
1.05 |
0.89 |
0.76 |
0.94 |
1.02 |
0.88 |
0.87 |
0.94 |
|
X-MAF |
1.07 |
0.90 |
1.03 |
0.92 |
0.74 |
0.94 |
0.94 |
0.85 |
0.82 |
0.88 |
|
X-Level |
1.07 |
0.91 |
1.04 |
1.02 |
0.75 |
0.97 |
1.00 |
0.81 |
0.88 |
0.95 |
|
X-MARX-Level |
1.08 |
0.89 |
1.06 |
0.93 |
0.76 |
0.94 |
1.03 |
0.86 |
0.91 |
1.00 |
|
Boosted Trees |
F |
1.03 |
0.89 |
1.07 |
0.90 |
0.78 |
0.85 |
1.00 |
0.94 |
0.92 |
0.87 |
F-X |
1.06 |
0.90 |
1.02 |
0.92 |
0.77 |
0.87 |
1.06 |
0.95 |
0.89 |
0.88 |
|
F-MARX |
1.09 |
0.86 |
1.04 |
0.91 |
0.83 |
0.95 |
1.13 |
0.97 |
0.96 |
0.98 |
|
F-MAF |
1.00 |
0.86 |
1.01 |
1.02 |
0.78 |
0.90 |
1.03 |
0.91 |
0.89 |
0.86 |
|
F-Level |
1.11 |
0.97 |
1.07 |
1.25 |
0.88 |
0.95 |
1.00 |
0.82 |
1.06 |
0.97 |
|
F-X-MARX |
1.09 |
0.92 |
1.01 |
0.97 |
0.79 |
0.87 |
1.10 |
0.95 |
0.92 |
0.94 |
|
F-X-MAF |
1.04 |
0.89 |
1.03 |
1.00 |
0.78 |
0.87 |
0.99 |
0.93 |
0.89 |
0.86 |
|
F-X-Level |
1.00 |
0.92 |
1.03 |
1.04 |
0.84 |
0.93 |
1.02 |
0.91 |
0.95 |
0.88 |
|
F-X-MARX-Level |
1.05 |
0.91 |
1.04 |
1.02 |
0.82 |
0.94 |
1.11 |
0.91 |
0.95 |
1.01 |
|
X |
1.08 |
0.91 |
0.99 |
1.02 |
0.78 |
0.90 |
1.03 |
0.92 |
0.89 |
0.86 |
|
MARX |
1.10 |
0.91 |
1.07 |
0.96 |
0.83 |
0.96 |
1.13 |
0.99 |
0.97 |
0.99 |
|
MAF |
1.16 |
0.85 |
1.07 |
1.04 |
0.79 |
0.91 |
1.01 |
0.91 |
0.91 |
0.82 |
|
X-MARX |
1.03 |
0.89 |
1.04 |
0.97 |
0.81 |
0.90 |
1.05 |
0.95 |
0.94 |
0.95 |
|
X-MAF |
1.08 |
0.89 |
1.04 |
1.03 |
0.75 |
0.89 |
1.03 |
0.93 |
0.89 |
0.88 |
|
X-Level |
1.06 |
0.91 |
1.02 |
1.04 |
0.80 |
0.93 |
1.12 |
0.90 |
0.88 |
0.93 |
|
X-MARX-Level |
1.07 |
0.90 |
1.04 |
0.97 |
0.83 |
0.90 |
1.05 |
0.91 |
0.97 |
0.99 |