00001 #include ".\VanillaSwap.h" 00002 00003 VanillaSwap::VanillaSwap(CashFlow cashflowReceived1, CashFlow cashflowPaid2, char* name1, char* name2, yieldCurve* curve) 00004 : _leg1(cashflowReceived1), 00005 _leg2(cashflowPaid2), 00006 _curve(curve) 00007 { 00008 _name1=new char[MAX_LETTERS]; 00009 _name2=new char[MAX_LETTERS]; 00010 for (ShortNatural i=0;i<MAX_LETTERS;i++) { 00011 _name1[i]=name1[i]; 00012 _name2[i]=name2[i]; 00013 } 00014 } 00015 00016 VanillaSwap::~VanillaSwap(void) 00017 { 00018 } 00019 00020 Real VanillaSwap::getFairValue1() { 00021 return _leg1.getFairValue(_curve); 00022 } 00023 00024 Real VanillaSwap::getFairValue2() { 00025 return _leg2.getFairValue(_curve); 00026 } 00027 00028 Real VanillaSwap::returnPrice() { 00029 Real result=0.; 00030 result=getFairValue1()-getFairValue2(); 00031 return result; 00032 } 00033 00034 Real VanillaSwap::getRho() { 00035 Real result=returnPrice(); 00036 _curve->shiftZCBRateCurve(); 00037 result=returnPrice()-result; 00038 _curve->shiftZCBRateCurve(-defaultshiftfactorForShortRate); 00039 return result; 00040 } 00041 00042 Real VanillaSwap::getTheta() { 00043 Real result=returnPrice(); 00044 yieldCurve curve=*_curve; 00045 _curve->forwardZCBCurve(1./365); 00046 result=returnPrice()-result; 00047 _curve=&curve; 00048 return result; 00049 }