您的位置:首页 > 其它

MF project 2: Pricing -- Monte Carlo framwork

2013-10-10 23:41 465 查看
1. Payoff 的建立 有三张图,一张是instrument,然后是simpeproperyset,然后是payoff了。

a. Instrument 里面只有打印和构造析构。



b. 这个propertyset其实就是key-value,用来保存必要信息。昨晚看的blog也自己实现了dict包装数据后重写__getattr__(self)来玩的。

一句话,用加强版的map来实现自己的功能。



c. payoff 主要参数有个double discount 和 vector<double> spot

(感觉这个dicount应该传个yield curve进来)

spot是传进来的,mc.calcST()中得到path,不同的SDE决定了不同的path

这个typedef真心玩得我头大:

typedef PayOff<D, T>* (*CreatePayOffFunction)(SimplePropertySet<string,AnyType*>);

      两步1. factory的instance.createPayOff();

          asianptr = PayOffFactory<double, Vector<double> >::Instance().CreatePayOff(mc_name, mc_myset_asian);

        2. 重载operater(),逻辑是:

asian option, 多定义一个average,然后根据propertyset里面传进来的type,算数还是几何,滚动一下spot算出来。

然后payoff直接是spot最后来判断,当然还是根据propertyset里面的call还是put。

          payoff = (*PayOffPtr)(discount, mcpath[i]);



2. Monte carlo也是三个部分 Model, Scheme, Simulation

a. model部分,这个部分主要是套公式



b. scheme ,把spots的弄出来,vector<double>



3. simulation:

mc_path_asian = MCPC.calcST(rangen, MCBS,NoOfPaths,1,Timesteps);                // sample paths
//mc_path_asian = MCE.calcST(rangen, MCBS,NoOfPaths,1,Timesteps);                // sample paths
mc.setpath(mc_path_asian);                                                        // set paths
mc.mcprice2(1.0, asianptr,mcvalue);        // if discounting outside payoff        // evaluate paths
mc.mcprice2_cv(1.0, asianptr, asianptr_cv, KE[ptype * timestep],mcvalue_cv);    // evaluate due to control variate


先搞出spots的path, 然后把path弄进mc的object里面,然后算价格;

算价格有两个,这个asianptr根据path算出payoff。然后一个循环直接average 所有的path。

这里面还可以把偏差直接算出来。

=============华丽的分割线===========

1. greeks 和 regression的明天再看看。

2. FDM的实现。

2. 整理一下fixed income里面的逻辑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: