Objective

Test whether caching the theta-dependent MCDynamicsCache operator inside the hybrid Hamilton+MC evaluator provides measurable wall-time speedup without introducing any numerical drift.

Setup

  • Model: 54 free parameters, hybrid Hamilton-Kim 6D + MC cap-rate evaluator
  • Evaluator: Arm 0 (no cache) vs Arm 2 (strict theta-only MCDynamicsCache from Dict)
  • Comparators: Arm 0 baseline at mc_R=100, mc_H_burn=150; deep benchmark at R=1000, H=500
  • Acceptance: REPLACE if speedup >= 1.15; KEEP if >= 1.05; KILL if < 1.05

Procedure

  • Task 0: re-pin mc_H_burn=150 from three sim-data call sites (independent of benchmark_config.jl)
  • Tier A: 16 smoke tests on correctness and cache mechanics
  • Tier B: 5 seeds x 4 theta x 2 arms = 40 main cells + 25 stress passes (100 cache hits)
  • Deep benchmark: R=1000, H=500, seed=9001 (4 evals, distinct seed family)
  • Audit: independent alt_impl (10 seeds x 4 theta = 40 cells); fragility probe on m_g collision

Results

  • Bit-identity: max |delta NLL| = 0.0 across all 20 main cells (structural, not measured)
  • Speedup: mean 1.0006, median 0.9956, warm-only 0.9972 — all inside negative-leverage band
  • Cache stats: builds=4, misses=4, hits=116 (as expected)
  • Pricing error ratio vs deep benchmark: 1.000000
  • Top-3 ranking match: identical; top-2 reversal: none; seedwise rank agreement: 1.0
  • Audit alt_impl: 40/40 bit-identical (max |delta| = 0.0, 5 Tier-B + 5 fresh seeds)
  • Latent hazard (A1): MCDynamicsCache.mu_arr depends on m_g (delta=8.32e-2 at dm_g=1e-3); cache key on theta_54 under-identifies when m_g varies; stale-hit drift = -3.01e6 nats

Analysis

The KILL is pre-committed and expected: MCDynamicsCache is a handful of Array/vec/collect operations on reduced-form params (~50us per build), while the dominant cost is the seed-dependent 1428-call Q-table sweep (~2.3s). Only MCDynamicsCache is theta-cacheable; everything else (MCUniformCache, MCRegimePaths, MCDecayTable) depends on mc_seed. The bit-identity property is structural under CRN, not a lucky numerical accident. The latent A1 hazard (cache key under-identifies when m_g varies independently of theta_54) is not Tier-B-reachable but must be addressed before any future reuse.

Claim updates

No claim updated (infrastructure speed question, no testable scientific claim).

Follow-up

  • Seed-safe (theta, seed) Q-table cache is a different question (different experiment)
  • Cache key must be strengthened to theta_55 or rf before any future reuse with m_g variation
  • theta_true panel row is off IS-stationarity manifold by 2.78e-6 (non-kill side-finding)