三因子期权定价Monte Carlo Euler离散化偏差问题排查求助
Here are the key suspicious points in your implementation that likely cause the underpricing:
Static State Variable Calculation: Your code computes
r,rf,v, andQusing only initial values (r_0,v_0, etc.) for all time steps, instead of iterating through each step to update variables dynamically. Euler-Maruyama requires updating each state variable at every time step using the previous step's value. For example:- The
rprocess should be built incrementally:r(:,t) = r(:,t-1) + p.alpha1*(p.beta1 - r(:,t-1))*dt(t) + p.eta1*sqrt(dt(t))*...(using the priorrvalue, notr_0for all steps). - Same for
v: you’re usingsqrt(v_0)in every shock term, but it should besqrt(max(v(:,t-1), 0))to update volatility path-by-path.
- The
Incorrect Delta Process Dynamics: The delta process is defined as
delta = delta0_vals(i) + delta0_vals(i)*Q, butQuses static initial values instead of the dynamic paths ofr,rf, andv. Typically, an exchange rate-like delta process follows an SDE likedδ/δ = (r - rf)dt + sqrt(v)dW1 + ξ1 r dW2 + ξ2 rf dW3—your current drift and shock terms don’t incorporate time-varyingr(t)andrf(t)from each path.Discounting Error: You’re using a single zero-coupon bond (ZCB) value computed from
r_0to discount all payoffs. In Monte Carlo, each path’s payoff should be discounted using the path-specific integral of the short rate:exp(-sum(r(:,1:n).*dt))for each simulation. Using a fixed ZCB ignores the stochastic nature of the domestic rate, leading to incorrect discounting.Low Simulation Count: M=1000 is a small number of Monte Carlo paths, which can introduce significant sampling noise. While this might not explain systematic underpricing, increasing M (e.g., to 10,000 or 100,000) would help confirm if the bias stems from discretization or sampling error.
These issues are not just expected discretization bias—they’re fundamental mistakes in implementing the Euler-Maruyama scheme for multi-factor stochastic processes. Fixing the dynamic iteration of state variables and path-dependent discounting should align your results with the paper.
内容的提问来源于stack exchange,提问作者Umberto Mannello

