00001 #include"..\PartB\yieldCurve.h"
00002 #include"..\PartE\volsurface.h"
00003 #include "..\common\filereader.h"
00004
00005 #include<iostream>
00006 #include <fstream>
00007
00008 #include<valarray>
00009
00010 using namespace std;
00011
00012 bool mainvolsurface(void) {
00013
00014
00015
00016 yieldCurve testcurve=yieldCurve(0.05);
00017
00018 volsurfaceparams *params =
00019 FileReader::buildVolSurfaceParams(FileReader::getdatadirasstring() +
00020 "voltest2.csv");
00021
00022 Date t0(16,July,2005);
00023 Real stockprice = 2994.0;
00024
00025 volsurface testvolsurf(stockprice, t0, testcurve, *params);
00026 testvolsurf.setvolsurface();
00027
00028
00029 Date datetest1(16,September,2005);
00030 Date datetest2(17,March,2006);
00031 Date datetest3(15,December,2006);
00032 Date datetest4(21,December,2007);
00033 Date datetest5(18,December,2009);
00034 Date datetest6(21,December,2012);
00035
00036 Real striketest1=2395.95;
00037 Real striketest2=2545.69;
00038 Real striketest3=2695.44;
00039 Real striketest4=2770.31;
00040 Real striketest5=2845.19;
00041 Real striketest6=2920.06;
00042 Real striketest7=2994.93;
00043 Real striketest8=3069.81;
00044 Real striketest9=3144.68;
00045 Real striketest10=3294.43;
00046
00047
00048
00049 Real voltest1=testvolsurf.volatility(striketest1, datetest1);
00050 Real voltest2=testvolsurf.volatility(striketest2, datetest1);
00051 Real voltest3=testvolsurf.volatility(striketest3, datetest1);
00052 Real voltest4=testvolsurf.volatility(striketest4, datetest1);
00053 Real voltest5=testvolsurf.volatility(striketest5, datetest1);
00054 Real voltest6=testvolsurf.volatility(striketest6, datetest2);
00055 Real voltest7=testvolsurf.volatility(striketest7, datetest2);
00056 Real voltest8=testvolsurf.volatility(striketest8, datetest2);
00057 Real voltest9=testvolsurf.volatility(striketest9, datetest2);
00058 Real voltest10=testvolsurf.volatility(striketest10, datetest2);
00059 Real voltest11=testvolsurf.volatility(striketest1, datetest4);
00060 Real voltest12=testvolsurf.volatility(striketest2, datetest4);
00061 Real voltest13=testvolsurf.volatility(striketest3, datetest4);
00062 Real voltest14=testvolsurf.volatility(striketest4, datetest4);
00063 Real voltest15=testvolsurf.volatility(striketest5, datetest4);
00064 Real voltest16=testvolsurf.volatility(striketest6, datetest6);
00065 Real voltest17=testvolsurf.volatility(striketest7, datetest6);
00066 Real voltest18=testvolsurf.volatility(striketest8, datetest6);
00067 Real voltest19=testvolsurf.volatility(striketest9, datetest6);
00068 Real voltest20=testvolsurf.volatility(striketest10, datetest6);
00069
00070 cout << "volatility for K=" << striketest1 << "," << datetest1.toString() << " : " << voltest1 << endl;
00071 cout << "volatility for K=" << striketest2 << "," << datetest1.toString() << " : " << voltest2 << endl;
00072 cout << "volatility for K=" << striketest3 << "," << datetest1.toString() << " : " << voltest3 << endl;
00073 cout << "volatility for K=" << striketest4 << "," << datetest1.toString() << " : " << voltest4 << endl;
00074 cout << "volatility for K=" << striketest5 << "," << datetest1.toString() << " : " << voltest5 << endl;
00075 cout << "volatility for K=" << striketest6 << "," << datetest2.toString() << " : " << voltest6 << endl;
00076 cout << "volatility for K=" << striketest7 << "," << datetest2.toString() << " : " << voltest7 << endl;
00077 cout << "volatility for K=" << striketest8 << "," << datetest2.toString() << " : " << voltest8 << endl;
00078 cout << "volatility for K=" << striketest9 << "," << datetest2.toString() << " : " << voltest9 << endl;
00079 cout << "volatility for K=" << striketest10 << "," << datetest2.toString() << " : " << voltest10 << endl;
00080 cout << "volatility for K=" << striketest1 << "," << datetest4.toString() << " : " << voltest11 << endl;
00081 cout << "volatility for K=" << striketest2 << "," << datetest4.toString() << " : " << voltest12 << endl;
00082 cout << "volatility for K=" << striketest3 << "," << datetest4.toString() << " : " << voltest13 << endl;
00083 cout << "volatility for K=" << striketest4 << "," << datetest4.toString() << " : " << voltest14 << endl;
00084 cout << "volatility for K=" << striketest5 << "," << datetest4.toString() << " : " << voltest15 << endl;
00085 cout << "volatility for K=" << striketest6 << "," << datetest6.toString() << " : " << voltest16 << endl;
00086 cout << "volatility for K=" << striketest7 << "," << datetest6.toString() << " : " << voltest17 << endl;
00087 cout << "volatility for K=" << striketest8 << "," << datetest6.toString() << " : " << voltest18 << endl;
00088 cout << "volatility for K=" << striketest9 << "," << datetest6.toString() << " : " << voltest19 << endl;
00089 cout << "volatility for K=" << striketest10 << "," << datetest6.toString() << " : " << voltest20 << endl;
00090
00091 return false;
00092 }