Monte Carlo · Methodology
Inflation, Tax, Cash Flows and Costs
A simulated return is not spendable money. Between the return-generating process and the wealth number on your screen sit four overlays, and each one moves the answer. This page documents what each does, and is equally explicit about what they do not model.
Inflation
Real-wealth outputs deflate nominal wealth by Indian CPI. There are two mechanisms, and which one applies depends on the return process you selected.
Calendar-aligned block reuse (bootstrap processes)
Both bootstrap processes report which historical rows they sampled. The deflator reuses the CPI actually realized over those same historical windows. This is a meaningful improvement over a flat assumption, because inflation and equity returns are not independent: a path that resamples a high-inflation stretch gets that stretch's inflation, preserving whatever joint behaviour the two series had. The aligned CPI series and its source are frozen in the parent input artifact alongside returns.
Constant rate (all other processes)
The FHS, GBM, Gaussian and Student-t processes reconstruct returns rather than replaying dated rows, so no calendar window exists to align to. A constant annual rate compounds daily, defaulting to 5%. You may also override with a flat rate under any process.
The result records which of the three sources was used, snapshot, override or disclosed fallback, along with CPI age and status both at calibration and at immutable replay, including a warning when a snapshot that was fresh at calibration has since gone stale.
Capital-gains tax
Tax is realized on the sold fraction at every withdrawal, every rebalance, and at terminal liquidation. The engine tracks monthly FIFO purchase cohorts per path and per asset, classifies each realized gain as short or long term by cohort age, pools everything aged 12 months or more, and tracks the annual long-term exemption across the simulated fiscal calendar.
| Parameter | Default | Applies to |
|---|---|---|
| Short-term rate | 20% | Cohorts held under 12 months |
| Long-term rate | 12.5% | Cohorts held 12 months or more |
| Annual LTCG exemption | ₹1,25,000 | Long-term gains, tracked and consumed across the fiscal year |
These are the post-July-2024 Indian equity rates and all three are editable. The result records the tax profile, rule version, effective date, rates, exemption and holding-period model, and legacy runs explicitly disclose when those markers were not recorded rather than implying they were.
What the tax model is not
The model is labeled fifo_monthly_age_cohorts_v1, and the name is the disclosure. Monthly cohorts approximate FIFO and holding age; they are not exact broker tax lots, and the statutory day-level holding boundary and the Indian fiscal-year exemption calendar are approximated rather than reproduced exactly.
Not modeled at all: surcharge and cess, securities transaction tax and other statutory charges, loss netting, carry-forward of losses, dividends and dividend taxation, account-specific rules, and any gains you hold outside this portfolio that would consume the same annual exemption.
The output is an illustrative tax-drag estimate for comparing plans. It is not a tax-liability statement, and it should not be used as one.
Cash flows: SIP and SWP
Contributions (SIP)
A fixed amount is contributed at the start of each period, with an optional annual step-up applied at every simulated year boundary. Contributions buy into the portfolio at target weights and open a new monthly cost cohort for later tax classification.
Withdrawals (SWP)
Withdrawals begin in any chosen year and can stay fixed in nominal terms, escalate at a fixed annual rate, or follow simulated CPI. The important detail is the direction of the calculation: the amount you enter is net spendable cash, so the engine grosses the redemption up for both the illustrative capital-gains tax and the modeled trade cost. Even with tax disabled, a non-zero trade cost still reduces delivered cash relative to a naive model.
When full liquidation cannot deliver the requested net cash, the unmet amount is recorded as a withdrawal shortfall rather than being silently counted as funded. A path at zero stays there unless a later contribution revives it, which is why terminal depletion and ever depletion are reported as different measures.
Unitized NAV accounting
Flows are tracked against a unitized NAV, exactly as a mutual fund does. A contribution buys units at the prevailing NAV and a withdrawal redeems them. This is what keeps performance statistics honest: without unitization, a large SIP contribution would inflate wealth and be mistaken for a return, making any return-based metric meaningless on a portfolio with cash flows.
Rebalancing and trading costs
Weights drift as assets diverge. Rebalancing runs at the configured frequency, defaulting to annual, with monthly, quarterly, annual and none available. Rebalancing is not free in the simulation and it should not be: each rebalance realizes gains on the sold fraction, triggering tax, and incurs trade cost on both legs. A monthly rebalance therefore carries visibly more drag than an annual one, which is the honest tradeoff against tracking your target weights more closely.
The proportional cost is configured in basis points and applies to every modeled trade:
- the initial investment of starting wealth;
- every contribution;
- every withdrawal, including the grossed-up portion;
- both legs of every rebalance;
- terminal liquidation.
It is a single proportional rate, not a security-level model of spreads, market impact or the full Indian charges schedule. It is a simplification, clearly labeled as one, and the terminal trade cost is reported separately so you can see its contribution to the liquidation-net figures.
Order of operations within a month
The sequence matters for reproducing any figure by hand:
Wealth is observed at the start, immediately after any cash-flow or rebalance event, and at month-end. This is why the wealth-floor breach test is defined at those points: it does not observe every intra-month daily market move, and the documentation says so rather than implying continuous monitoring. Monthly wealth is tracked pre-tax; the illustrative liquidation-net figures are a terminal calculation, which is why a liquidation-net goal basis makes the monthly goal-attainment curve monitor its pre-tax counterpart and label itself accordingly.
Continue to Output statistics for the precise definition of every number these overlays feed into, or back to the methodology overview.