다양한 언어로 표현한 블랙숄즈의 공식
아래는 “Black-Scholes” in Multiple Languages에서 일부를 옮겨왔습니다. 블로그 운영자인 Espen Gaarder Haug이 직접 개발한 소스뿐 아니라 인터넷에서 도움을 받은 자료들까지 망라하고 있습니다. 많이 사용하는 언어뿐 아니라 F#, Objective-C, Javascript, Perl, Python, O’calm까지 소개하고 있습니다. 원문을 보시면 더 많은 자료가 있습니다. Black-Scholes in Visual Basic By Espen Gaarder Haug
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
'// The Black and Scholes (1973) Stock option formula Public Function BlackScholes(CallPutFlag As String, S As Double, X _ As Double, T As Double, r As Double, v As Double) As Double Dim d1 As Double, d2 As Double d1 = (Log(S / X) + (r + v ^ 2 / 2) * T) / (v * Sqr(T)) d2 = d1 - v * Sqr(T) If CallPutFlag = "c" Then BlackScholes = S * CND(d1) - X * Exp(-r * T) * CND(d2) ElseIf CallPutFlag = "p" Then BlackScholes = X * Exp(-r * T) * CND(-d2) - S * CND(-d1) End If End Function '// The cumulative normal distribution function Public Function CND(X As Double) As Double Dim L As Double, K As Double Const a1 = 0.31938153: Const a2 = -0.356563782: Const a3 = 1.781477937: Const a4 = -1.821255978: Const a5 = 1.330274429 L = Abs(X) K = 1 / (1 + 0.2316419 * L) CND = 1 - 1 / Sqr(2 * Application.Pi()) * Exp(-L ^ 2 / 2) * (a1 * K + a2 * K ^ 2 + a3 * K ^ 3 + a4 * K ^ 4 + a5 * K ^ 5) If X < 0 Then CND = 1 - CND End If End Function |