Skip to content

Methodology and data

Every number on this site comes from one of two places: the official daily share prices, or a rule read at an official source on a stated date. This page says exactly what is done with them.

Where the prices come from

The only market data used is the daily share price history the TSP publishes for every fund, with four decimal places, one row per business day since June 2003. The file is downloaded from tsp.gov by the site's owner and uploaded unchanged; the server rejects a file whose dates are not ascending, whose prices are not positive four-decimal numbers, or which contradicts a price already stored. Nothing is estimated, smoothed or back-filled: a day the TSP did not price is a day on which nothing can move.

Fund expenses are already inside the share prices, so returns computed from them are net of expenses. The I Fund's benchmark index changed in mid-2024; its prices before and after are both used as published, and the I Fund page says so.

The calendar

A business day is any day with a published share price. Inside the price file the file is the calendar. For dates after the last price, the site expects a price on every weekday that is not a stock-market holiday, Columbus Day or Veterans Day, from the holiday list in the table below. The N-th trading day of a month, "last business day", and "two business days before Thanksgiving" are all counted on that calendar. A day that does not exist in a given year, such as a twentieth trading day in a short month, falls back to the last business day of that month and the result notes it.

How a strategy is tested

  1. The balance starts at $10,000 on the last business day before the first year tested, or on the first day every fund in the plan has a price, whichever is later. The result states the real start.
  2. Each business day the balance is shares held times that day's price, fund by fund. Nothing is added or withdrawn.
  3. On a move day the whole balance is sold and the target mix bought at that day's closing price. This matches the transfer rule: a request before noon Eastern on a business day is priced at that day's close. A plan that names more than two unrestricted moves in a month is rejected before it runs.
  4. A mix is bought once; each fund in it then grows at its own price until the next move. Nothing rebalances between moves, because nothing does in a real account.
  5. Monthly return is the balance on the month's last business day over the previous month's, minus one. Yearly return is the same over calendar years.
  6. The current year is computed through the latest price, labelled as partial, and left out of the yearly averages.

How each statistic is defined

  • Growth per year: the compound annual growth rate, (ending balance ÷ starting balance) to the power of one over the exact number of years elapsed, minus one. Measured in days, not in calendar years counted.
  • Total return: ending balance over starting balance, minus one.
  • Mean and median yearly return: over full calendar years only.
  • Standard deviation: of the full-year returns, sample formula (divide by one less than the number of years).
  • Biggest drop: maximum drawdown on the daily balance, the largest fall from any peak to the lowest point before that peak is regained.
  • Best and worst year: the highest and lowest full-year returns.
  • Beat the benchmark: the share of full years in which the plan's return exceeded the benchmark's. The benchmark is the C Fund held throughout unless another fund or a saved strategy is chosen.
  • Moves a year: transfers made, divided by years tested; moves into the G Fund alone are counted as moves but not against the monthly limit.
  • Time in each fund: the share of business days on which each fund held any part of the balance.

Out-of-sample results

Every result is split at the start of 2018 (movable in Advanced mode) into a training period and a test period, and the statistics are shown for each. A saved strategy also shows its return since the day it was saved, next to the benchmark over the same days; that figure uses only prices published after the plan existed. How to read a backtest explains why the split matters.

How the engine is checked

  • Every annual return the TSP publishes for the G, F, C and S Funds, and every fund's latest one-year and year-to-date figure, is recomputed from the daily prices and must match to the published precision.
  • Published results from another backtesting site were transcribed for six strategies and every monthly, yearly and summary figure is reproduced, with the handful of known differences (that site treats four priced days as closed) listed in the test rather than imitated.
  • Property tests confirm that a plan holding one fund all year returns exactly that fund's return, that moves into the same fund change nothing, and that a mix of two funds lies between them.
  • The whole history for one strategy computes in a few milliseconds, so the page recomputes on every keystroke rather than caching a guess.

How contributions are planned

The contribution planner starts from what you have already contributed this year and the first pay date still to come, and spreads the rest of the year's room over the remaining pay dates on your payroll provider's official calendar. Each pay date gets a weight from the timing slider (level, or leaning earlier or later); amounts are clipped to the floor and ceiling you set, the clipped dates are pinned, and the rest is re-shared until nothing moves, with cents rounded and the residual placed on the last free date. Everything above the elective deferral limit is treated as catch-up, and matched, because the spillover rule removed the separate election. The agency automatic contribution and match are computed per pay date from basic pay; a date under the full-match percentage shows the match it forgoes. The pay date, not the pay period, decides the tax year. A plan year whose limits the IRS has not announced is shown as such and nothing is projected.

Every rule, its source, and when it was read

Each figure below lives in one rules file in the site's code with the page it was read from, the date, and the date it must be checked again. A test fails the build if a rule lapses, if a source is missing, or if a limit figure is typed anywhere else in the code.

Contribution limits

Funds

Interfund transfers

  • Transfer limit, cutoff and posting5 CFR 1601.32Read Oct 28, 2026; check again by Dec 31, 2027.
  • Business day definition5 CFR 1645.1Read Oct 28, 2026; check again by Dec 31, 2027.

Agency contributions

Calendar

Pay calendars

Corrections

If a figure here disagrees with an official source, say so through the contact form with the page you read and the date. The fix is made in the rules file, with the new source and date, and this table updates with it.