Oh and if you like million fold speedups :-)
The analytic expression below gives the exact answer -- no monte carlo
function callprice(S0, K, r, T, σ)
β= T.^0.5*σ
γ= S0*exp(T*(r-σ^2/2))
K2 = K/ γ
Cmean =
(e^(β^2/2)*erfc((-β+log(K2)/β)/sqrt(2))-K2*erfc(log(K2)/(β*sqrt(2))))/2
return exp(-r*T)*Cmean* γ
end
On Wednesday, February 19, 2014 10:11:02 AM UTC-5, Alan Edelman wrote:
>
> Just tried this quickly and it ran in half the time on my machine:
>
> function callprice2(S0, K, r, T, σ, paths)
> Csum = 0.0
>
> β= T.^0.5*σ
> γ= S0*exp(T*(r-σ^2/2))
>
>
> for j = 1:paths
> Zj = β*randn()
> STj = exp(Zj)* γ
> Csum += max(STj - K,0.0)
> end
> return exp(-r*T)*Csum/paths
> end
>
>
>
> On Monday, February 17, 2014 12:37:11 AM UTC-5, Andreas Noack Jensen wrote:
>>
>> Are you referring to the "vectorized version" in MATLAB or julia? On my
>> machine, the version I sent you was slightly slower than MATLAB on one
>> processor and faster in parallel. I am not sure what causes the error you
>> get, but it could look like a problem in JuliaStudio.
>>
>>
>> 2014-02-16 22:43 GMT+01:00 Pithawat Tan Vachiramon <[email protected]>:
>>
>>> Thanks for the code, I tried it and now runs only slightly slower than
>>> vectorized version. As Stefan said the global variable is causing a huge
>>> slow down.
>>>
>>> I tried addprocs(2) but I get this error. My Julia version is version
>>> 0.2 (came with Julia Studio).
>>>
>>> fatal error on 10: ERROR: ConsoleLogic not defined in deserialize at
>>> serialize.jl:334
>>> in handle_deserialize at serialize.jl:322
>>> in deserialize at serialize.jl:372
>>> in handle_deserialize at serialize.jl:322
>>> in deserialize at serialize.jl:361
>>> in handle_deserialize at serialize.jl:322
>>> in deserialize at serialize.jl:305
>>> in anonymous at serialize.jl:325
>>> in ntuple at tuple.jl:26
>>> in deserialize_tuple at serialize.jl:325
>>> in handle_deserialize at serialize.jl:317
>>> in deserialize at serialize.jl:360
>>> in handle_deserialize at serialize.jl:322
>>> in anonymous at task.jl:822
>>> ProcessExitedException()
>>>
>>>
>>> julia>
>>> Worker 10 terminated.
>>> ERROR: read: end of file
>>> in yield at multi.jl:1540
>>> in wait at task.jl:117
>>> in wait_full at multi.jl:557
>>> in remotecall_fetch at multi.jl:657
>>> in call_on_owner at multi.jl:704
>>> in fetch at multi.jl:712
>>> in mr_pairwise at reduce.jl:135
>>> in mapreduce at reduce.jl:158
>>> in preduce at multi.jl:1435
>>> in timecallprice at /Users/tanvach/Desktop/Julia/calloption.jl:1509
>>> in on_eval_msg at /Applications/JuliaStudio.app/Contents/Resources/
>>> Console/ConsoleLogic.jl:24
>>> in handle_input at /Applications/JuliaStudio.app/Contents/Resources/
>>> Console/ConsoleLogic.jl:131
>>> in anonymous at /Applications/JuliaStudio.app/Contents/Resources/
>>> Console/ConsoleLogic.jl:144
>>> in handle_pending_events at /Applications/JuliaStudio.app/Contents/
>>> Resources/juliet/src/modules/event/event.jl:84
>>> in update at /Applications/JuliaStudio.app/Contents/Resources/juliet/
>>> src/modules/event/event.jl:59
>>> in event_loop at /Applications/JuliaStudio.app/Contents/Resources/
>>> juliet/src/modules/event/event.jl:72
>>> in run at /Applications/JuliaStudio.app/Contents/Resources/juliet/src/
>>> juliet-engine.jl:48
>>> in include at boot.jl:238
>>> in include_from_node1 at loading.jl:114
>>> in process_options at client.jl:303
>>> in _start at client.jl:389
>>>
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Med venlig hilsen
>>
>> Andreas Noack Jensen
>>
>