I am interested in estimating the parameters of a jump diffusion using simulation-based methods, and filtering statistics through a neural net. The basic idea is working quite well. Now, I need to make the simulations as fast as possible, while keeping decent accuracy, so as not to loose identification of the parameters. I need to generate many solutions at different parameter vectors. Currently, I’m using the SRIW1 algorithm (in DifferentialEquations.jl):
sol = solve(jump_prob,SRIW1(), dt=dt, adaptive=false)
I am wondering if a different algorithm would be more better, to increase speed. I tried a few others, and did not see very large differences in solution time. I have experimented with julia threads and OPENBLAS threads, but I don’t see that the SRIW1 method is using either of them. I don’t have access to a useful GPU. Is there any recommendation for changing algorithms, tolerances, or means of using parallelism?
For reference, here’s the non-jump portion of the model:
function Diffusion(μ0,μ1,κ,α,σ,ρ,u0,tspan)
f = function (du,u,p,t)
du[1] = μ0 + μ1*(u[2]-α)/σ # drift in log 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.0 ρ;ρ 1.0] # 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