Methodology
Compound Strategy Lab is a monthly-step planning model. It makes each assumption visible so you can inspect, change, and challenge the result.
Methodology version: August 7, 2026
1. What the model is designed to answer
Compound Strategy Lab compares how user-defined financial systems behave under a common set of assumptions. The Compound Visualizer isolates compound versus simple interest. The Strategy Lab models positions, debts, income sources, spending, and cash flows as connected nodes and arrows.
The model is comparative, not predictive. It is most useful for asking questions such as “Which assumption drives this result?”, “What changes if this yield falls?”, or “Where does income flow after a debt is repaid?” It does not determine the probability that a real plan will succeed.
2. Time step and calculation order
The Strategy Lab runs in monthly steps for the selected horizon. Opening balances form month zero. Each later month applies the relevant node mechanics, external contributions or payments, growth or historical price factors, generated income, routing, costs, caps, and liability or spending treatment. Results are recorded after the month's activity.
Monthly resolution keeps the model understandable and fast, but it cannot reproduce intramonth price paths, flash crashes, liquidation wicks, exact trade timing, daily cash balances, or the order of events within a real month.
3. Compound Visualizer
For monthly compounding, the balance is multiplied each month by 1 + annual rate / 12, then the monthly contribution is added. Daily compounding uses the monthly equivalent of a 365-day nominal rate: (1 + annual rate / 365)^(365/12).
Annual compounding credits the stated rate once per year to the prior annual balance and approximates that year's monthly contributions as being invested for half a year on average. Simple interest accrues on contributed capital only; previously earned interest does not itself earn interest.
The visual money-stack scale assumes a U.S. bill is approximately 0.10922 millimeters thick. A displayed stack height is therefore (value / $100) × 0.10922 mm. The stack is an illustration of scale, not a representation of physical storage.
4. Strategy nodes and value accounting
Assets add to the headline balance. Liabilities, including mortgages and loans, subtract from it, so the result is labeled net worth when a liability is present. Spending nodes track money that has left the strategy and do not count as an asset. Income and pension nodes act as sources of fresh monthly cash rather than accounts that accumulate balances.
Price growth compounds inside an asset node. Yield represents distributable income such as dividends, interest, rent, coupons, fees, or staking rewards. A node may also receive a direct external monthly contribution. Some income sources and spending amounts can rise annually according to a user-entered raise or inflation assumption.
Debt balances accrue their entered interest rate monthly and decline as payments arrive. The engine models servicing existing debt, not taking on new debt, refinancing, collateral calls, margin, or liquidation.
5. Routing and money conservation
A percentage arrow routes a share of the source node's generated income. Income not routed elsewhere remains in the source and is reinvested. Outgoing percentage routes are limited to 100% in total.
A fixed-dollar arrow withdraws or sells the stated amount from the source balance, limited by the amount available. It is used for withdrawals, debt payments, and other transfers that may reduce principal. Each arrow can include a routing cost; the cost is deducted from the amount moved and does not arrive at the destination.
Cycles are allowed, but routing moves existing dollars rather than creating new money. When certain target nodes become inactive—for example, when a debt is fully repaid—their percentage share is redistributed among the source's remaining active routes in proportion to those routes. A manually paused arrow instead leaves its share at the source.
6. Contributions, withdrawals, and return
The contributed line begins with opening asset balances minus opening debts, then adds external amounts invested or used to service debt. Income routed directly to spending is excluded because it was never invested. Employer match is treated as value earned by the strategy rather than as the user's contribution.
Withdrawals sent to spending reduce invested balances, but cumulative withdrawals are recognized when the model reports economic value produced. This prevents a drawdown strategy from appearing to have destroyed wealth merely because money was used.
Return is the modeled value created above contributed capital under these accounting rules. It is not an audited performance calculation, time-weighted return, internal rate of return, brokerage statement, or tax return.
7. Assumed-rate expected path
In assumed-rates mode, the expected line deterministically applies the growth, yield, contribution, decay, cost, and routing inputs shown in the strategy. An annual growth input is converted to an effective monthly factor so that twelve modeled months reproduce the entered annual rate.
Where a yield-decay input is used, yield follows APR(t) = initial APR × (1 − decay)^t, with time measured in years. A zero decay input means the stated yield remains constant. Constant rates are assumptions, not forecasts.
8. Monte Carlo risk band
The standard risk band reruns the strategy 200 times. For assets with volatility inputs, monthly price changes follow a geometric Brownian motion model. In simplified form, each monthly factor is:
exp((mu − sigma²/2)/12 + sigma × sqrt(1/12) × z)
Here, mu = ln(1 + assumed annual growth), sigma is annual volatility, and z is a standard-normal random draw. The drift adjustment keeps the arithmetic average growth aligned with the user's input while volatility spreads outcomes.
The displayed band spans the 10th through 90th percentile of total modeled value at each month; the median is the 50th percentile. These are percentiles of the simulated model, not guarantees about real-world probability. Fixed random seeds keep results stable when inputs have not changed.
In assumed-rates mode, shocks for separate nodes are generally independent. Correlation entered inside a liquidity-pool node applies to that token pair, but the model does not automatically correlate the same or related assets across separate nodes. This can make the band narrower than real portfolio risk.
9. Historical replay
Historical mode applies actual month-to-month price or total-return factors to eligible nodes over a selected continuous period. All eligible series follow the same calendar months, preserving the cross-asset relationships that occurred during that period. The replay ends at the latest complete common month available for the assets in the strategy and does not invent future returns beyond the selected window.
ETH and BTC history uses CoinGecko price data. Supported traditional-market nodes use bundled monthly adjusted-close total-return ETF proxies, including SPY or VTI for U.S. equities, VXUS for international equities, BND or TLT for bonds, VNQ for listed real estate, GLD for gold, and BIL for short Treasury bills where applicable. Each proxy is constrained by its real data coverage and inception date.
Adjusted-close total returns already reflect splits and reinvested distributions. The model therefore does not add a second distribution yield to an eligible node while replaying that series. Nodes that require income to be routed separately, or that do not have a supported historical series, retain their explicit assumptions; the node inspector identifies the treatment.
The historical risk band uses a block bootstrap: it stitches randomly selected 12-month blocks of the available joint history. Every supported asset uses the same selected blocks, which preserves within-block market regimes and cross-asset co-movement better than sampling each asset independently. It still cannot create events absent from the dataset.
10. Market-data preparation
Bundled traditional-market series are generated from monthly adjusted closes and validated before publication for duplicate or missing months, incomplete current months, implausible moves, ticker mismatches, and evidence that distribution-paying assets were accidentally supplied as unadjusted prices. Provider revisions can still change historical results.
Bundled cryptocurrency closes may be supplemented in the browser with recent complete daily observations from CoinGecko. The current day is excluded because it is incomplete. When live retrieval fails, the model continues with the bundled dataset and reports the available endpoint.
11. Liquidity-pool methodology
A classic constant-product pool tracks the geometric mean of the two token price factors. Impermanent loss is measured against holding the tokens actually deposited. For a full-range 50/50 pool with r equal to the change in the token price ratio, the relative value is 2 × sqrt(r) / (1 + r); impermanent loss is one minus that value.
Concentrated-liquidity positions use Uniswap v3-style liquidity and token-amount equations over the selected price range. Token composition changes with price and becomes entirely one token beyond a range edge. The implementation is cross-validated against contract-exact reference accounting as described in the verification notes.
Fee income is based on the entered or estimated APR multiplied by fee uptime. Uptime represents the share of time the position earns fees. Re-centering can be monthly, triggered by range movement, or disabled; modeled re-centering costs are deducted, and realized impermanent loss is applied according to the selected behavior.
Impermanent loss and fee uptime remain estimates. New positions may be seeded from recent volatility or range measurements, but the user controls the final inputs. Actual pool volume, incentives, gas, execution, liquidity, smart-contract behavior, and price paths can differ materially.
12. Taxes, inflation, caps, and costs
The tax and inflation controls are display lenses and do not rerun the underlying strategy. The tax lens applies one user-entered blended rate to modeled gains above contributions. It does not distinguish ordinary income, qualified dividends, capital gains, account basis, realization dates, tax brackets, jurisdictions, or account types.
The inflation lens discounts balances to today's dollars at the selected annual rate. Cumulative flows such as contributions, spending, and withdrawals are discounted month by month when each dollar moves, rather than discounting the entire total from the end of the horizon. Entering real returns and then enabling the inflation lens can double-count inflation.
Tax-advantaged account nodes enforce user-editable annual contribution caps by rejecting contributions above the remaining modeled room. The account's tax treatment is recorded as a label but is not simulated; Roth, pre-tax, and taxable balances otherwise grow alike. Employer-match nodes add the selected match subject to the entered monthly cap.
Costs are included only where the model or user inputs expressly include them. Routing costs and liquidity-pool re-centering costs can be modeled. Brokerage commissions, fund expenses, advisory fees, spreads, slippage, gas, insurance, property costs, taxes, and other frictions are otherwise omitted unless represented by the chosen node parameters.
13. Report-card metrics
The report card summarizes behavior produced by the model. The underwater test compares a lower-percentile result with contributions. The house-money milestone asks when lower-percentile safe-layer value covers contributed capital. Robustness stresses supported pool inputs. Drawdown measures peak-to-trough decline and modeled recovery time. Tests abstain when the strategy does not contain the uncertainty or feature required to calculate a meaningful result.
“Safe layer,” “robust,” “self-sustaining,” and similar labels are model classifications, not claims that an asset is guaranteed, insured, liquid, or suitable.
14. Known limitations
The model does not know your full financial situation, jurisdiction, goals, risk tolerance, liquidity needs, health, employment, dependents, contracts, insurance, or tax position. It does not model every fee, changing law, variable rate, default, bankruptcy, fraud, custody failure, market closure, black swan, behavioral response, or operational event.
Assumed-rates Monte Carlo uses lognormal returns and omits fat tails and jumps. Historical results inherit the events, available assets, proxy choices, and survivorship bias of their dataset. Monthly prices omit intramonth paths. Liquidity-pool backtests may use historical prices while holding fee assumptions constant. Real property is treated as continuously valued capital even though buildings are indivisible and costly to transact.
All outputs should be treated as estimates for education and comparison. Read the Disclaimer and Terms of Use, inspect each node's assumptions, and independently verify information before making a decision.
15. Validation and changes
The project includes browser-based tests covering core interest formulas, routing conservation, debt behavior, save migration, market-data handling, Monte Carlo behavior, and liquidity-pool calculations. Passing tests reduce the risk of implementation mistakes but do not establish that the assumptions describe the future or fit a particular user.
This methodology may change as calculations, data sources, or features change. The version date above identifies the methodology described on this page. For the most detailed and current explanation of a particular node, see the full documentation shown alongside the model.