Objective

Build and validate a simulation-based cap-rate pricing operator that can replace the M0 Riccati recursion inside the MLE likelihood loop. The MC approach directly simulates Q-measure paths, accumulates discounted cash flows, and averages — bypassing the affine-local collapse operator that introduces a 13-17% structural bias.

Setup

  • MC pricer signature: Q_mc(x, regime, asset, theta; H, N, seed) -> (price, SE) with CRN via pre-drawn master shock and uniform arrays.
  • Design: H=750 default, N=500 production, CRN mandatory across assets and time points within a likelihood call.
  • Lookup table approach (Phase D0): price on a sparse x-grid once per (theta, regime, asset), interpolate for ~90 data points; rebuild per theta evaluation.
  • Comparator: M0 affine-local collapse at T_bar=1400 plus BC Riccati recursion at H=39 + constant continuation.
  • Key open question: does per-eval MC rebuild support reliable likelihood-based estimation despite its stochasticity?

Procedure

  • Phase A: build Q_mc function, validate against BC benchmark at multiple (x, regime, asset) combinations.
  • Phase A+: strip-decay structure analysis — confirm geometric tail decay, measure CV of decay rate across (x, regime) combinations, establish h_burn.
  • Phase B: CRN smoothness and ranking stability — confirm that a fixed-seed MC likelihood surface ranks parameter vectors comparably to the deterministic Hamilton approach.
  • Phase C: direct comparison of MC-based NLL vs Hamilton NLL at multiple theta vectors.
  • Phase D0: lookup-table approach — per-theta sparse-grid rebuild with interpolation for data points.

Results

  • MC convergence: 500 paths at H=1000 well-converged; relative SE < 1% at benchmark states. BC recursion has a structural eigenvalue bias (strips don’t decay fast enough in log space); MC bypasses this.
  • Geometric tail (Phase A+): decay is state-independent (CV < 0.032%); h_burn=100 gives 14x speedup with negligible accuracy loss.
  • Phase D0 lookup: 116x speedup vs direct MC pricing at 2.77-nat accuracy on the benchmark state set. But: per-eval rebuild is mandatory — a fixed lookup drifts +5269 nats (catastrophic), because the lookup encodes theta-dependent Q-dynamics.
  • CRN variance reduction: only 1.4-1.6x (regime-path fragility dominates).
  • Code delivered in SimMdlPrices/src/{mc_pricer,mc_strips,mc_tail,mc_lookup}.jl.

Analysis

The MC pricer is the production pricing layer for the constrained MLE: it bypasses the M0 structural bias that contaminates cap-rate levels, risk premia, and mortgage spreads. The per-eval rebuild requirement means the 116x lookup speedup accrues only within a single theta evaluation (interpolating across data points rather than repricing), not across theta evaluations. The CRN regime-path fragility is a fundamental limit — shared continuous shocks help, but the regime chain resamples under each theta, breaking path correlation. This sets the noise floor for RBPF-embedded MC pricing.

Claim updates

  • bond-dividend-strip-prices-regime-switching: tested_by, strength strong. MC pricer provides a direct simulation-based validation of the Riccati strip recursion and exposes the M0 eigenvalue bias that the recursion suffers under affine-local collapse.
  • principal-eigenvalue-determines-long-run-asset: tested_by, strength moderate. Geometric tail extrapolation exploits the principal-eigenvalue decay (state-independent asymptotic rate), validated across all 4 regimes and multiple state points.

Follow-up