QM 9 Simulation of Financial Asset Prices and Returns
Simulation predicts the range of outcomes a system might produce by working through many theoretical scenarios rather than a single point estimate. In finance it starts with assumptions about how variables are distributed at one or more points in time and traces their effect on a target quantity, for instance a price, a return, or the value of a portfolio. The technique is central to risk and return analysis, to portfolio optimization, and to the modeling of cash flow and liquidity.
Whatever the method, a simulation moves through the same four steps.
- Setup and parameterize. Define the goal and the output variable to be simulated, choose the input variables and their statistical properties (means, variances, correlations), and specify the calculations that connect inputs to outputs.
- Scenario generation. Produce the scenarios, which can range from a handful of user-defined inputs to many thousands of machine-generated input vectors.
- Scenario evaluation. Pass each scenario through a calculation engine that applies the defined calculations and returns the corresponding output values.
- Result compilation and analysis. Collect the outputs across all scenarios, build a distribution, and draw conclusions that address the original objective, such as quantifying downside risk or assessing risk-adjusted performance.
Three approaches are in common use, and they differ almost entirely in Step 2, the way scenarios are sourced. The other steps are largely the same.
- Historical simulation draws scenarios directly from actual past market data, without generating random inputs or imposing a distribution.
- Bootstrap simulation resamples the historical data with replacement to build new synthetic datasets, introducing randomness while preserving the empirical distribution.
- Monte Carlo simulation generates random draws from assumed probability distributions for the input variables.
A well-built engine can accept scenarios from any of these sources and process enough of them to deliver precise estimates. The comparison below summarizes how each approach handles the four steps.
| Approach | Setup | Scenario generation | Evaluation | Result analysis |
|---|---|---|---|---|
| Historical | Use historical data to set parameters | Use actual past observations as inputs | Run the model on each historical scenario | Examine performance under real past conditions |
| Bootstrap | Use historical data, with replacement | Resample the observed dataset into synthetic scenarios | Run each resampled scenario | Assess variability while preserving data structure |
| Monte Carlo | Specify probability distributions for inputs | Draw random samples from those distributions | Run each random input vector | Evaluate the modeled distribution of outputs |
The three approaches diverge mainly at scenario generation; the remaining steps are similar.
Historical simulation models future outcomes by applying past market movements directly to current positions. The implicit assumption is that historical price changes are a reasonable proxy for future ones, so the recent past is treated as if it were the full population of possible outcomes. Because no distribution is imposed, the method captures real-world features such as fat tails, high excess kurtosis (leptokurtic distributions), and volatility clustering, where high-volatility periods tend to follow high-volatility periods and calm follows calm.
Its main appeal is explainability. Results tie back to specific dates and events, which supports statements such as: the portfolio would have gained INR300 million had markets repeated a specific trading day from last year. The main caution is that the assumption of history repeating may fail during unprecedented events or regime shifts.
Setting up the risk factors
A robust simulation identifies the key valuation and risk factors that serve as inputs. For equities the primary variable is usually the continuously compounded (logarithmic) price return.
For bonds and other fixed-income instruments, the simulated quantity is the change in the yield curve, and the bond price then follows from discounting future cash flows at those simulated yields.
A frequent application is value at risk (VaR): apply historical returns to current positions and read the loss threshold off the resulting profit and loss distribution.
A manager in Hong Kong SAR holds a long-only portfolio that tracks two indexes, the Hang Seng Index (HSI) and the Shanghai Shenzhen CSI 300 Index, and wants the one-day value at risk. The allocation is HKD55,000,000 to the HSI and HKD40,000,000 to the CSI 300, and one year of daily log returns is available: 246 trading days after aligning the calendars.
Step 1: log returns. Each daily log return is the natural log of the price ratio. On Day 1 the Hang Seng return was
Step 2: profit and loss. For each position and scenario, convert the log return to a value change.
On Day 1 the HSI leg gained 55,000,000 × (e^0.0182 − 1) = HKD1,010,165, and the CSI 300 leg gained 40,000,000 × (e^0.0022 − 1) = HKD88,097, for a total of HKD1,098,262. Repeating this for all 246 days builds the portfolio P/L series.
| Scenario | HSI log return | CSI 300 log return | HSI P/L | CSI 300 P/L | Total P/L |
|---|---|---|---|---|---|
| 1 | 1.82% | 0.22% | 1,010,165 | 88,097 | 1,098,262 |
| 2 | 3.17% | 0.55% | 1,771,429 | 220,606 | 1,992,035 |
| 3 | 1.24% | 1.99% | 686,246 | 803,973 | 1,490,219 |
| 4 | −0.29% | 0.85% | −159,269 | 341,449 | 182,180 |
| 245 | 2.49% | 2.81% | 1,386,693 | 1,139,941 | 2,526,634 |
| 246 | 0.02% | 0.53% | 11,001 | 212,563 | 223,564 |
| Statistic | Hang Seng Index | CSI 300 (in HKD) |
|---|---|---|
| Average log return, μ | −0.0607% | −0.0611% |
| Standard deviation, σ | 1.3948% | 0.9741% |
| Correlation, ρ | 0.6609 | |
Historical simulation for a wide range of outcomes
Historical deviations can also frame the plausible range for a forecast. The next example uses past forecast errors to bound the net present value of a new venture.
A venture capital firm evaluating a sustainable-energy startup reviews 50 past investments and records each one as a return deviation: the gap between forecast and actual revenue. The deviations range from −28.56% to 9.69% and are heavily left-skewed, which points to over-optimistic forecasts. The firm interpolates the tail percentiles with the linear formula below.
Practical cautions, strengths, and weaknesses
Data quality is decisive, because unreliable or missing data undermines the results. In global portfolios, missing data arise from asynchronous markets (different holiday calendars and unplanned closures), securities that did not exist across the full window (for example, a recent listing), and thinly traded instruments with sparse prices. A common fix is a proxy: a substitute instrument, often a weighted average of similar instruments with available history, that approximates the behavior of the security in question.
Applying past price changes directly to a specific bond can mislead. A bond maturing tomorrow has negligible market risk, yet last year’s price changes would suggest large volatility. The better approach models yield changes at benchmark maturities (for example one-month, six-month, one-year, two-year) and infers the effect on the bond’s cash flows.
Strengths: simplicity (no complex distributional modeling), no distributional assumptions, real-world data including extreme events, correlations preserved automatically, and low computational cost. Weaknesses: it is backward looking and may miss unprecedented shocks, the scenario set is limited to the history actually selected, and results are only as good as the available data.
Resampling takes repeated draws from the data on hand to infer something about the underlying population parameters. It is an alternative to parametric methods and is especially useful when distributional assumptions are uncertain or the sample is small. Bootstrapping is the most widely used resampling method: it approximates the distribution of a statistic by drawing with replacement from the sample on hand and letting that sample stand in for the population.
Resampling with replacement means that after a data point is drawn it is returned to the pool before the next draw, so the same value can be chosen more than once. Each point has selection probability 1/n on every draw, where n is the sample size. From the sample [2, 5, 8], one resample might be [5, 5, 8] and another [2, 2, 5]. Repeating this builds a simulated sampling distribution even from a small original dataset.
The contrast with historical simulation is important. Historical simulation uses the actual sequence of events and treats them as fixed, assuming past data reflect the future. Bootstrapping resamples the same dataset many times to build a distribution and assumes only that the sample represents the population, making no explicit assumption about its shape.
| Feature | Historical simulation | Bootstrapping |
|---|---|---|
| Source of data | Historical dataset | Observed sample |
| Sampling method | Simple sampling of historical data | Resampling with replacement |
| Assumption | Past data reflect the future | Sample represents the population |
| Primary use | Risk management, stress tests | Confidence intervals, standard errors |
| Computational intensity | Low to moderate | Moderate |
Bootstrapping a price path
Because log returns are additive across periods, bootstrapping can build many possible price paths by resampling observed weekly returns. The next example values a European-style call option this way. A European call gives its holder the right, though not the duty, to buy an asset at a set strike on a future date, worth whichever is larger of zero or the amount by which price exceeds strike at expiration.
Value a 10-week European call on Brighton Rock plc. The strike equals the current price, K = GBP141.25; the continuously compounded risk-free rate is 5.0% annualized; and the current price is P0 = GBP141.25. From 26 weekly closing prices, 25 weekly log returns are computed (average 0.0138, cumulative 0.3454). These 25 returns are the sample set. The firm runs 500 simulated 10-week paths, each built by drawing 10 random integers from 1 to 25 with replacement and reading off the matching returns.
| Pull | 21 | 25 | 4 | 13 | 16 | 8 | 7 | 8 | 15 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Log return | 0.0285 | 0.0299 | 0.0061 | −0.0056 | 0.0453 | −0.0318 | 0.0302 | −0.0318 | 0.0601 | 0.0158 |
Bootstrapping a confidence interval
Bootstrapping can also set confidence intervals for statistics beyond prices, such as volatility.
A company weighing a new long-horizon target date fund for its pension plan has only 24 months of return data. An initial USD100 grew to a final NAV of USD154.67 (total return 54.67%), with an average monthly return of 2.10% and a monthly standard deviation of 7.33%. To estimate volatility over longer horizons, the analyst runs 1,000 bootstrap scenarios, each drawing 50 monthly returns from 1 to 24 with replacement and computing that scenario’s standard deviation. One example scenario returned a standard deviation of 7.61%.
Strengths and weaknesses
Strengths: minimal assumptions (no required distribution such as normality), statistical robustness with small datasets, conceptual simplicity, robust variability and standard-error estimates for confidence intervals, adaptability to almost any statistic (mean, median, variance, correlation), and reduced sensitivity to outliers relative to historical simulation. It also needs no large external dataset. Weaknesses: it can be computationally intensive across many resamples, it is sensitive to sample quality (a biased sample yields biased results), it is not ideal for autocorrelated time series because it breaks temporal dependence, it cannot extrapolate beyond the observed range, and it offers no analytical insight into why the data behave as they do.
Monte Carlo simulation takes many random draws, often several thousand, from one or more assumed distributions to assemble a modeled frequency distribution for the price or return. From that distribution the analyst computes expected return, standard deviation, and other risk measures to a chosen confidence level. Because the analyst controls the underlying assumptions, the method makes it easy to test how the output responds to changes in those assumptions.
A second major use is pricing complex securities and derivatives that have no analytic pricing formula. A closed-form solution gives an exact answer through standard operations, without iteration or approximation; stocks and simple bonds usually have one, but path-dependent and embedded-option instruments often do not. Monte Carlo fills that gap for contingent claims, securities whose value depends on an underlying asset.
Valuing a European call by simulation
For an option whose payoff depends only on the final price, a one-step simulation suffices. Prices are taken to be log-normally distributed, which keeps every simulated price positive and reflects continuous compounding. The per-step log return is drawn as
Value a one-year European call: strike CAD90, current price CAD85, annualized volatility 25%, risk-free rate 5.0% (continuously compounded), dividend rate 0%. Under the risk-neutral measure the stock drifts at the risk-free rate adjusted for volatility.
A path-dependent payoff: the Asian option
Many payoffs depend on the whole price path, not just the final price. An Asian option pays whichever is larger, zero or the gap between the final price and the average price across the option’s life, so every day on the path matters.
Value a 21-day Asian option on a Swiss-franc stock: current price CHF25.00, annualized volatility 25%, risk-free rate 5.0%, dividend rate 0%. The daily log return is drawn as (0.05 − 0.252/2) × (1/252) + 0.25 × √(1/252) × X, where the drift uses one day out of 252, the factor 0.25 scales to a 25% annualized volatility, and √(1/252) scales that volatility to one day. Prices update by Pt = Pt−1 × e^(r_t).
More complex instruments, such as mortgage-backed securities, are harder still because they embed options (the borrower can prepay when refinancing is attractive). Monte Carlo remains a complement to analytical methods, not a replacement: it gives statistical estimates, not exact answers, and its accuracy depends entirely on the assumptions about distributions, correlations, and volatilities.
Strengths and weaknesses
Strengths: wide applicability across assets and risk factors, the ability to model non-linear relationships, fat tails, and time-varying volatility, effective handling of correlations, a forward-looking design that can model scenarios never seen in history, high precision with enough runs, and flexibility for non-normal distributions. Weaknesses: heavy computational demands for large run counts, dependence on the modeling assumptions, setup complexity, and reliance on data to estimate parameters such as volatility and correlation.