楼主: kitty11384
1068 1

[问答] 請問有人可以告訴我為什麼答案算出來都是0 [推广有奖]

  • 0关注
  • 0粉丝

初中生

33%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
168 点
帖子
9
精华
0
在线时间
13 小时
注册时间
2012-10-21
最后登录
2013-10-31

楼主
kitty11384 发表于 2013-4-8 22:06:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
這是SHEET 1的程式碼

Public Sub jj()

Dim S As Double
Dim K As Double
Dim T As Double
Dim sig As Double
Dim r As Double
Dim y As Double
Dim X As Double
Dim CPrice As Double, PPrice As Double


S = Worksheets("sheet1").Range("B2").Value
K = Worksheets("sheet1").Range("C2").Value
X = Worksheets("sheet1").Range("D2").Value
T = Worksheets("sheet1").Range("E2").Value
sig = Worksheets("sheet1").Range("F2").Value
r = Worksheets("sheet1").Range("G2").Value
y = Worksheets("sheet1").Range("H2").Value

CPrice = CashOrNothing("C", S, K, X, T, sig, r, y)
PPrice = CashOrNothing("P", S, K, X, T, sig, r, y)

Worksheets("sheet1").Range("B7").Value = CPrice
Worksheets("sheet1").Range("C7").Value = PPrice




End Sub




這是MODULE 的程式碼
'// cash or nothing option


Public Function NorPdf(d As Double) As Double
Dim ans As Double

Const pi = 3.14159265358979
ans = Exp(-d * d / 2) / Sqr(2 * pi)
NorPdf = ans

End Function


Public Function NorCdf(d As Double) As Double
Dim ans As Double
Dim g As Double

Const a1 = 0.4361836
Const a2 = -0.1201676
Const a3 = 0.937298

g = 1 / (1 + 0.33267 * d)

If d >= 0 Then
ans = 1 - (a1 * g + a2 * g * g + a3 * g * g * g) * NorPdf(d)
Else
ans = 1 - NorCdf(-d)
End If
NorCdf = ans

End Function



Public Function CashOrNothing(ClassFlag As String, S As Double, K As Double, X As Double, T As Double, r As Double, y As Double, sig As Double) As Double
Dim d As Double
d = (Log(S / K) + (r - y - sig ^ 2 / 2) * T) / (sig * Sqr(T))

If ClassFlag = " C " Then
   CashOrNothing = X * Exp(-r * T) * NorCdf(d)
ElseIf ClassFlag = " P " Then
   CashOrNothing = X * Exp(-r * T) * NorCdf(-d)
End If

    Range("B6").Select
    ActiveCell.FormulaR1C1 = "call"
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "put"
    Range("A7").Select
    ActiveCell.FormulaR1C1 = "premium"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "S"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "K"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "X"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "T"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "sig"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "r"
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "y"




End Function



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:worksheets worksheet formular function Formula

沙发
TaskShare 发表于 2013-4-14 17:04:16
我看到在 CashOrNothing()这个函数中的语句:
If ClassFlag = " C " Then
   CashOrNothing = X * Exp(-r * T) * NorCdf(d)
ElseIf ClassFlag = " P " Then
" C " 有空格,大概需要改成"C";" P " 有空格,大概需要改成"P"。改后再试试。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 13:51