楼主: 一青窃1987
3088 3

[问答] [求助]VBA编程求期权定价显示错误溢出 [推广有奖]

  • 0关注
  • 0粉丝

博士生

76%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
25413 点
帖子
352
精华
0
在线时间
364 小时
注册时间
2010-9-30
最后登录
2017-9-1

楼主
一青窃1987 发表于 2010-9-30 05:48:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小女子新人报道,望高手相助。
我用VBA写了二叉树期权定价的程序,明明都有按照案例来写,公式也都对的,可是无法运行。
显示总是错误溢出
各位高人能不能帮我看看哪里出问题了。
万分感激,标红的是VBA显示错误的语句。


Function BinoptVal(iopt, iea, S, X, r, tyr, sigma, nstep)
'Returns Binomial Option Value(ipot=1 for call,-1for put;
'iea=1 for euro,=2 for amer)

Dim delt, erdt, u, d, P, pstar, mu
Dim i As Integer, j As Integer
Dim vvec As Variant    'to be a vector
ReDim vvec(nstep)     'know size of vector

'caculate parameters
delt = tyr / nstep  'length of the time step
erdt = Exp(r * delt) 'compounding factor
mu = 0 'the stock growth rate
u = Exp(mu * delt + sigma * Sqr(delt)) 'up multiplier
d = Exp(mu * delt - sigma * Sqr(delt)) 'down multiplier
P = (S * erdt - d) / (u - d) ' up prob
pstar = 1 - P 'down prob

  'calculating vector of option values after n steps
    For i = 0 To nstep
      vvec(i) = Application.Max(iopt * (S * (u ^ i) * (d ^ (nstep - i)) - X), 0)
    Next i
    'calculating conditional payoffs & discounting back step by step
        For j = nstep - 1 To 0 Step -1
            For i = 0 To j
            vvec(i) = (P * vvec(i + 1) + pstar * vvec(i)) / erdt
  Next i
        Next j
   
    BinoptVal = vvec(0)

End Function
二维码

扫码加我 拉你入群

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

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

关键词:vba编程 期权定价 VBA Calculating compounding 求助 VBA 定价 期权

沙发
一青窃1987 发表于 2010-10-1 02:50:02
哪位高人现身一下啊

藤椅
owen123456 发表于 2010-10-5 12:35:30
Option Base 0  'arrays number from 0
Function BinOptVal(iopt, iea, S, X, r, q, tyr, sigma, nstep) 'code for European Options CRR
'returns binomial option value,European only where iopt=1 for call,-1 for put and iea=1 for EU,2 for USA
Dim delt, erdt, ermqdt, u, d, p, pstar
Dim i As Integer, j As Integer
Dim vvec As Variant
ReDim vvec(nstep)   'known size of vector
'calculate parameters
  delt = tyr / nstep 'length of time step
  erdt = Exp(r * delt) 'compounding factor
  ermqdt = Exp((r - q) * delt) 'drift term
  u = Exp(sigma * Sqr(delt))  'up multiplier
  d = 1 / u                   ' down multiplier
  p = (ermqdt - d) / (u - d)  'up prob
  pstar = 1 - p               'down prob

'calculating vector of of option values after nstep
  For i = 0 To nstep
  vvec(i) = Application.Max(iopt * (S * (u ^ i) * (d ^ (nstep - i)) - X), 0)
  Next i
  'claculating conditional payoff & discounting back step-by-step
    For j = nstep - 1 To 0 Setp-1
      For i = 0 To j
                   vvec(i) = (p * vvec(i + 1) + pstar * vvec(i)) / erdt
     
If iea = 2 Then vvec(i) = Application.Max(vvec(i), iopt * (S * (u ^ i) * (d ^ (j - i)) - X))
      Next i
    Next j
   BinOptVal = vvec(0)
End Function

板凳
pangyang9 发表于 2010-10-16 21:28:22
有没有定义tyr

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

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