커뮤니티

수식 요청

프로필 이미지
회원
2013-05-09 22:41:23
619
글번호 63013
답변완료
안녕하세요 관리자님. 수고 많으십니다 아래 내용이용하여. 매매코져 하오니 시스템식. 부탁드립니다 선물2분. 또는5분 에서. 매매계힉이고요 수고^^. 그럼. 꾸벅 &#160;&#160; _NormSDist.yfu&#160;&#160;&#160;(표준정규분포사용자함수) input:z(numeric); var&#160;:&#160;a1(0.31938153), &#160;&#160;&#160;&#160;&#160;&#160;a2(-0.356563782), &#160;&#160;&#160;&#160;&#160;&#160;a3(1.781477937), &#160;&#160;&#160;&#160;&#160;&#160;a4(-1.821255978), &#160;&#160;&#160;&#160;&#160;&#160;a5(1.330274429), &#160;&#160;&#160;&#160;&#160;&#160;R(0.2316419), &#160;&#160;&#160;&#160;&#160;&#160;Exp(2.71828182846),&#160; &#160;&#160;&#160;&#160;&#160;&#160;k(0), &#160;&#160;&#160;&#160;&#160;&#160;N(0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; k&#160;=&#160;1&#160;/&#160;(1&#160;+&#160;(R&#160;*&#160;Abs(z))); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; N&#160;=&#160;1&#160;/&#160;(Sqrt(2&#160;*&#160;Pie()))&#160;*&#160;Exp^(-(z^2)&#160;/&#160;2); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _NormSDist&#160;=&#160;1&#160;-&#160;N&#160;*&#160;(a1&#160;*&#160;k&#160;+&#160;a2&#160;*&#160;(k&#160;^&#160;2)&#160;+&#160;a3&#160;*&#160;(k&#160;^&#160;3)&#160;+&#160;a4&#160;*&#160;(k&#160;^&#160;4)&#160;+&#160;a5&#160;*&#160;(k&#160;^&#160;5)); &#160; If&#160;z&#160;<&#160;0&#160;Then &#160;&#160;&#160;_NormSDist&#160;=&#160;1&#160;-&#160;_NormSDist; &#160; _BlackSholes.yfu&#160;(BS&#160;모델이론가&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(r&#160;+&#160;(Sig^2)&#160;/&#160;2)&#160;*&#160;T)&#160;/&#160;(Sig*sqrt(T)); var2&#160;=&#160;var1&#160;-&#160;Sig*sqrt(T); &#160; if&#160;cpflag&#160;==&#160;1&#160;then &#160;&#160;&#160;{ &#160;&#160;&#160;_BlackSholes&#160;=&#160;S&#160;*&#160;_NormSDist(var1)&#160;-&#160;X&#160;*&#160;(Exp^((-r)*T))&#160;*&#160;_NormSDist(var2); &#160;&#160;&#160;} else&#160;if&#160;cpflag&#160;==&#160;2&#160;then &#160;&#160;&#160;{&#160;&#160;&#160; &#160;&#160;&#160;_BlackSholes&#160;=&#160;X&#160;*&#160;(Exp^((-r)*T))&#160;*&#160;_NormSDist(var2)&#160;-&#160;S&#160;*&#160;_NormSDist(var1); &#160;&#160;&#160;} &#160; _ImVol.yfu&#160;(내재변동성&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Price(numeric); var:vLow(0),&#160;vHigh(0),&#160;vi(0),cLow(0),&#160;cHigh(0),&#160;Epsilon(0.001),&#160;j(0),&#160;n(5000); &#160;&#160;&#160; vLow&#160;=&#160;0.01; vHigh&#160;=&#160;2; &#160;&#160;&#160; cLow&#160;=&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vLow); cHigh&#160;=&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vHigh); vi&#160;=&#160;vLow&#160;+&#160;(Price&#160;-&#160;cLow)&#160;*&#160;(vHigh&#160;-&#160;vLow)&#160;/&#160;(cHigh&#160;-&#160;cLow); &#160; for&#160;j&#160;=&#160;0&#160;to&#160;n &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;If&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vi)&#160;<&#160;Price&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vLow&#160;=&#160;vi; &#160;&#160;&#160;&#160;&#160;&#160;Else &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vHigh&#160;=&#160;vi; &#160;&#160;&#160;&#160;&#160;&#160;cLow&#160;=&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vLow); &#160;&#160;&#160;&#160;&#160;&#160;cHigh&#160;=&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vHigh); &#160;&#160;&#160;&#160;&#160;&#160;vi&#160;=&#160;vLow&#160;+&#160;(Price&#160;-&#160;cLow)&#160;*&#160;(vHigh&#160;-&#160;vLow)&#160;/&#160;(cHigh&#160;-&#160;cLow); &#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;Abs(Price&#160;-&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;vi))&#160;<=&#160;Epsilon&#160;then &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var1&#160;=&#160;vi; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;j&#160;=&#160;n; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _ImVol&#160;=&#160;vi; &#160; _Delta.yfu&#160;&#160;(델타&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(q&#160;+&#160;(Sig^2)&#160;/&#160;2)*T)&#160;/&#160;(Sig*sqrt(T)); &#160; if&#160;cpflag&#160;==&#160;1&#160;then &#160;&#160;&#160;{ &#160;&#160;&#160;_Delta&#160;=&#160;Exp^((q-r)*T)&#160;*&#160;_NormSDist(var1); &#160;&#160;&#160;} else&#160;if&#160;cpflag&#160;==&#160;2&#160;then &#160;&#160;&#160;{&#160;&#160;&#160; &#160;&#160;&#160;_Delta&#160;=&#160;Exp^((q-r)*T)&#160;*&#160;(_NormSDist(var1)-1); &#160;&#160;&#160;} &#160; &#160; _Gamma.yfu&#160;&#160;(감마&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(q&#160;+&#160;(Sig^2)&#160;/&#160;2)*T)&#160;/&#160;(Sig*sqrt(T)); var3&#160;=&#160;(1&#160;/&#160;Sqrt(2&#160;*&#160;pie()))&#160;*&#160;(1&#160;/&#160;Exp^((var1^2)&#160;/&#160;2)); &#160; _Gamma&#160;=&#160;Exp^((q-r)*T)&#160;*&#160;var3&#160;/&#160;(S*Sig*Sqrt(T)); &#160; &#160; _Vega.yfu&#160;&#160;&#160;(베가&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(q&#160;+&#160;(Sig^2)&#160;/&#160;2)*T)&#160;/&#160;(Sig*Sqrt(T)); var3&#160;=&#160;(1&#160;/&#160;Sqrt(2*pie()))&#160;*&#160;(1&#160;/&#160;Exp^((var1^2)&#160;/&#160;2)); &#160; _Vega&#160;=&#160;S&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;var3&#160;*&#160;Sqrt(T)&#160;/100; &#160; &#160; _Theta.yfu&#160;&#160;(쎄타&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(q&#160;+&#160;(Sig^2)&#160;/&#160;2)*T)&#160;/&#160;(Sig*sqrt(T)); var2&#160;=&#160;var1&#160;-&#160;Sig*sqrt(T); var3&#160;=&#160;(1&#160;/&#160;Sqrt(2&#160;*&#160;pie()))&#160;*&#160;(1&#160;/&#160;Exp^((var1^2)&#160;/&#160;2)); &#160; if&#160;cpflag&#160;==&#160;1&#160;then &#160;&#160;&#160;{ &#160;&#160;&#160;_Theta&#160;=&#160;(-1)&#160;*&#160;(S&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;var3&#160;*&#160;Sig)&#160;/&#160;(2*Sqrt(T)) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-&#160;(q-r)&#160;*&#160;S&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;_NormSDist(var1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-&#160;r&#160;*&#160;X&#160;*&#160;Exp^((-r)*T)&#160;*&#160;_NormSDist(var2); &#160;&#160;&#160;} else&#160;if&#160;cpflag&#160;==&#160;2&#160;then &#160;&#160;&#160;{&#160;&#160;&#160; &#160;&#160;&#160;_Theta&#160;=&#160;(-1)&#160;*&#160;(S&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;var3&#160;*&#160;Sig)&#160;/&#160;(2*Sqrt(T)) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+&#160;(q-r)&#160;*&#160;S&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;_NormSDist(-var1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+&#160;r&#160;*&#160;X&#160;*&#160;Exp^((-r)*T)&#160;*&#160;_NormSDist(-var2); &#160;&#160;&#160;} &#160; _Theta&#160;=&#160;_Theta&#160;/&#160;365; &#160; &#160; &#160; _Rho.yfu&#160;&#160;&#160;(로&#160;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &#160; var1&#160;=&#160;(log(S/X)&#160;+&#160;(q&#160;+&#160;(Sig^2)&#160;/&#160;2)*T)&#160;/&#160;(Sig*sqrt(T)); var2&#160;=&#160;var1&#160;-&#160;Sig*sqrt(T); &#160; if&#160;cpflag&#160;==&#160;1&#160;then &#160;&#160;&#160;{ &#160;&#160;&#160;_Rho&#160;=&#160;X&#160;*&#160;T&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;_NormSDist(var2); &#160;&#160;&#160;} else&#160;if&#160;cpflag&#160;==&#160;2&#160;then &#160;&#160;&#160;{&#160;&#160;&#160; &#160;&#160;&#160;_Rho&#160;=&#160;-X&#160;*&#160;T&#160;*&#160;Exp^((q-r)*T)&#160;*&#160;_NormSDist(-var2); &#160;&#160;&#160;} &#160; &#160; 옵션민감도.yin&#160;&#160;(지표식) /*cpFlag&#160;:&#160;Call,Put&#160;구분,&#160;1,2로&#160;표현 &#160;&#160;S&#160;:&#160;기초자산가격의&#160;가격,&#160;예)주가지수(KOSPI200) &#160;&#160;X&#160;:&#160;행사가격 &#160;&#160;T&#160;:&#160;잔존만기(연율) &#160;&#160;r&#160;:&#160;무위험&#160;이자율,&#160;예)&#160;CD금리 &#160;&#160;q&#160;:&#160;배당률 &#160;&#160;Sig&#160;:&#160;변동성&#160;*/ &#160; input:&#160;cpflag(1),&#160;&#160;&#160;&#160;&#160;//콜풋&#160;입력 &#160;&#160;&#160;&#160;&#160;&#160;&#160;InS(0),&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//현재&#160;지수를&#160;입력&#160;안하면&#160;data&#160;참조를&#160;통해&#160;실시간&#160;가격을&#160;이용.&#160;테스트시&#160;이용 &#160;&#160;&#160;&#160;&#160;&#160;&#160;x(145.0),&#160;&#160;&#160;&#160;&#160;&#160;//행사가&#160;입력 &#160;&#160;&#160;&#160;&#160;&#160;&#160;ex(20050908),&#160;&#160;//만기일 &#160;&#160;&#160;&#160;&#160;&#160;&#160;r(0.0351),&#160;&#160;&#160;&#160;&#160;//CD&#160;금리,&#160;요기서&#160;볼&#160;수&#160;있음&#160;==>&#160;http://stock.koscom.co.kr/ &#160;&#160;&#160;&#160;&#160;&#160;&#160;q(0),&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//배당률 &#160;&#160;&#160;&#160;&#160;&#160;&#160;InSig(0),&#160;&#160;&#160;&#160;&#160;&#160;//내재변동성을&#160;입력&#160;안하면&#160;자체&#160;계산된&#160;변동성을&#160;사용.&#160;단,&#160;오차&#160;감안해야&#160;함 &#160;&#160;&#160;&#160;&#160;&#160;&#160;InPrice(0);&#160;&#160;&#160;&#160;//역시&#160;테스트를&#160;목적으로&#160;함 var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0),delta(0),gamma(0),vega(0),theta(0),rho(0); &#160;&#160;&#160;&#160; S&#160;=&#160;iff(inS!=0,inS,data1("c"));&#160;//kospi종합을&#160;같이&#160;띄워&#160;놓아야&#160;합니다. T&#160;=&#160;(DateToJulian(ex)&#160;-&#160;DateToJulian(date)&#160;+&#160;1)/365; price&#160;=&#160;iff(inPrice!=0,inPrice,c); &#160; imvol&#160;=&#160;_ImVol(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;price); sig&#160;=&#160;iff(insig!=0,insig,ImVol); &#160; bs&#160;=&#160;_BlackSholes(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); delta&#160;=&#160;_Delta(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); gamma&#160;=&#160;_gamma(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); theta&#160;=&#160;_theta(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); vega&#160;=&#160;_vega(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); rho&#160;=&#160;_rho(cpFlag,&#160;S,&#160;X,&#160;T,&#160;r,&#160;q,&#160;sig); &#160; plot1(imvol*100,"내재변동성"); plot2(bs,"이론가"); plot3(delta,"델타"); plot4(gamma,"감마"); plot5(theta,"쎄타"); plot6(vega,"베가"); plot7(rho,"로"); 매매 방법. Plot1. Plot2.plot3. Plot4. Plot5. Plot6. Plot7. 각각 서로 교차돌파 할때.마다 한번씩 즉시. 상승돌파면. 매수. 하락돌파면 매도식 감사합니다. ^^. 시스템에 에러없는지. 확인해주시면 더욱 고맙습니다 ^^
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-05-10 09:24:49

안녕하세요 예스스탁입니다. 아래 매수와 매도식과 같이 or로 조건을 연결해 사용하시면 됩니다. 각 값이 크로스가 가능한 값인지 확인하시기 바랍니다. 올리신 옵션그릭수치나 변동성과 관련해서는 저희 쪽에서 수식 계산검증은 해드리지 않습니다. 이용에 참고하시기 바랍니다. 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),delta(0),gamma(0),vega(0),theta(0),rho(0); S = iff(inS!=0,inS,data1("c")); //kospi종합을 같이 띄워 놓아야 합니다. 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); delta = _Delta(cpFlag, S, X, T, r, q, sig); gamma = _gamma(cpFlag, S, X, T, r, q, sig); theta = _theta(cpFlag, S, X, T, r, q, sig); vega = _vega(cpFlag, S, X, T, r, q, sig); rho = _rho(cpFlag, S, X, T, r, q, sig); if crossup(imvol*100,bs) or crossup(imvol*100,delta) or crossup(imvol*100,gamma) or crossup(imvol*100,theta) or crossup(imvol*100,vega) or crossup(imvol*100,rho) or crossup(bs,delta) or crossup(bs,gamma) or crossup(bs,theta) or crossup(bs,vega) or crossup(bs,rho) or crossup(delta,gamma) or crossup(delta,theta) or crossup(delta,vega) or crossup(delta,rho) or crossup(gamma,theta) or crossup(gamma,vega) or crossup(gamma,rho) or crossup(theta,vega) or crossup(theta,rho) or Then buy(); if CrossDown(imvol*100,bs) or CrossDown(imvol*100,delta) or CrossDown(imvol*100,gamma) or CrossDown(imvol*100,theta) or CrossDown(imvol*100,vega) or CrossDown(imvol*100,rho) or CrossDown(bs,delta) or CrossDown(bs,gamma) or CrossDown(bs,theta) or CrossDown(bs,vega) or CrossDown(bs,rho) or CrossDown(delta,gamma) or CrossDown(delta,theta) or CrossDown(delta,vega) or CrossDown(delta,rho) or CrossDown(gamma,theta) or CrossDown(gamma,vega) or CrossDown(gamma,rho) or CrossDown(theta,vega) or CrossDown(theta,rho) or Then sell(); 즐거운 하루되세요 > yang오뚜기 님이 쓴 글입니다. > 제목 : 수식 요청 > 안녕하세요 관리자님. 수고 많으십니다 아래 내용이용하여. 매매코져 하오니 시스템식. 부탁드립니다 선물2분. 또는5분 에서. 매매계힉이고요 수고^^. 그럼. 꾸벅 &nbsp;&nbsp; _NormSDist.yfu&nbsp;&nbsp;&nbsp;(표준정규분포사용자함수) input:z(numeric); var&nbsp;:&nbsp;a1(0.31938153), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a2(-0.356563782), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a3(1.781477937), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a4(-1.821255978), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a5(1.330274429), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R(0.2316419), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exp(2.71828182846),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k(0), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N(0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k&nbsp;=&nbsp;1&nbsp;/&nbsp;(1&nbsp;+&nbsp;(R&nbsp;*&nbsp;Abs(z))); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N&nbsp;=&nbsp;1&nbsp;/&nbsp;(Sqrt(2&nbsp;*&nbsp;Pie()))&nbsp;*&nbsp;Exp^(-(z^2)&nbsp;/&nbsp;2); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _NormSDist&nbsp;=&nbsp;1&nbsp;-&nbsp;N&nbsp;*&nbsp;(a1&nbsp;*&nbsp;k&nbsp;+&nbsp;a2&nbsp;*&nbsp;(k&nbsp;^&nbsp;2)&nbsp;+&nbsp;a3&nbsp;*&nbsp;(k&nbsp;^&nbsp;3)&nbsp;+&nbsp;a4&nbsp;*&nbsp;(k&nbsp;^&nbsp;4)&nbsp;+&nbsp;a5&nbsp;*&nbsp;(k&nbsp;^&nbsp;5)); &nbsp; If&nbsp;z&nbsp;<&nbsp;0&nbsp;Then &nbsp;&nbsp;&nbsp;_NormSDist&nbsp;=&nbsp;1&nbsp;-&nbsp;_NormSDist; &nbsp; _BlackSholes.yfu&nbsp;(BS&nbsp;모델이론가&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(r&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)&nbsp;*&nbsp;T)&nbsp;/&nbsp;(Sig*sqrt(T)); var2&nbsp;=&nbsp;var1&nbsp;-&nbsp;Sig*sqrt(T); &nbsp; if&nbsp;cpflag&nbsp;==&nbsp;1&nbsp;then &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;_BlackSholes&nbsp;=&nbsp;S&nbsp;*&nbsp;_NormSDist(var1)&nbsp;-&nbsp;X&nbsp;*&nbsp;(Exp^((-r)*T))&nbsp;*&nbsp;_NormSDist(var2); &nbsp;&nbsp;&nbsp;} else&nbsp;if&nbsp;cpflag&nbsp;==&nbsp;2&nbsp;then &nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;_BlackSholes&nbsp;=&nbsp;X&nbsp;*&nbsp;(Exp^((-r)*T))&nbsp;*&nbsp;_NormSDist(var2)&nbsp;-&nbsp;S&nbsp;*&nbsp;_NormSDist(var1); &nbsp;&nbsp;&nbsp;} &nbsp; _ImVol.yfu&nbsp;(내재변동성&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Price(numeric); var:vLow(0),&nbsp;vHigh(0),&nbsp;vi(0),cLow(0),&nbsp;cHigh(0),&nbsp;Epsilon(0.001),&nbsp;j(0),&nbsp;n(5000); &nbsp;&nbsp;&nbsp; vLow&nbsp;=&nbsp;0.01; vHigh&nbsp;=&nbsp;2; &nbsp;&nbsp;&nbsp; cLow&nbsp;=&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vLow); cHigh&nbsp;=&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vHigh); vi&nbsp;=&nbsp;vLow&nbsp;+&nbsp;(Price&nbsp;-&nbsp;cLow)&nbsp;*&nbsp;(vHigh&nbsp;-&nbsp;vLow)&nbsp;/&nbsp;(cHigh&nbsp;-&nbsp;cLow); &nbsp; for&nbsp;j&nbsp;=&nbsp;0&nbsp;to&nbsp;n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vi)&nbsp;<&nbsp;Price&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vLow&nbsp;=&nbsp;vi; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vHigh&nbsp;=&nbsp;vi; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cLow&nbsp;=&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vLow); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cHigh&nbsp;=&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vHigh); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vi&nbsp;=&nbsp;vLow&nbsp;+&nbsp;(Price&nbsp;-&nbsp;cLow)&nbsp;*&nbsp;(vHigh&nbsp;-&nbsp;vLow)&nbsp;/&nbsp;(cHigh&nbsp;-&nbsp;cLow); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Abs(Price&nbsp;-&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;vi))&nbsp;<=&nbsp;Epsilon&nbsp;then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var1&nbsp;=&nbsp;vi; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;n; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _ImVol&nbsp;=&nbsp;vi; &nbsp; _Delta.yfu&nbsp;&nbsp;(델타&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(q&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)*T)&nbsp;/&nbsp;(Sig*sqrt(T)); &nbsp; if&nbsp;cpflag&nbsp;==&nbsp;1&nbsp;then &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;_Delta&nbsp;=&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;_NormSDist(var1); &nbsp;&nbsp;&nbsp;} else&nbsp;if&nbsp;cpflag&nbsp;==&nbsp;2&nbsp;then &nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;_Delta&nbsp;=&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;(_NormSDist(var1)-1); &nbsp;&nbsp;&nbsp;} &nbsp; &nbsp; _Gamma.yfu&nbsp;&nbsp;(감마&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(q&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)*T)&nbsp;/&nbsp;(Sig*sqrt(T)); var3&nbsp;=&nbsp;(1&nbsp;/&nbsp;Sqrt(2&nbsp;*&nbsp;pie()))&nbsp;*&nbsp;(1&nbsp;/&nbsp;Exp^((var1^2)&nbsp;/&nbsp;2)); &nbsp; _Gamma&nbsp;=&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;var3&nbsp;/&nbsp;(S*Sig*Sqrt(T)); &nbsp; &nbsp; _Vega.yfu&nbsp;&nbsp;&nbsp;(베가&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(q&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)*T)&nbsp;/&nbsp;(Sig*Sqrt(T)); var3&nbsp;=&nbsp;(1&nbsp;/&nbsp;Sqrt(2*pie()))&nbsp;*&nbsp;(1&nbsp;/&nbsp;Exp^((var1^2)&nbsp;/&nbsp;2)); &nbsp; _Vega&nbsp;=&nbsp;S&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;var3&nbsp;*&nbsp;Sqrt(T)&nbsp;/100; &nbsp; &nbsp; _Theta.yfu&nbsp;&nbsp;(쎄타&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(q&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)*T)&nbsp;/&nbsp;(Sig*sqrt(T)); var2&nbsp;=&nbsp;var1&nbsp;-&nbsp;Sig*sqrt(T); var3&nbsp;=&nbsp;(1&nbsp;/&nbsp;Sqrt(2&nbsp;*&nbsp;pie()))&nbsp;*&nbsp;(1&nbsp;/&nbsp;Exp^((var1^2)&nbsp;/&nbsp;2)); &nbsp; if&nbsp;cpflag&nbsp;==&nbsp;1&nbsp;then &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;_Theta&nbsp;=&nbsp;(-1)&nbsp;*&nbsp;(S&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;var3&nbsp;*&nbsp;Sig)&nbsp;/&nbsp;(2*Sqrt(T)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;(q-r)&nbsp;*&nbsp;S&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;_NormSDist(var1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;r&nbsp;*&nbsp;X&nbsp;*&nbsp;Exp^((-r)*T)&nbsp;*&nbsp;_NormSDist(var2); &nbsp;&nbsp;&nbsp;} else&nbsp;if&nbsp;cpflag&nbsp;==&nbsp;2&nbsp;then &nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;_Theta&nbsp;=&nbsp;(-1)&nbsp;*&nbsp;(S&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;var3&nbsp;*&nbsp;Sig)&nbsp;/&nbsp;(2*Sqrt(T)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;(q-r)&nbsp;*&nbsp;S&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;_NormSDist(-var1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;r&nbsp;*&nbsp;X&nbsp;*&nbsp;Exp^((-r)*T)&nbsp;*&nbsp;_NormSDist(-var2); &nbsp;&nbsp;&nbsp;} &nbsp; _Theta&nbsp;=&nbsp;_Theta&nbsp;/&nbsp;365; &nbsp; &nbsp; &nbsp; _Rho.yfu&nbsp;&nbsp;&nbsp;(로&nbsp;사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); &nbsp; var1&nbsp;=&nbsp;(log(S/X)&nbsp;+&nbsp;(q&nbsp;+&nbsp;(Sig^2)&nbsp;/&nbsp;2)*T)&nbsp;/&nbsp;(Sig*sqrt(T)); var2&nbsp;=&nbsp;var1&nbsp;-&nbsp;Sig*sqrt(T); &nbsp; if&nbsp;cpflag&nbsp;==&nbsp;1&nbsp;then &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;_Rho&nbsp;=&nbsp;X&nbsp;*&nbsp;T&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;_NormSDist(var2); &nbsp;&nbsp;&nbsp;} else&nbsp;if&nbsp;cpflag&nbsp;==&nbsp;2&nbsp;then &nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;_Rho&nbsp;=&nbsp;-X&nbsp;*&nbsp;T&nbsp;*&nbsp;Exp^((q-r)*T)&nbsp;*&nbsp;_NormSDist(-var2); &nbsp;&nbsp;&nbsp;} &nbsp; &nbsp; 옵션민감도.yin&nbsp;&nbsp;(지표식) /*cpFlag&nbsp;:&nbsp;Call,Put&nbsp;구분,&nbsp;1,2로&nbsp;표현 &nbsp;&nbsp;S&nbsp;:&nbsp;기초자산가격의&nbsp;가격,&nbsp;예)주가지수(KOSPI200) &nbsp;&nbsp;X&nbsp;:&nbsp;행사가격 &nbsp;&nbsp;T&nbsp;:&nbsp;잔존만기(연율) &nbsp;&nbsp;r&nbsp;:&nbsp;무위험&nbsp;이자율,&nbsp;예)&nbsp;CD금리 &nbsp;&nbsp;q&nbsp;:&nbsp;배당률 &nbsp;&nbsp;Sig&nbsp;:&nbsp;변동성&nbsp;*/ &nbsp; input:&nbsp;cpflag(1),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//콜풋&nbsp;입력 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InS(0),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//현재&nbsp;지수를&nbsp;입력&nbsp;안하면&nbsp;data&nbsp;참조를&nbsp;통해&nbsp;실시간&nbsp;가격을&nbsp;이용.&nbsp;테스트시&nbsp;이용 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x(145.0),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//행사가&nbsp;입력 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex(20050908),&nbsp;&nbsp;//만기일 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r(0.0351),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CD&nbsp;금리,&nbsp;요기서&nbsp;볼&nbsp;수&nbsp;있음&nbsp;==>&nbsp;http://stock.koscom.co.kr/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q(0),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//배당률 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InSig(0),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내재변동성을&nbsp;입력&nbsp;안하면&nbsp;자체&nbsp;계산된&nbsp;변동성을&nbsp;사용.&nbsp;단,&nbsp;오차&nbsp;감안해야&nbsp;함 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InPrice(0);&nbsp;&nbsp;&nbsp;&nbsp;//역시&nbsp;테스트를&nbsp;목적으로&nbsp;함 var:S(0),T(0),sig(0),price(0),ImVol(0),bs(0),delta(0),gamma(0),vega(0),theta(0),rho(0); &nbsp;&nbsp;&nbsp;&nbsp; S&nbsp;=&nbsp;iff(inS!=0,inS,data1("c"));&nbsp;//kospi종합을&nbsp;같이&nbsp;띄워&nbsp;놓아야&nbsp;합니다. T&nbsp;=&nbsp;(DateToJulian(ex)&nbsp;-&nbsp;DateToJulian(date)&nbsp;+&nbsp;1)/365; price&nbsp;=&nbsp;iff(inPrice!=0,inPrice,c); &nbsp; imvol&nbsp;=&nbsp;_ImVol(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;price); sig&nbsp;=&nbsp;iff(insig!=0,insig,ImVol); &nbsp; bs&nbsp;=&nbsp;_BlackSholes(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); delta&nbsp;=&nbsp;_Delta(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); gamma&nbsp;=&nbsp;_gamma(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); theta&nbsp;=&nbsp;_theta(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); vega&nbsp;=&nbsp;_vega(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); rho&nbsp;=&nbsp;_rho(cpFlag,&nbsp;S,&nbsp;X,&nbsp;T,&nbsp;r,&nbsp;q,&nbsp;sig); &nbsp; plot1(imvol*100,"내재변동성"); plot2(bs,"이론가"); plot3(delta,"델타"); plot4(gamma,"감마"); plot5(theta,"쎄타"); plot6(vega,"베가"); plot7(rho,"로"); 매매 방법. Plot1. Plot2.plot3. Plot4. Plot5. Plot6. Plot7. 각각 서로 교차돌파 할때.마다 한번씩 즉시. 상승돌파면. 매수. 하락돌파면 매도식 감사합니다. ^^. 시스템에 에러없는지. 확인해주시면 더욱 고맙습니다 ^^