AFAICS you only have to change the first cnd verb to:

cnd =: 3 : 'normalprob 0, 1,__,y'"0




Hallo Ian Clark, je schreef op 30-06-09 07:54:
> To follow this you'll need to refer to the page:
>  http://www.jsoftware.com/jwiki/Doc/Articles/Play193
>
> I'm testing the code for Edn 2 of APWJ, and it doesn't give the result
> I expect. It checks out  fine until I come to this example about
> halfway down, attributed to Oleg:
>
> BlackScholes=: 4 : 0
> 'S X T r v' =. y.
> d1=. ((ln S%X)+(r+-:*:v)*T)%(v * sqrt T)
> d2=. d1 - v * sqrt T
> (S, X * exp-r*T) (-/ . * cnd)&(-^:x.) (d1, d2)
> )
>
> At the end of the article, Gene gives a sample result with his
> improved Black-Scholes formula BS as follows (this I can reproduce, so
> I'm happy that BS works):
>
>    yc=:60 65 0.25 0.08   0.3
>    BS yc
> 2.13337
>    yp=:60 65 0.25 0.08 _0.3
>    BS yp
> _5.84628
> (ignore the minus... a side-effect of a clever trick to specify 'put' or 
> 'call'.
>
> The example verbs attributed to Hu Zhe work okay also:
>
>    BlackScholesCall yc
> 2.13338
>    BlackScholesPut yc
> 5.84629
>
> ...well, near enough
>
> I reason that the given verb BlackScholes should check out in like
> manner using the same yc:
>
>    0 BlackScholes yc   NB. left arg 0/1 decides if a 'put' or a 'call'
> 2.13337
>    1 BlackScholes yc
> 5.84629
>
> ...or maybe it's the other way around...?
> But I don't get anything like these values. I get _3.91783 and 3.508
> respectively.
>
> I can verify that the intermediate values d1 and d2 in BlackScholes
> get the same values as they do in the Hu Zhe example (_0.325285 and
> _0.475285 respectively). It's the final line that's the mischief:
>
> (S, X * exp-r*T) (-/ . * cnd)&(-^:x.) (d1, d2)
>
> Somehow, over the years, J must have changed in how it executes it.
> Can anyone debug it, please, to give the expected result?
>
> BTW: It seems to me the given example should also work if x and y
> replace deprecated x. and y. respectively. Unfortunately the
> subsequent examples won't work then, because x clashes with its use as
> a work-variable to hold the second element of yc. This can be overcome
> by adhering rigidly to the earlier convention of using S X T for the
> first 3 elements of yc instead of s x t --which the article lapses
> into doing. But that is (I think) an independent issue.
>
> Ian Clark
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>   

-- 
Met vriendelijke groet,
=@@i

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to