커뮤니티

문의

프로필 이미지
레전드
2017-08-30 13:29:16
107
글번호 112351
답변완료
_Theta.yfu (쎄타 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T)); var2 = var1 - Sig*sqrt(T); var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2)); if cpflag == 1 then { _Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) - (q-r) * S * Exp^((q-r)*T) * _NormSDist(var1) - r * X * Exp^((-r)*T) * _NormSDist(var2); } else if cpflag == 2 then { _Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) + (q-r) * S * Exp^((q-r)*T) * _NormSDist(-var1) + r * X * Exp^((-r)*T) * _NormSDist(-var2); } _Theta = _Theta / 365; 현재시점의 함수리턴값을 조회할 수 없습니다라고 나오는데 어떻게 해야되나요
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-08-31 10:53:36

안녕하세요 예스스탁입니다. _Theta = _Theta / 365; 사용자함수에서 현재시점의 자기값을 사용하기 때문에 발생하는 오류입니다. 현재시점의 자기값 참조하지 않도록 위 계산식에서 저장하는 변수를 다른변수로 변경하고 최종 저장되게 하시면 됩니다. input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T)); var2 = var1 - Sig*sqrt(T); var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2)); if cpflag == 1 then { value1 = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) - (q-r) * S * Exp^((q-r)*T) * _NormSDist(var1) - r * X * Exp^((-r)*T) * _NormSDist(var2); } else if cpflag == 2 then { value1 = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) + (q-r) * S * Exp^((q-r)*T) * _NormSDist(-var1) + r * X * Exp^((-r)*T) * _NormSDist(-var2); } _Theta = value1 / 365; 즐거운 하루되세요 > 레전드 님이 쓴 글입니다. > 제목 : 문의 > _Theta.yfu (쎄타 사용자함수) input:cpflag(numeric),S(numeric),X(numeric),T(numeric),r(numeric),q(numeric),Sig(numeric); var:Exp(2.71828182846); var1 = (log(S/X) + (q + (Sig^2) / 2)*T) / (Sig*sqrt(T)); var2 = var1 - Sig*sqrt(T); var3 = (1 / Sqrt(2 * pie())) * (1 / Exp^((var1^2) / 2)); if cpflag == 1 then { _Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) - (q-r) * S * Exp^((q-r)*T) * _NormSDist(var1) - r * X * Exp^((-r)*T) * _NormSDist(var2); } else if cpflag == 2 then { _Theta = (-1) * (S * Exp^((q-r)*T) * var3 * Sig) / (2*Sqrt(T)) + (q-r) * S * Exp^((q-r)*T) * _NormSDist(-var1) + r * X * Exp^((-r)*T) * _NormSDist(-var2); } _Theta = _Theta / 365; 현재시점의 함수리턴값을 조회할 수 없습니다라고 나오는데 어떻게 해야되나요