커뮤니티

이론가..

프로필 이미지
파문일기
2010-09-09 20:08:57
1124
글번호 32271
답변완료
옵션 이론가를 찾아보니 다음과 같은 수식을 적용해보는데, 잘 안되네요..... 함수 등록부터 않되니... 점검해주시면 감사하겠습니다. _NormSDist.yfu (표준정규분포사용자함수) input:z(numeric); var : a1(0.31938153), a2(-0.356563782), a3(1.781477937), a4(-1.821255978), a5(1.330274429), R(0.2316419), Exp(2.71828182846), k(0), N(0); k = 1 / (1 + (R * Abs(z))); N = 1 / (Sqrt(2 * Pie())) * Exp^(-(z^2) / 2); _NormSDist = 1 - N * (a1 * k + a2 * (k ^ 2) + a3 * (k ^ 3) + a4 * (k ^ 4) + a5 * (k ^ 5)); If z < 0 Then _NormSDist = 1 - _NormSDist; _BlackSholes.yfu (BS 모델이론가 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); var1 = (log(S/X) + (r + (Sig^2) / 2) * T) / (Sig*sqrt(T)); var2 = var1 - Sig*sqrt(T); if cpflag == 1 then { _BlackSholes = S * _NormSDist(var1) - X * (Exp^((-r)*T)) * _NormSDist(var2); } else if cpflag == 2 then { _BlackSholes = X * (Exp^((-r)*T)) * _NormSDist(var2) - S * _NormSDist(var1); } _ImVol.yfu (내재변동성 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Price(numeric); var:vLow(0), vHigh(0), vi(0),cLow(0), cHigh(0), Epsilon(0.001), j(0), n(5000); vLow = 0.01; vHigh = 2; cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow); cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh); vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow); for j = 0 to n { If _BlackSholes(cpFlag, S, X, T, r, q, vi) < Price Then vLow = vi; Else vHigh = vi; cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow); cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh); vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow); if Abs(Price - _BlackSholes(cpFlag, S, X, T, r, q, vi)) <= Epsilon then { var1 = vi; j = n; } } _ImVol = vi; 옵션이론가.yin (지표식) /*cpFlag : Call,Put 구분, 1,2로 표현 S : 기초자산가격의 가격, 예)주가지수(KOSPI200) X : 행사가격 T : 잔존만기(연율) r : 무위험 이자율, 예) CD금리 q : 배당률 Sig : 변동성 */ input: cpflag(1), //콜풋 입력 InS(0), //현재 지수를 입력 안하면 data 참조를 통해 실시간 가격을 이용. 테스트시 이용 x(145.0), //행사가 입력 ex(20050908), //만기일 r(0.0351), //CD 금리, 요기서 볼 수 있음 ==> http://stock.koscom.co.kr/ q(0), //배당률 InSig(0), //내재변동성을 입력 안하면 자체 계산된 변동성을 사용. 단, 오차 감안해야 함 InPrice(0); //역시 테스트를 목적으로 함 var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0; S = iff(inS!=0,inS,data1("c")); //kospi200종합을 같이 띄워 놓아야 합니다. T = (DateToJulian(ex) - DateToJulian(date) + 1)/365; price = iff(inPrice!=0,inPrice,c); imvol = _ImVol(cpFlag, S, X, T, r, q, price); sig = iff(insig!=0,insig,ImVol); bs = _BlackSholes(cpFlag, S, X, T, r, q, sig); plot2(bs,"이론가");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2010-09-10 10:20:56

안녕하세요 예스스탁입니다. /*cpFlag : Call,Put 구분, 1,2로 표현 S : 기초자산가격의 가격, 예)주가지수(KOSPI200) X : 행사가격 T : 잔존만기(연율) r : 무위험 이자율, 예) CD금리 q : 배당률 Sig : 변동성 */ input: cpflag(1), //콜풋 입력 InS(0), //현재 지수를 입력 안하면 data 참조를 통해 실시간 가격을 이용. 테스트시 이용 x(145.0), //행사가 입력 ex(20050908), //만기일 r(0.0351), //CD 금리, 요기서 볼 수 있음 ==> http://stock.koscom.co.kr/ q(0), //배당률 InSig(0), //내재변동성을 입력 안하면 자체 계산된 변동성을 사용. 단, 오차 감안해야 함 InPrice(0); //역시 테스트를 목적으로 함 var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0); S = iff(inS!=0,inS,data1("c")); //kospi200종합을 같이 띄워 놓아야 합니다. T = (DateToJulian(ex) - DateToJulian(date) + 1)/365; price = iff(inPrice!=0,inPrice,c); imvol = _ImVol(cpFlag, S, X, T, r, q, price); sig = iff(insig!=0,insig,ImVol); bs = _BlackSholes(cpFlag, S, X, T, r, q, sig); plot2(bs,"이론가"); 수식의 문법적오류를 수정해서 올려드립니다. 32552__NormSDist.yfu 에서 32552_는 삭제하시고 저장하여 상용하시기 바랍니다. 즐거운 하루되세요 > 파문일기 님이 쓴 글입니다. > 제목 : 이론가.. > 옵션 이론가를 찾아보니 다음과 같은 수식을 적용해보는데, 잘 안되네요..... 함수 등록부터 않되니... 점검해주시면 감사하겠습니다. _NormSDist.yfu (표준정규분포사용자함수) input:z(numeric); var : a1(0.31938153), a2(-0.356563782), a3(1.781477937), a4(-1.821255978), a5(1.330274429), R(0.2316419), Exp(2.71828182846), k(0), N(0); k = 1 / (1 + (R * Abs(z))); N = 1 / (Sqrt(2 * Pie())) * Exp^(-(z^2) / 2); _NormSDist = 1 - N * (a1 * k + a2 * (k ^ 2) + a3 * (k ^ 3) + a4 * (k ^ 4) + a5 * (k ^ 5)); If z < 0 Then _NormSDist = 1 - _NormSDist; _BlackSholes.yfu (BS 모델이론가 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); var1 = (log(S/X) + (r + (Sig^2) / 2) * T) / (Sig*sqrt(T)); var2 = var1 - Sig*sqrt(T); if cpflag == 1 then { _BlackSholes = S * _NormSDist(var1) - X * (Exp^((-r)*T)) * _NormSDist(var2); } else if cpflag == 2 then { _BlackSholes = X * (Exp^((-r)*T)) * _NormSDist(var2) - S * _NormSDist(var1); } _ImVol.yfu (내재변동성 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Price(numeric); var:vLow(0), vHigh(0), vi(0),cLow(0), cHigh(0), Epsilon(0.001), j(0), n(5000); vLow = 0.01; vHigh = 2; cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow); cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh); vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow); for j = 0 to n { If _BlackSholes(cpFlag, S, X, T, r, q, vi) < Price Then vLow = vi; Else vHigh = vi; cLow = _BlackSholes(cpFlag, S, X, T, r, q, vLow); cHigh = _BlackSholes(cpFlag, S, X, T, r, q, vHigh); vi = vLow + (Price - cLow) * (vHigh - vLow) / (cHigh - cLow); if Abs(Price - _BlackSholes(cpFlag, S, X, T, r, q, vi)) <= Epsilon then { var1 = vi; j = n; } } _ImVol = vi; 옵션이론가.yin (지표식) /*cpFlag : Call,Put 구분, 1,2로 표현 S : 기초자산가격의 가격, 예)주가지수(KOSPI200) X : 행사가격 T : 잔존만기(연율) r : 무위험 이자율, 예) CD금리 q : 배당률 Sig : 변동성 */ input: cpflag(1), //콜풋 입력 InS(0), //현재 지수를 입력 안하면 data 참조를 통해 실시간 가격을 이용. 테스트시 이용 x(145.0), //행사가 입력 ex(20050908), //만기일 r(0.0351), //CD 금리, 요기서 볼 수 있음 ==> http://stock.koscom.co.kr/ q(0), //배당률 InSig(0), //내재변동성을 입력 안하면 자체 계산된 변동성을 사용. 단, 오차 감안해야 함 InPrice(0); //역시 테스트를 목적으로 함 var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0; S = iff(inS!=0,inS,data1("c")); //kospi200종합을 같이 띄워 놓아야 합니다. T = (DateToJulian(ex) - DateToJulian(date) + 1)/365; price = iff(inPrice!=0,inPrice,c); imvol = _ImVol(cpFlag, S, X, T, r, q, price); sig = iff(insig!=0,insig,ImVol); bs = _BlackSholes(cpFlag, S, X, T, r, q, sig); plot2(bs,"이론가");