📄 tst_binomial_approximations.cc
字号:
// file tst_binomial.cc// author: Bernt A Odegaardvoid test_binomial_pricing(){ cout << "Testing Binomial Pricing" << endl; double spot = 100.0; double exercise = 100.0; double r = 0.1; double sigma = 0.25; double time_to_maturity=1.0; int steps = 100; cout << " Standard option prices" << endl; cout << " european " << endl; cout << " call: " << option_price_call_european_binomial(spot,exercise,r,sigma,time_to_maturity,steps) << endl; cout << " put: " << option_price_put_european_binomial(spot,exercise,r,sigma,time_to_maturity,steps) << endl; cout << " american " <<endl; cout << " call: " << option_price_call_american_binomial(spot,exercise,r,sigma,time_to_maturity,steps) << endl; cout << " put: " << option_price_put_american_binomial(spot,exercise,r,sigma,time_to_maturity,steps) << endl; cout << " Option prices with continous payout " << endl; double y=0.02; cout << " american " <<endl; cout << " call: " << option_price_call_american_binomial_payout(spot,exercise,r,y,sigma,time_to_maturity,steps) << endl; cout << " put: " << option_price_put_american_binomial_payout(spot,exercise,r,y,sigma,time_to_maturity,steps) << endl; cout << " Pricing with discrete dividends " << endl; vector<double> dividend_times; dividend_times.push_back(0.25); dividend_times.push_back(0.75); vector<double> dividend_yields; dividend_yields.push_back(0.025); dividend_yields.push_back(0.025); cout << "Proportional dividends " << endl; cout << " american call, dividends=2.5%, 2.5%, price= " << option_price_call_american_proportional_dividends_binomial( spot,exercise,r,sigma,time_to_maturity,steps, dividend_times, dividend_yields) << endl; vector<double> dividend_amounts; dividend_amounts.push_back(2.5); dividend_amounts.push_back(2.5); cout << "Discrete dividends: " << endl; cout << " american call, dividends 2.5 2.5, price= " << option_price_call_american_discrete_dividends_binomial( spot,exercise,r,sigma,time_to_maturity,steps, dividend_times, dividend_amounts) << endl; cout << " done testing binomial pricing " << endl;};void test_binomial_partials(){ cout << "Testing binomial partials " << endl; double S = 100.0; double X = 100.0; double r = 0.1; double sigma = 0.25; double time = 1.0; int no_steps=100; cout << " american call delta = " << option_price_delta_american_call_binomial(S,X,r,sigma,time, no_steps) << endl; cout << " american put delta = " << option_price_delta_american_put_binomial(S,X,r,sigma,time, no_steps) << endl; double delta, gamma, theta, vega, rho; option_price_partials_american_call_binomial(S,X,r, sigma, time, no_steps, delta, gamma, theta, vega, rho); cout << "CALL price partials " << endl; cout << " Delta = " << delta << endl; cout << " gamma = " << gamma << endl; cout << " theta = " << theta << endl; cout << " vega = " << vega << endl; cout << " rho = " << rho << endl; option_price_partials_american_put_binomial(S,X,r, sigma, time, no_steps, delta, gamma, theta, vega, rho); cout << "PUT price partials" << endl; cout << " Delta = " << delta << endl; cout << " gamma = " << gamma << endl; cout << " theta = " << theta << endl; cout << " vega = " << vega << endl; cout << " rho = " << rho << endl; };void test_binomial_approximations(){ test_binomial_pricing(); test_binomial_partials();};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -