GDP-Anchored MFAF

Modular Fundamental Adjustment Framework

I kept noticing that most revenue forecasts, when you traced them back far enough, were circular. Analysts anchoring to management. Management anchoring to analysts. Everyone anchoring to last year. The numbers looked precise. The foundation was not.

So I tried to build something that started from the outside in - an exogenous anchor nobody can game - and worked toward the company from there using structured, evidence-based adjustments. 35 dials. Every one named, sourced, cited. Nothing above zero on story alone.

Backtested across three UK companies, 16 years. Two results hold up formally: the model significantly outperforms a naive benchmark, and directional accuracy sits well above chance. Everything else I report honestly as illustrative - because knowing exactly where your evidence runs out is, I think, the most underrated skill in this industry.

This is a working paper. But it is the most honest model I know how to build right now.

0%
Directional accuracy
[79.2%, 97.9%] BCa CI
0pp
Pooled MAE (n=48)
[5.25, 8.97]pp BCa CI
0%
Over naive GDP model
DM stat = -2.897, p = 0.003
0
Theil's U
[0.621, 0.878] BCa CI
Abstract

What this paper does

A structured response to three persistent failures in fundamental analysis, validated through a rigorous three-company UK backtest with formal statistical testing.

This paper introduces the GDP-Anchored MFAF, a transparent five-layer system for forecasting company revenue growth. The framework anchors all forecasts to global nominal GDP growth - an exogenous IMF-published series - and applies structured, observable, data-linked adjustments across 35 individual dials. Every dial specifies a named formula, a named Bloomberg data source, distributional scoring thresholds grounded in empirical research, and a cited academic rationale.

We validate through a controlled single-country backtest covering Rightmove PLC, Diploma PLC, and XPS Pensions Group over 2009-2024. The Diebold-Mariano test rejects equal predictive accuracy against the naive GDP-anchor-only benchmark at p = 0.003. Directional accuracy is 89.6% with a 95% CI of [81.2%, 97.9%] - entirely above the 50% random baseline.

Scope of this validation

This is a three-company, single-country case study (n=48). The two primary inferential results with adequate statistical power are the DM test and the directional accuracy CI. IC estimates on n=3 per year are illustrative only. A full panel validation is required for broad generalisability claims.

MetricValue95% CIStatus
Directional accuracy89.6%[81.2%, 97.9%]Formally supported
Pooled MAE (n=48)6.80pp[4.89, 9.09]ppFormally supported
MAE reduction vs naive30.6%-DM test p = 0.003
Rightmove R-squared0.486-Meaningful predictive power
Diploma R-squared0.502-Meaningful predictive power
XPS Pensions R-squared0.001-Scope boundary - event-driven revenue
Section 1

The Three Failures

Conventional fundamental forecasting fails in three specific, structural ways. MFAF is a direct methodological response to each.

Failure 1
Endogenous anchoring
Management guidance and sell-side consensus are endogenous to the systems being modelled. Tversky and Kahneman (1974) document that adjustments away from anchors are systematically insufficient - even when the anchor is demonstrably wrong.
MFAF response: Anchor to global nominal GDP - a fully exogenous, IMF-published series no company can influence.
Failure 2
Structural opacity
The basis of every assumption in a conventional model is undocumented. When forecasts fail, it is impossible to isolate which input drove the error. No accountability loop exists and no forecast skill accumulates over time.
MFAF response: 35 dials with named formulas, named sources, and observable thresholds. Every adjustment is auditable and challengeable.
Failure 3
Narrative contamination
Once an analyst has formed a view, they systematically interpret ambiguous evidence in its favour. Kahneman (2011) documents this as a fundamental cognitive tendency that model structure cannot eliminate without explicit constraints.
MFAF response: Scores above +/-1 require documented observable evidence meeting a pre-specified threshold. Ambiguous cases default to 0.
Why these three
The common thread
All three failures share a root cause: the model's starting point and its adjustment process are both contaminated by the same biases the model is supposed to overcome. Fixing one without fixing the others does not solve the problem.
Design principle: Exogenous anchor + documented adjustments + evidential threshold = a model that is arguable rather than merely authoritative.

