全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
15867 6
2008-07-14


各位精通excel的高手,请问如果要利用excel来计算债券的凸性有没有什么可以调用的函数?或者是有没有编好的VBA程序?谢谢赐教:)

二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-4 21:36:34
计算债券凸性的VBA 代码

代码:Function secondDur(restTime, couponRate, YTM, frequency)
    If frequency <= 1 Then
         For t = (restTime - Int(restTime)) To restTime
        If t < restTime Then
            secondDur = couponRate * t * 100 * (t + 1) _
                 / (1 + YTM) ^ (t + 2) + secondDur
        Else
            secondDur = (couponRate + 1) * 100 * t * (t + 1) _
                 / (1 + YTM) ^ (t + 2) + secondDur
        End If
        
        secondDur = secondDur
    Next t
    Else
          For t = (restTime * frequency - Int(restTime * frequency)) To (restTime * frequency)
           If t < (restTime * frequency) Then
              secondDur = couponRate / frequency * t * 100 * (t + 1) _
                    / (1 + YTM / frequency) ^ (t + 2) + secondDur
    Else
            secondDur = (couponRate / frequency + 1) * 100 * t * (t + 1) _
                 / (1 + YTM / frequency) ^ (t + 2) + secondDur
        End If
        
        secondDur = secondDur / frequency ^ 2
    Next t
    End If
  End Function
二维码

扫码加我 拉你入群

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

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

2012-2-24 10:57:25
不错!
二维码

扫码加我 拉你入群

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

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

2014-12-9 17:34:06
计算结果有点问题,小数点不对
二维码

扫码加我 拉你入群

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

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

2014-12-9 17:39:51
1ooooool 发表于 2010-4-4 21:36
计算债券凸性的VBA 代码

代码:Function secondDur(restTime, couponRate, YTM, frequency)
没有除以价格P
二维码

扫码加我 拉你入群

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

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

2016-6-15 19:19:48
代码:Function secondDur(restTime, couponRate, YTM, frequency)
    If frequency <= 1 Then
         For t = (restTime - Int(restTime)) To restTime
        If t < restTime Then
            secondDur = couponRate * t * 100 * (t + 1) _
                 / (1 + YTM) ^ (t + 2) + secondDur
        Else
            secondDur = (couponRate + 1) * 100 * t * (t + 1) _
                 / (1 + YTM) ^ (t + 2) + secondDur
        End If
        
        secondDur = secondDur
    Next t
    Else
          For t = (restTime * frequency - Int(restTime * frequency)) To (restTime * frequency)
           If t < (restTime * frequency) Then
              secondDur = couponRate / frequency * t * 100 * (t + 1) _
                    / (1 + YTM / frequency) ^ (t + 2) + secondDur
    Else
            secondDur = (couponRate / frequency + 1) * 100 * t * (t + 1) _
                 / (1 + YTM / frequency) ^ (t + 2) + secondDur
        End If
        
        secondDur = secondDur / frequency ^ 2
    Next t
    End If
  End Function
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群