<address id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></address>

      <address id="b53l5"></address>
      <sub id="b53l5"></sub><sub id="b53l5"><meter id="b53l5"><cite id="b53l5"></cite></meter></sub>
        <sub id="b53l5"><progress id="b53l5"></progress></sub>
        <listing id="b53l5"><menuitem id="b53l5"></menuitem></listing>
        <sub id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></sub><thead id="b53l5"><meter id="b53l5"></meter></thead>

          <track id="b53l5"></track>

              楼主: 十三太饱
              504 14

              [期权交易] ¡¾求助¡¿用VBA写了一个简单的蒙特卡洛模拟£¬跑不出结果£¬求高手帮忙看看哪里不对QAQ [推广有奖]

              • 0关注
              • 0粉丝

              VIP1

              高中生

              25%

              £¨VIP/贵宾£©二级

              84%

              威望
              0
              论坛币
              41 个
              学术水平
              0 点
              热心指数
              0 点
              信用等级
              0 点
              经验
              192 点
              帖子
              18
              精华
              0
              在线时间
              32 小时
              注册时间
              2019-1-24
              最后登录
              2019-3-25

              楼主
              十三太饱 发表于 2019-2-21 08:42:46 |只看作者 |倒序
              写了一个蒙特卡洛模拟的程序来给期权定价£¬参考了约翰赫尔的期权期货£¨见图£©¡£
              但是代码跑不出结果£¬一直显示计算有误£¬请大神帮忙看看哪里不对QAQ£¬感谢£¡£¡£¡

              关键?#21097;?a href="http://www.9062865.com/t/26892.html" target="_blank" rel="nofollow">蒙特卡洛模拟 蒙特卡洛 求高手 蒙特卡 VBA

              回帖推荐

              Chemist_MZ 发表于9楼  查看完整内容

              Public Function MCoption(S, X, T, r, sigma, n, a) Dim i As Integer Dim sum, Se, P As Double sum = 0 For i = 1 To n Step 1 Se = S * Exp((r - sigma * sigma / 2) * T + sigma * RndNorm(0, 1) * Sqr(T)) P = Exp(-r * T) * Application.Max((X - Se) * (-1) ^ a, 0) sum = sum + P Next i MCoption = sum / n End Function Public Function RndNorm(Mean As Double, Std As Double) Dim V ...
              stata SPSS
              沙发
              十三太饱 发表于 2019-2-21 08:47:09 |只看作者
              好像看不到图片£¬再发一次 参考约翰赫尔的期权期货一书中的价格路径 参照这个方法进行蒙特卡洛模拟 这个是我写的代码
              回复

              使用道具 举报

              藤椅
              Chemist_MZ 在职认证  发表于 2019-2-21 10:03:22 |只看作者
              十三太饱 发表于 2019-2-21 08:47
              好像看不到图片£¬再发一次
              error message 是什么£¿
              回复

              使用道具 举报

              板凳
              十三太饱 发表于 2019-2-21 10:32:21 |只看作者
              Chemist_MZ 发表于 2019-2-21 10:03
              error message 是什么£¿
              调试的时候没有报错£¬但是在excel?#20889;?#20837;数据计算后就显示#VALUE!
              回复

              使用道具 举报

              报纸
              十三太饱 发表于 2019-2-21 10:38:44 |只看作者
              Chemist_MZ 发表于 2019-2-21 10:03
              error message 是什么£¿
              还想请教一个问题£º我将这个?#21215;?#23384;成了XLSM格式£¬但是今天再打开的时候£¬之?#23433;?#20837;的?#32422;?#20889;的其他函数都加载不出来¡£我查看了代码还在£¬也启用了宏£¬但是在插入函数¡ª¡ª用户定义的列表里找不到?#32422;?#20889;的函数了
              回复

              使用道具 举报

              地板
              Chemist_MZ 在职认证  发表于 2019-2-21 10:42:19 |只看作者
              十三太饱 发表于 2019-2-21 10:32
              调试的时候没有报错£¬但是在excel?#20889;?#20837;数据计算后就显示#VALUE!
              能把代码的文本贴出来嘛?#31354;?#26679;别人也好直接跑£¬容易debug
              回复

              使用道具 举报

              7
              十三太饱 发表于 2019-2-21 10:45:44 |只看作者
              Chemist_MZ 发表于 2019-2-21 10:42
              能把代码的文本贴出来嘛?#31354;?#26679;别人也好直接跑£¬容易debug
              好的£¬谢谢您提醒£¡
              Public Function MCoption(S, X, T, r, sigma, n, a)
              'S?#21512;?#20215;
              'X£º执行价
              'T£º到期日期间的时长
              'r£º连续复利的无风险利率
              'sigma£º股票价格的波动率
              'epsilon?#36203;?#24577;分布中的随机抽样
              'n£º模拟n次
              'a£º看涨看跌£¨看涨为1£¬看跌为0£©
              Dim i As Integer
              Dim Se, P, sum As Variant

              sum(0) = 0
              For i = 1 To n Step 1
              Se(i) = S * Exp((r - sigma * sigma / 2) * T + sigma * RndNorm(0, 1) * Sqr(T))
              P(i) = Exp(-r * T) * Application.Max((X - Se(i)) * (-1) ^ a, 0)
              sum(i) = sum(i - 1) + P(i)
              Next i

              MCoption = sum(n) / n

              End Function

              Public Function RndNorm(Mean As Double, Std As Double)
                  Dim V1 As Double, V2 As Double, r As Double
                  Do
                      V1 = 2 * Rnd - 1
                      V2 = 2 * Rnd - 1
                      r = V1 ^ 2 + V2 ^ 2
                  Loop Until r < 1
                 
                  RndNorm = Mean + V2 * Sqr(-2 * Log(r) / r) * Std
              End Function
              回复

              使用道具 举报

              8
              十三太饱 发表于 2019-2-21 10:50:05 |只看作者
              关于那个无法调用函数的问题£¬刚?#25214;?#32463;解决了£¬重新打开了一次又能用了£¬可能是打开启用宏之后需要重新打开?#21215;þ£?
              回复

              使用道具 举报

              9
              Chemist_MZ 在职认证  发表于 2019-2-21 11:02:15 |只看作者
              本帖最后由 Chemist_MZ 于 2019-2-21 11:05 编辑
              十三太饱 发表于 2019-2-21 10:45
              好的£¬谢谢您提醒£¡
              Public Function MCoption(S, X, T, r, sigma, n, a)
              'S?#21512;?#20215;
              Public Function MCoption(S, X, T, r, sigma, n, a)

              Dim i As Integer
              Dim sum, Se, P As Double

              sum = 0

              For i = 1 To n Step 1
              Se = S * Exp((r - sigma * sigma / 2) * T + sigma * RndNorm(0, 1) * Sqr(T))
              P = Exp(-r * T) * Application.Max((X - Se) * (-1) ^ a, 0)
              sum = sum + P

              Next i

              MCoption = sum / n

              End Function

              Public Function RndNorm(Mean As Double, Std As Double)
                  Dim V1 As Double, V2 As Double, r As Double
                  Do
                      V1 = 2 * Rnd - 1
                      V2 = 2 * Rnd - 1
                      r = V1 ^ 2 + V2 ^ 2
                  Loop Until r < 1
                 
                  RndNorm = Mean + V2 * Sqr(-2 * Log(r) / r) * Std
              End Function

              你试试这个£¬我不太明白你为什么要将sum£¬Se和P设成array£¬设成标量就可以¡£而且我记得VBA里面array的size是要明确声明的£¬即便一开始不知道size用了variant£¬之后要用的时候还是要用ReDim来声明size¡£可能这就是一直报错的原因吧¡£
              已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
              h2h2 + 5 + 5 + 5 精彩帖子
              晓七 + 100 + 1 + 1 + 1 热心帮助其他会员

              总评分: 经验 + 100  学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

              回复

              使用道具 举报

              10
              十三太饱 发表于 2019-2-21 11:12:01 |只看作者
              本帖最后由 十三太饱 于 2019-2-21 11:23 编辑
              Chemist_MZ 发表于 2019-2-21 11:02
              Public Function MCoption(S, X, T, r, sigma, n, a)

              Dim i As Integer
              感谢大大£¡£¡£¡算出结果了£¡£¡



              回复

              使用道具 举报

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

              京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾?#21097;和?#36827;律师 知识产权保护声明   免责及隐私声明

              GMT+8, 2019-3-27 00:50
              Á¬ÂëÌØ´®
              <address id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></address>

                  <address id="b53l5"></address>
                  <sub id="b53l5"></sub><sub id="b53l5"><meter id="b53l5"><cite id="b53l5"></cite></meter></sub>
                    <sub id="b53l5"><progress id="b53l5"></progress></sub>
                    <listing id="b53l5"><menuitem id="b53l5"></menuitem></listing>
                    <sub id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></sub><thead id="b53l5"><meter id="b53l5"></meter></thead>

                      <track id="b53l5"></track>

                          <address id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></address>

                              <address id="b53l5"></address>
                              <sub id="b53l5"></sub><sub id="b53l5"><meter id="b53l5"><cite id="b53l5"></cite></meter></sub>
                                <sub id="b53l5"><progress id="b53l5"></progress></sub>
                                <listing id="b53l5"><menuitem id="b53l5"></menuitem></listing>
                                <sub id="b53l5"><progress id="b53l5"><font id="b53l5"></font></progress></sub><thead id="b53l5"><meter id="b53l5"></meter></thead>

                                  <track id="b53l5"></track>