SmartMoney
Informational & analytics tool - not investment, tax, or legal advice.

How this works

SmartMoney computes; you decide. This page explains exactly how every number on your dashboard is produced, what it assumes, and where it is weakest — including the parts that are unflattering.

How a projection is built

A projection is a Monte Carlo simulation: we replay thousands of possible futures by resampling real historical daily returns, then report the middle and the edges of that spread. We resample actual returns rather than assuming a bell curve, so real-world skew and fat tails survive into the result.

Two different engines can produce it, and the dashboard tells you which one ran:

Market analogs regime_knn

We look for the 20 historical days whose market conditions most resemble today's, then use what happened over the 60 trading days that followed each one. Similarity is measured across 5 features:

  • spy_vs_200dma_pct
  • spy_vs_50dma_pct
  • vix
  • realized_vol_30d
  • ten_year

Used when your holdings map to tradable proxies covering at least 30% of the portfolio and the analog search yields more than 30 usable returns.

Your own history personal_pool

The fallback when we can't build a market-analog pool: we resample the balance-to-balance returns from your own uploads.

These returns have a known flaw — a balance rises both because the market moved and because you paid money in, and the two are indistinguishable from balance history alone. Left alone that inflates the average and produces a wildly optimistic projection. So this pool is capped at 8% assumed annual market drift. The cap shifts the average only; the spread and shape of your return distribution are untouched, and it only takes effect when the pool exceeds it.

Bands use 1000 simulated paths; distribution figures (value-at-risk, probabilities, retirement drawdown) use 2000. Returns apply on 252 trading days per year.

The same inputs always give the same picture. The random draws are seeded from a hash of your inputs, so a projection doesn't reshuffle every time you reload, and extending the horizon doesn't change the early part of the curve. This is deliberate — it is not independent re-sampling, so don't read a stable band as independent confirmation.

Hypothetical scenario generated by Monte Carlo simulation from historical market data and your inputs. Not a prediction or guarantee. Ranges show modeled uncertainty, not a promise of outcomes.

The long-run assumptions, stated plainly

Near-term movement follows the return pool above. But past 60 days, the drift gradually reverts toward a fixed long-run average, fully in force by about 5 years. Without this, a multi-decade projection would ride whatever the last few months happened to do, forever.

This matters more than anything else on the page, so it is worth being blunt: a projection beyond roughly 5 years is driven mainly by these four numbers, not by market analogs.

Asset classAssumed long-run nominal return
Stocks9.5% per year
Bonds4% per year
Cash2.5% per year
Anything else6% per year

Nominal (before inflation), weighted by your actual asset mix. These are descriptive planning assumptions — a neutral long-run baseline, not a forecast of any particular market, and not a view on where anything is heading.

Where these come from: deliberately conservative round numbers, near the low end of the century-plus record of long-run nominal returns (broadly stocks 9–10%, investment-grade bonds 4–5%, cash 2–3%). Round on purpose — false precision would imply a confidence we don't have, and erring low keeps a multi-decade projection from flattering you. They're a judgement, not a live feed, so they carry a date: last reviewed 2026-07-26, revisited about yearly.

Where your contribution rate comes from

Future contributions change a projection substantially, so we use the most reliable source available, in this order:

  1. Your uploaded transactions — the exact amounts you actually paid in. Measured over the trailing 12 months, so a rate that has been ramping up reflects your current pace rather than a flattering all-time average.
  2. A rate you entered on your profile.
  3. An estimate — if neither exists, we infer saving from the slope of your balances minus modeled market growth. This is capped at 0.5% of your balance per day as a sanity bound.

Your dashboard labels which of these was used. When it says estimate, treat the contribution figure as an inferred input, not something you told us — uploading transactions replaces the guess with arithmetic.

How we grade ourselves

Every saved forecast is stored and later compared against what actually happened, at 1 week, 30 days, 1 year. A tool that projects without ever checking itself is asking for trust it hasn't earned.

Sign in to see your own forecast track record here, once you have forecasts old enough to have come due.

What the numbers mean — and don't

  • Deviation is the average gap between forecast and actual, measured as a percentage of the forecast.
  • Bias is the same figure without discarding the sign, so it shows direction. Positive means your actual value came in above the forecast — the model was running low.
  • Band coverage grades the band, not just the middle line. The p10–p90 band is a nominal 80% interval, so a well-calibrated one should contain the actual about 80% of the time. Coverage is the share of your graded forecasts whose actual landed inside it: well below 80% means the bands have been too narrow (more confident than the outcomes justified), well above means too wide. Deviation and bias still describe the median line.
  • An actual is the first snapshot on or after the target date — if it's on time. A snapshot too far past the target no longer counts: a one-week forecast is only graded against a value within 7 days of its target, a one-year forecast within 45. So if you stop uploading for months and then upload, that stale snapshot is left ungraded rather than scored as if it were the on-time outcome.

Shows how past hypothetical forecasts compared to actual values. Past accuracy does not indicate future accuracy.

Market regime

The regime label is a plain rules cascade over volatility and trend — no machine learning, no opinion:

crisis S&P below its 200-day average and VIX at or above 35
stress S&P below its 200-day average or VIX at or above 30
caution VIX at or above 20 or S&P below its 50-day average
normal everything else

A new regime must hold for 5 consecutive days before it takes effect, so one jumpy afternoon doesn't relabel the market. When volatility data is missing the label is unknown. The regime is a description of conditions today — it is not a call on what happens next.

Your data, and our data

Yours: you upload it. SmartMoney never asks for brokerage credentials and has no ability to log into an account or move money. Your holdings, snapshots and forecasts are visible only to you.

Ours: Yahoo Finance daily closing prices. Retirement-plan funds often have no public price history of their own, so each is mapped to a liquid proxy whose returns stand in for it — currently 38 funds mapped onto 21 proxy symbols.

Two consequences worth knowing. A proxy is an approximation, not your actual fund — a total-market fund modeled by an S&P 500 proxy will not track it exactly. And a fund we don't have a mapping for is currently modeled as cash earning nothing, which pulls the modeled return down without announcing itself.

Known limits

The honest list. These are real weaknesses in the current build, not hypotheticals:

  • Similarity uses 5 features, not everything that matters. Interest rates, volatility and trend are in; earnings, inflation prints, positioning and policy are not. A "similar" day is similar in those 5 respects only. We previously also matched on a geopolitical-risk score and removed it, because nothing kept it current — matching today against history on a value that has stopped updating is worse than not matching on it, since the staleness doesn't show up in the answer.
  • The bands can still run narrow. The analog dates are now held at least 40 days apart, so their 60-day windows no longer overlap heavily and re-count one market episode as many — that pulled the band coverage closer to where it should be. But coverage still tends to sit under its 80% target at the shortest horizon: a market-analog pool is calmer than the full range of what your own balance actually does week to week (contributions land in lumps, a proxy isn't your exact fund). The band coverage figure above is the honest running check on this.
  • Volatility modeling needs history. Below 30 observations we fall back to constant volatility, and risk-adjusted figures need at least 4 intervals. Early on, with few uploads, the bands are cruder than they look.
  • Market data can be stale. If a refresh fails, the last stored closing prices are served. A failed fetch and a quiet market look the same from inside.
  • Nothing here knows anything about you beyond what you uploaded — not your job security, taxes, health, spending, or anything else that actually determines whether a plan works.

What we deliberately don't do

An earlier version of this engine used a machine-learning model to nudge the projected direction. It was removed on purpose. A learned directional tilt is a call on where the market is going, and making that call would put this tool on the wrong side of the line it is built to respect. Every model here is descriptive: it characterizes conditions and resamples history. None of them has a view.

SmartMoney is an informational and analytics tool. It is not investment, tax, or legal advice, and SmartMoney is not a registered investment adviser or broker-dealer. Projections are hypothetical, based on your inputs and historical data, and are not guarantees of future results. You are solely responsible for your investment decisions; consult a licensed professional.