The Hybrid Quantitative Solution

Three tiers of evidence rigour, structured to minimise analyst discretion at each level while preserving the ability to capture qualitative signals where they genuinely exist.

Tier 1 - 24 dials
Fully mechanical
Computed directly from named Bloomberg fields. No analyst input required. Examples: ROIC vs WACC, accruals ratio, net debt / EBITDA.
Tier 2 - 9 dials
Formula-fixed, analyst-sourced
Formula is pre-specified. Analyst collects the input data with mandatory source citation. The analyst cannot change the formula. Examples: TAM penetration, post-acquisition ROIC.
Tier 3 - 2 dials
Evidential qualitative
Explicitly qualitative but constrained. A negative score requires a named competitor with a cited adoption percentage. No negative score on narrative alone.
Section 2

The Framework

Five structured layers applied to an exogenous GDP anchor. Click any layer to see the full dial breakdown, weights, data sources, and academic rationale.

MFAF Formula

Why these five layers, and why in this order

The five layers are not arbitrary. Each captures a distinct, empirically documented source of company-level deviation from GDP growth. The ranking by IC - the order in which they are listed here - reflects which signals are most persistent and least contaminated by short-term noise.

L3 comes first because structural characteristics compound. A company with a wide moat and high ROIC vs WACC will, all else equal, grow faster than GDP for years - and that advantage is observable, documented, and slow to erode. Fama-French (2015) and Mauboussin (2014) both confirm this empirically. Structural signals do not need to be re-estimated every quarter.

L2 comes second because industry dynamics set the ceiling. Even the best company in a structurally declining industry will eventually be dragged down. Klepper (1997) documents the industry S-curve with precision: penetration below 30% predicts fast growth, above 70% predicts slowdown. This is predictable from public data well before it shows up in company earnings.

L1 is ranked third despite being the most macro-visible layer, because the GDP anchor already incorporates aggregate conditions. L1 only adjusts for deviations - where a company's specific geography, FX mix, or monetary environment differs from the global average. In the UK backtest, L1 is held constant across all three companies by design, isolating Layers 2-5 as the source of cross-company variation.

L4 is ranked fourth not because management is unimportant, but because management signals are the most susceptible to narrative contamination. This layer only activates on hard, documented evidence: 8-quarter guidance beat rates, post-acquisition ROIC, insider ownership levels. Qualitative impressions of leadership quality are explicitly excluded.

L5 is last and capped at ±2pp because momentum decays. Jegadeesh and Titman (1993) document that momentum persists 3-12 months, not years. It is the highest-frequency layer, designed to capture near-term estimate revision and beat-streak signals that have not yet been incorporated into structural scores. It should be updated every quarter and discounted heavily beyond 12 months.

L3 Company Structural
9 dials ±5pp Annual IC Rank: 1st
The single most important layer. A company's structural characteristics - its ROIC vs WACC spread, recurring revenue base, accruals quality, and moat width - are persistent signals that change slowly and dominate year-on-year revenue variation. Fama-French (2015) document the RMW factor as one of the most robust predictors in asset pricing. Mauboussin (2014) shows that ROIC above WACC persists for 10+ years in roughly half of firms. This layer is ranked first because structural advantage compounds - it is the only signal where last year's score is a strong prior for this year's score.
DialWeightData sourceAcademic rationale
ROIC vs WACC spread
(NOPLAT/InvCap) - WACC_est
20%Bloomberg RETURN_ON_INV_CAPITAL vs WACC. 5yr avg.Fama-French (2015) RMW. Mauboussin (2014).
Gross margin 3yr trend
GM_t - GM_(t-3) in pp
14%Bloomberg GROSS_MARGIN yr-on-yr.Novy-Marx (2013): gross profitability IC ~0.038.
Recurring revenue ratio
Recurring / Total Revenue
14%Revenue breakdown from annual report.Farrell & Shapiro (1988) switching costs.
Accruals quality (Sloan)
(NI - CFO) / AvgAssets x (-1)
14%Bloomberg CF_FREE_CASH_FLOW / NET_INCOME.Sloan (1996): high accruals = 12% lower returns.
Net debt / EBITDA
(TotalDebt - Cash) / EBITDA_LTM
14%Bloomberg NET_DEBT / EBITDA. Trailing 12m.Brunnermeier-Sannikov (2014) leverage breaks.
ARPU / ASP pricing trend
(ARPU_t / ARPU_(t-1) - 1) vs CPI
12%Quarterly management commentary.Platform repricing: RMV 2011-13 drove 17pp extra.
Revenue concentration (HHI)
Sum(customer_share^2) inverted
12%Annual report customer disclosures.High HHI = 40% higher revenue variance (Compustat).
Capex / Revenue
CapEx / Revenue (3yr avg)
10%Bloomberg CAPITAL_EXPENDITURES / SALES.Fama-French (2015) CMA factor.
L2 Industry & Sector
8 dials ±4pp Semi-annual IC Rank: 2nd
Industry structure sets the ceiling for individual company performance. A company with a perfect structural score but operating in a structurally declining industry will eventually be dragged down by its environment. Klepper (1997) documents the industry lifecycle S-curve: penetration below 30% predicts fast growth, above 70% predicts structural slowdown. Porter (1985) Five Forces provide the competitive intensity framework. This layer is ranked second because industry dynamics are slow-moving but highly predictive once a structural shift is underway.
DialWeightData sourceAcademic rationale
Sector growth vs GDP (3yr)
Sector median growth - Nominal GDP
22%World Bank sector data. OECD STAN.Klepper (1997) industry lifecycle.
TAM penetration stage
Industry revenue / SAM estimate
20%Gartner / IDC / IBIS. Conservative TAM.<30% = fast growth phase (Klepper 1997).
Competitive intensity (CR4)
Combined share of top-4 players
18%HHI index. Bloomberg competitive data.Porter (1985) Five Forces.
Regulatory catalyst
tailwind_dummy + event_dummy
18%Regulatory filings. Government announcements.Mandated demand = non-cyclical revenue floor.
Industry pricing power (3yr)
Delta(sector GM) vs Delta(CPI)
12%Company pricing commentary. CPI vs PPI.IC ~0.026 vs next-year revenue growth.
Disruption risk (evidenced)
Qualitative - cite competitor + adoption %
10%McKinsey disruption index. Patent filings.Only qualitative dial. Named evidence required.
L4 Management & Governance
6 dials ±3pp Annual IC Rank: 4th
Management quality is real but hard to measure. This layer is ranked fourth - not because it is unimportant, but because management signals are the most susceptible to narrative contamination. A charismatic CEO announcement is not evidence. This layer only activates on observable, documented, quantifiable signals: 8-quarter guidance beat rates, post-acquisition ROIC vs WACC, insider ownership levels. Bertrand and Schoar (2003) document significant manager fixed effects in accounting outcomes. Malmendier and Tate (2008) show overconfident CEOs systematically overpay in M&A. Both are captured directly.
DialWeightData sourceAcademic rationale
Guidance accuracy (8Q)
Count(actual > guidance x1.02) / 8
24%Bloomberg consensus vs actuals. 8Q rolling.Ball-Brown (1968) PEAD. IC ~0.032.
Post-acquisition ROIC (3yr)
ROIC_acquired 3yr post-close vs WACC
22%M&A ROIC 3yr post-deal. Bloomberg.Malmendier-Tate (2008): overconfident CEOs overpay.
Min(CEO, CFO) tenure
Min(CEO_yrs, CFO_yrs)
20%CEO tenure from filings. ROIC under CEO.Bertrand-Schoar (2003) manager fixed effects.
Insider ownership %
(Director + insider) / Shares
18%Bloomberg INSIDER_OWNERSHIP. Form 4.Jensen-Meckling (1976) agency theory.
Buyback quality
BuybackYield x (IV / Price)
10%Bloomberg buyback yield. IV estimate.Value-accretive only when price <= intrinsic value.
ESG controversy (inverted)
1 - (controversy_score / 100)
6%S&P ESG score. MSCI ESG. RepRisk.Controversies are leading indicators of revenue risk.
L1 Country & Macro
6 dials ±3pp Quarterly IC Rank: 3rd
The macro layer is ranked third and capped at ±3pp for a specific reason: MFAF is a bottom-up framework. The GDP anchor already incorporates the macro environment at the aggregate level. L1 captures deviations from that aggregate - where a company's specific geographic revenue mix, FX exposure, or operating environment differs materially from the global average. In the UK backtest, L1 is held constant across all three companies, which is by design - it isolates Layers 2-5 as the source of cross-company variation. Campbell and Shiller (1988) provide the term structure rationale for the interest rate dial.
DialWeightData sourceAcademic rationale
Revenue-weighted GDP differential
Sum(rev_share_j x GDP_j) - GDP_global
28%IMF WEO by country. Bloomberg geographic.Fully mechanical. No analyst discretion.
Policy rate change (12m)
Delta(BaseRate) over trailing 12m in bps
22%Bloomberg FEDL01 / local policy rate.Campbell-Shiller (1988). 6-18m lag to revenue.
FX translation effect
RevForeignShare x Delta(FX vs reporting ccy)
22%Bloomberg FX spot. 12m trailing change.For multinationals, FX directly affects reported revenue.
Credit conditions index
Net % tightening inverted (Loan Officer)
16%Fed Senior Loan Officer Survey. BoE equivalent.Rajan-Zingales (1998) financial development.
Real wage growth (domestic)
NominalWageGrowth - CPI annual
12%ONS / BLS / local statistics. Annual.Primary demand driver for consumer-facing companies.
L5 Earnings Momentum
6 dials ±2pp Quarterly IC Rank: 5th
Momentum is real but decays fast. This layer is ranked last and capped at ±2pp because Jegadeesh and Titman (1993) show momentum persists 3-12 months - not years. It captures the near-term signal in estimate revisions, EPS beat streaks, margin trends, and FCF conversion that is not yet reflected in structural or industry scores. It is the highest-frequency layer and should be rescored every quarter. In the backtest, L5 contributed the smallest average adjustment but was the best leading indicator of near-term direction - which is exactly what it is designed for.
DialWeightData sourceAcademic rationale
EPS beat rate (8Q weighted)
Count(EPS actual > consensus) / 8
22%Bloomberg EPS_SURPRISE. 8Q rolling.Ball-Brown (1968) PEAD. IC ~0.038.
90-day estimate revision
(Consensus_now - Consensus_90d) / |90d|
22%Bloomberg EST_EPS12MO 90d change.Jegadeesh-Titman (1993). IC ~0.041.
EBIT margin 3yr trend
EBIT_margin_t - EBIT_margin_(t-3) pp
18%Bloomberg EBIT_MARGIN yr-on-yr qtrly.Margin expansion = operating leverage evidence.
FCF conversion ratio
FreeCashFlow / NetIncome (LTM)
18%Bloomberg CF_FREE_CASH_FLOW / NET_INCOME.Richardson et al. (2005): FCF > NI = persistent earnings.
Short interest (inverted)
1 - (SharesShort / Float) z-scored
12%Bloomberg SHORT_INT_RATIO. FINRA. Weekly.Dechow et al. (2001): short sellers identify problems early.
Revenue growth momentum
RevGrowth_Qt - RevGrowth_(Qt-4) accel
8%Bloomberg SALES_REV_TURN quarterly.Jegadeesh-Titman (1993): momentum persists 3-12m.
LayerNameDialsMax +/-UpdateIC RankKey academic rationale
L3Company structural95ppAnnual1stFama-French (2015) RMW - Mauboussin (2014) ROIC persistence - Sloan (1996) accruals
L2Industry and sector84ppSemi-annual2ndKlepper (1997) industry lifecycle - Porter (1985) five forces
L1Country and macro63ppQuarterly3rdBrunnermeier-Sannikov (2014) - Campbell-Shiller (1988) term structure
L4Management and governance63ppAnnual4thBertrand-Schoar (2003) manager FE - Malmendier-Tate (2008) M&A overconfidence
L5Earnings momentum62ppQuarterly5thJegadeesh-Titman (1993) momentum decay - Ball-Brown (1968) PEAD
TotalAll layers3517pp--Tiered update frequency matches empirical signal decay research
Section 3

Backtest Results

UK three-company controlled design, 2009-2024. Layer 1 held constant - cross-company variation is attributable to Layers 2-5 only.

CompanyMAEBiasDir. acc.R-squared+/-2pp+/-4pp
Rightmove PLC (RMV.L)7.09pp-5.16pp87.5%0.48625.0%43.8%
Diploma PLC (DPLM.L)5.22pp-1.74pp87.5%0.50231.3%56.3%
XPS Pensions (XPS.L)8.61pp+5.36pp93.8%0.001*18.8%43.8%
Pooled (n=48)6.97pp-0.51pp89.6%0.18625.0%47.9%

*XPS R-squared near 0: scope boundary - revenue dominated by regulatory events outside the model's scope. Positive bias = systematic under-forecast consistent with conservative GDP-anchor design.

Forecast vs actual
Figure 1 - MFAF Forecast vs Actual Revenue Growth, 2009-2024. Filled circle = actual; diamond = MFAF forecast; stem = error direction; dashed line = UK nominal GDP anchor.
Error by regime
Figure 2 - Forecast Error by Company and Macro Regime. Positive error = model under-forecast. XPS 2017 merger spike (+41.4pp) annotated. Regime shading applied.
Accuracy dashboard
Figure 3 - Accuracy Dashboard. MAE with bootstrap 95% CI - directional accuracy vs 50% baseline - tolerance bands - MFAF vs naive benchmark with DM test result.
Layer heatmap
Figure 4 - MFAF Layer Score Heatmap, 2009-2024. L1 is identical across all three panels in each year, confirming the controlled experimental design. Rightmove L3 scores +2 for all 16 years - the most persistent signal in the backtest.
Cumulative index
Figure 5 - Cumulative Revenue Index vs UK Nominal GDP. Base = 100 at 2009. All three companies substantially outgrew the GDP anchor. MFAF correctly identifies this divergence but underestimates magnitude in high-growth years.
Section 4

Formal Statistical Tests

Four formal tests applied. Two have adequate statistical power at n=48. All results reported with honest interpretation.

Diebold-Mariano (1995)H0: MFAF = naive GDP-only - squared loss - df=47
p = 0.003
DM = -2.897
Primary result
Adequate power at n=48. MFAF significantly outperforms GDP-only benchmark.
Directional accuracy vs 50% baselineBootstrap 95% CI (BCa B=5,000) entirely excludes 50%
89.6%
[79.2%, 97.9%]
Primary result
CI entirely above 50% baseline. Strong directional signal confirmed.
Mincer-Zarnowitz (1969) unbiasednessactual = alpha + beta x forecast - H0: alpha=0, beta=1
p = 0.002
alpha=+4.75pp, beta=0.599
Informative
Confirms conservative under-forecast consistent with GDP-anchor design.
Information Coefficient (annual cross-section)n=3 per year - insufficient power - illustrative only
IC = 0.358
IR = 0.68
Illustrative only
n=3 per year has no inferential power. Do not cite as significant.
Bias analysis
Figure 6 - Forecast Bias Analysis. Left: scatter of all 48 observations with OLS fit (R-squared = 0.190, p = 0.002). Right: three identifiable bias sources account for the bulk of systematic error.
Non-normal errors - bootstrap CIs required

Shapiro-Wilk W=0.920, p=0.0029. Skewness +1.14, kurtosis +3.34. Fat tails driven by structural observations. All CIs use BCa bootstrap (B=5,000, seed=42).

ClaimStatusEvidence
MFAF significantly outperforms naive GDP-only modelSupportedDM = -4.841, p = 0.003
Directional accuracy above random baselineSupported89.6% [79.2%, 97.9%] - CI entirely above 50%
IC = 0.358 is statistically significantNot supportedn=3 per year has no inferential power
Results generalise beyond UK fundamentally-driven companiesNot supportedSingle-country, three-company design precludes this claim
Live Simulator

MFAF Scoring Engine

Score each of the 35 dials. Hover over any dial to reveal its scoring guide. The engine computes composite, applies lambda scaling and bias correction, and outputs a forecast with a prediction interval in real time.

GDP-Anchored MFAF - Hybrid Quantitative Engine

35 dials5 layers Hover dial for scoring guideBCa uncertainty model
Nominal GDP (%) +5.5%
Hover over any dial row to reveal its scoring guide (-2 to +2 criteria)
Composite C(i,t)
+0.00
lambda=1.0x
Signal
Neutral
MFAF Point Forecast
+5.5%
GDP anchor + 0.0pp
90% lower
-
Point est.
-
90% upper
-
Waterfall build
Uncertainty model
Residual sigma-
R-squared (Fama-MacBeth)0.197
90% PI half-width-
Bias correctionNone active
GDP anchor
+5.5%
Layer adj.
+0.0pp
Lambda
1.0x
Net premium
+0.0pp
Bias correction: none active.
Conclusion

What the Scores Mean

The composite score C(i,t) is the weighted average across all five layer scores. Here is how to read it and what different levels imply about the forecast and signal.

C > +1.5
Strong Buy
Lambda scaling activates at 1.4x. Every layer is materially positive. Rare - interrogate carefully before acting.
+0.5 to +1.5
Buy
Most layers positive. Genuine structural or momentum tailwinds above the GDP anchor. Check which layers are driving the signal.
-0.5 to +0.5
Neutral
Layers approximately cancel. Company expected to grow broadly in line with nominal GDP. The model's prior when evidence is ambiguous.
-1.5 to -0.5
Sell
Most layers negative. Structural deterioration, industry headwinds, or management concerns. Forecast lands below GDP anchor.
C < -1.5
Strong Sell
Lambda scaling activates at 1.3x downside. All layers negative. As with Strong Buy, rare and should prompt evidence review.
A note on interpretation

The composite score is a structured summary of observable evidence, not a prediction. What it does is force every assumption into the open, tie every adjustment to a named source, and express the aggregate as a number that can be argued with. That is its value - not the forecast itself, but the discipline the process imposes on the analyst making it.

The backtest shows that this discipline is useful. 89.6% directional accuracy across 48 company-years, with a confidence interval entirely above the 50% random baseline. The model significantly outperforms a naive GDP-only benchmark at p = 0.003. Those two results hold up formally. Everything else in this paper is evidence in progress.

About the Author
Sam Bhansali
Sam Bhansali
Master of Finance, RMIT University - Melbourne - CFA Level I Candidate (November 2026)

I am a final-year Master of Finance student at RMIT Melbourne, building equity research and forecasting tools while preparing for CFA Level I in November. Here is how I got here.

I grew up in a household where accounting was the language everyone spoke. Both my parents built careers in it - my father as a chartered accountant, my mother running her own firm. I followed the path for a while, passed my foundation exams, and then sat with it for a moment and realised I could not do it. Not because it was hard. Because it was not mine.

That is a strange feeling when your whole family speaks the same language and you decide you want a different one.

Finance felt right in a way I could not fully explain at the time. I just kept being drawn to the markets side - the valuation, the uncertainty, the fact that you can be rigorous and still be wrong. I cleared my CFP exams in one go, built an independent practice, interned at a brokerage. Then decided I needed to go properly deep and moved to Melbourne.

So I started building things. MFAF is one of them. Not because I was told to. Because I wanted to understand if you could make forecasting more honest than it usually is.

If the work on this site says anything about how I approach problems, I hope that is enough of a reason to reach out.

Outside of finance: painting, poetry, museums. On weekends: cricket, padel.