I had started the QuantLib.jl package, but the goal was basically a rewrite of the C++ package in Julia. I haven't given it much love lately, but I hope to pick it back up sometime soon. Anyone who wants to join in is definitely welcome!
Chris On Saturday, September 17, 2016 at 11:28:36 AM UTC-4, Chris Rackauckas wrote: > > Thanks Femto Trader for bumping this. I took a quick look at Quantlib (and > Ito) and I have to say, their numerical methods are very rudimentary (in > fact, one of their methods for stochastic processes, EndPointEuler, doesn't > have finite moments for its error due to KPS 1994...). For anything that > isn't a Jump Process you can currently use DifferentialEquations.jl which > has higher Strong order methods for solving the SDEs (with efficient > adaptivity coming whenever my paper gets past peer review... short summary: > mathematicians don't like computer science tools to show up in their math > papers even if it makes it faster...). That's the thing though, you have to > know the stochastic differential equation for the process. > > That said, it would pretty trivial to use dispatch so that way you define > a "GeneralizedBlackScholes" equation, when then uses dispatch to construct > an SDE and apply an optimized SDE method to it. Since you can already do > this manually, it would just take setting up an object and a dispatch for > each process. Would this kind of ease-of-use layer for quants be something > anyone is interested in? > > The other thing is the Forward Kolmogorov PDEs associated to the SDEs. > Currently I have FEM methods for Poisson and Semilinear Heat Equations > which, as with the SDEs, can define any of the processes. This has a few > more fast methods than Quantlib, but it doesn't have TRBDF2 (but that would > be pretty trivial to implement. If you want it let me know, it should take > less than hour to modify what I have for the trapezoid rule since it's just > about defining the implicit function, NLsolve handles the solving). > > However, for most PDEs in finance you likely don't need the general > boundaries that FEM provides and so FDM (finite difference methods) can > probably be used. I haven't coded it up yet because I was looking for the > right implementation. I am honing in on it: ImageFiltering.jl gives a good > n-dimensional LaPlacian operator (and if I can convince Tim Holy it's > worthwhile, parallel/multithreaded), and I will be building up Grids.jl > <https://github.com/JuliaMath/Grids.jl/issues/3> memory-efficient > iterators for storing the space. This should lead to blazing fast FDM > implementations where the only actual array are the independent variable > (the option price) itself, so it should also be pretty memory efficient. > I'll be pairing this with the standard methods but also some very recent > Implicit Integrating Factor Methods (IIF) which should give a pretty large > speedup over anything in Quantlib for stiff equations. Would anyone be > interested in a quant ease-of-use interface over this as well? (If you'd > like to help speed this up, the way to do that is to help get Grids.jl > implemented. The ideas are coming together, but someone needs to throw > together some prototype (which shouldn't be too difficult)) > > Note that Jump Processes can easily be done by using callback functions > (independent jumps can be computed in advance and then use an appropriate > tspan, adding the jump between the intervals. Dependent jumps just need to > use a callback within to add a jump in the appropriate intervals and maybe > interpolate back a bit, likely better with adaptive timestepping), and I'll > probably make an API to make this easier. > > Let me know what you guys would like to see on the differential equation / > stochastic processes side and I'll make it happen. I'm doing most of this > stuff for SPDEs in stochastic systems biology, but the equations are > literally the same (general SDEs and semilinear Heat equations) so I'm > plowing through whatever I can. > > On Thursday, October 1, 2015 at 7:34:32 PM UTC-7, Christopher Alexander > wrote: >> >> I think the Ito package is a great start, and I've forked it to work on >> adding to it other features of Quantlib (as best as I can!). I'm glad >> someone mentioned the InterestRates package too as I hadn't seen that. I >> work at major bank in risk, and my goal is to at some point sell them on >> the power of Julia (we are currently a Python/C++ shop). >> >> - Chris >> >> On Friday, September 11, 2015 at 2:05:39 AM UTC-4, Ferenc Szalma wrote: >>> >>> Are there any quant finance packages for Julia? I see some rudimentary >>> calendar and day-counting in Ito.js for example but not much for even a >>> simple yield2price or price2yield or any bond objects in Julia packages on >>> GitHub. What is the best approach, using C++ function/object from Quantlib, >>> to finance in Julia? >>> >>
