⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bondopt_call_rend_bart.cc

📁 Financial Recipes
💻 CC
字号:
#include <cmath>#include <algorithm>#include <vector>using namespace std;double bond_option_price_call_zero_american_rendleman_bartter(double X,  							      double option_maturity, 							      double S, 							      double M,                   // term structure paramters							      double interest,            // current short interest rate							      double bond_maturity,        // time to maturity for underlying bond							      double maturity_payment,							      int no_steps) {         double delta_t = bond_maturity/no_steps;     double u=exp(S*sqrt(delta_t));    double d=1/u;    double p_up = (exp(M*delta_t)-d)/(u-d);    double p_down = 1.0-p_up;    vector<double> r(no_steps+1);    r[0]=interest*pow(d,no_steps);    double uu=u*u;    int i;    for (i=1;i<=no_steps;++i){ r[i]=r[i-1]*uu;};    vector<double> P(no_steps+1);    for (i=0;i<=no_steps;++i){ 	P[i] = maturity_payment;    };    int no_call_steps=int(no_steps*option_maturity/bond_maturity);    for (int curr_step=no_steps;curr_step>no_call_steps;--curr_step) {	for (i=0;i<curr_step;i++) {	    r[i]  = r[i]*u;	    P[i] = exp(-r[i]*delta_t)*(p_down*P[i]+p_up*P[i+1]);  	};    };   vector<double> C (no_call_steps+1);    for (i=0;i<=no_call_steps;++i){ C[i]=max(0.0,P[i]-X); };    for (int curr_step=no_call_steps;curr_step>=0;--curr_step) {	for (i=0;i<curr_step;i++) {	    r[i]  = r[i]*u;	    P[i] = exp(-r[i]*delta_t)*(p_down*P[i]+p_up*P[i+1]); 	    C[i]=max(P[i]-X, exp(-r[i]*delta_t)*(p_up*C[i+1]+p_down*C[i])); 	};    };    return C[0];};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -