Pagina 1 van 1

Black & Scoles - Juiste formule

BerichtGeplaatst: wo 15 sep 2004, 21:10
door Mrb
Ik wil in een koersvenster een kolom weergeven met de optieprijs vlgs Black & Scoles.

Uit een eerder posting heb ik deze formule.

BlackScholes(Next3rdFriday,xStrike,Close,3,40,1)

Ik krijg hier echter altijd een syntaxfout dat hij een naam van een variable verwacht.

Wat is hier nog fout?

Black & Scoles

BerichtGeplaatst: do 16 sep 2004, 11:58
door GMe
{*******************************************************************
Description: This Indicator plots Black Scholes
Provided By: Omega Research, Inc. (c) Copyright 1999
********************************************************************}

Inputs: Type(0), ExpMonth(0), ExpYear(0), Strike(0), IntRate(0), Vola(0);
?
If ExpMonth > 0 AND ExpMonth < 13 AND Strike > 0 AND IntRate >= 0 AND Vola >= 0 Then
Plot1(BlackScholes(DaysToExpiration(ExpMonth, ExpYear), Strike, Close of Data1, IntRate, Vola, Type), "BlackScholes" )
Else
Plot1(0, "BlackScholes");

Black & Scoles

BerichtGeplaatst: do 16 sep 2004, 11:59
door GMe
{***********************************************************************
Description:This Function returns Black option valuation model
Provided By: Omega Research, Inc. (c) Copyright 1999
************************************************************************}

Inputs: DaysLeft(Numeric), Strike(Numeric), AssetPrice(Numeric), InterestRate(Numeric), Volty(Numeric), OptionType(Numeric);
Variables: Answer(0), D1(0), D2(0), Nd1(0), ND2(0), e(2.71828183), ERT(0), NprimeX(0), pi(3.14159), Price(0), StrikePrice(0), r(0), Vty(0), TInDays(0), TAnnual(0), SQRootTime(0), skip(0), OT(0);

StrikePrice = Strike;
Price = AssetPrice;
Vty = volty * .01;

If OptionType = 1 OR OptionType = Call Then
OT = Call;
If OptionType = 0 OR OptionType = Put Then
OT = Put;

If Price > 0 Then Begin
If StrikePrice > 0 Then Begin
If Vty > 0 Then Begin

TInDays = DaysLeft;

If TInDays > 0 Then Begin
TAnnual = TInDays * 0.002739;
? ? SQRootTime = SquareRoot(TAnnual);

If InterestRate > 0 Then Begin
?r = InterestRate * .01;
skip = 1;
D1 = (Log(Price / StrikePrice) + ((r + ((Vty * Vty) * .5)) * TAnnual)) / (Vty * SQRootTime);
NprimeX = (1 / SquareRoot(2 * pi)) * Power(e, -(D1 * D1) * .5);
ERT = Power(e, -1 * r * TAnnual);

If OT = Put Then Begin
?Nd1 = NormalSCDensity(-D1);
?D2 = (Vty * SQRootTime) - D1;
ND2 = NormalSCDensity(D2); ? ?
Answer = (-Price * Nd1) + StrikePrice * ERT * ND2;
If Answer > StrikePrice Then
Answer = StrikePrice;
If Answer < StrikePrice - Price Then
Answer = StrikePrice - Price;
? BlackScholes = Answer;
End
Else
If OT = Call Then Begin
Nd1 = NormalSCdensity(D1);
D2 = D1 - (Vty * SQRootTime);
ND2 = NormalSCDensity(D2); ?
Answer = Price * Nd1 - StrikePrice * ERT * ND2;
If Answer < Price - StrikePrice Then
Answer = Price - StrikePrice;
BlackScholes = Answer;
End;
End;
End;
End;
End;
End;

If skip = 0 Then Begin
Answer = 0;
If OT = Put Then Begin
If 0 < StrikePrice - Price Then
Answer = StrikePrice - Price;
BlackScholes = Answer;
End
Else
If OT = Call Then Begin
If 0 < Price - StrikePrice Then
Answer = Price - StrikePrice;
BlackScholes = Answer;
End;
End;