[Tutor] Cumulative distribution function
Laura Creighton
lac at openend.se
Thu Oct 1 10:36:17 CEST 2015
In a message of Thu, 01 Oct 2015 10:48:57 +0300, Michel Guirguis writes:
>Good morning,
>
>I have a problem with the cumulative distribution function in calculating derivatives. I am getting a call option figure of 2.5961 while it should be 2.9081. Could you please help.
>
> >>>S=50
>>>> K=50
>>>> r=0.03
>>>> q=0.02
>>>> sig=0.20
>>>> T=0.5
>
>>>> from math import*
>>>> d1=(log(S/K)+(r-q+(sig*sig)*0.5)*T)/(sig*sqrt(T))
>>>> d1
>0.10606601717798211
>>>> d2 =d1-sig*sqrt(T)
>>>> d2
>-0.03535533905932742
>>>> def cumdist():
>call = 50*exp(-0.02*0.5)*cumdist*(d1)-50*exp(-0.03*0.5)*cumdist*(d2)
>
>
>>>> call
>2.596102990952506
>
>Thanks,
>
>Michel
I do not know if this is your problem, but you can get significant errors
if you try to use binary floating point to represent money. You
should use decimal floating point instead.
see: https://docs.python.org/3.4/library/decimal.html
Laura
More information about the Tutor
mailing list