Here’s the environment, and the whole file, if it helps
(JD) pkg> st
Status `~/Desktop/JD/Project.toml`
[a077e3f3] DiffEqProblemLibrary v4.8.0
[0c46a032] DifferentialEquations v6.14.0 `https://github.com/SciML/DifferentialEquations.jl.git#master`
[91a5bcdd] Plots v0.29.9
[e6cf234a] RandomNumbers v1.4.0
(JD) pkg>
using DifferentialEquations, Plots
function MyProblem(μ0,μ1,κ,α,σ,ρ,u0,tspan)
f = function (du,u,p,t)
du[1] = μ0 + μ1*(u[2]-α)/σ # drift in prices
du[2] = κ*(α-u[2]) # mean reversion in shocks
end
g = function (du,u,p,t)
du[1] = exp(u[2]/2.0)
du[2] = σ
end
Γ = [1 ρ;ρ 1] # Covariance Matrix
noise = CorrelatedWienerProcess!(Γ,tspan[1],zeros(2),zeros(2))
sde_f = SDEFunction{true}(f,g)
SDEProblem(sde_f,g,u0,tspan,noise=noise)
end
μ0 = 0.0
μ1 = 0.0
κ = 0.05
α = 0.2
σ = 0.2
ρ = -0.7
λ0 = 2.0
λ1 = 3.0
u0 = [0;α]
dt = 0.01
prob = MyProblem(μ0, μ1, κ, α, σ, ρ, u0, (0.0,1000.0))
## jump in price
#rate1(u,p,t) = λ0 # constant jump rate
rate1(u,p,t) = λ0.*exp(u[2]) # volatility dependent jump rate
# jump is normal with st. dev. equal to λ1 times current st. dev.
affect1!(integrator) = (integrator.u[1] = integrator.u[1].+randn(size(integrator.u[1])).*λ1.*exp(integrator.u[2]./2.0))
# this works:
jump1 = ConstantRateJump(rate1,affect1!)
# this does not
#jump1 = VariableRateJump(rate1,affect1!)
jump_prob = JumpProblem(prob,Direct(), jump1)
sol = solve(jump_prob,SRIW1(), dt=dt, adaptive=false)