00001 #include ".\swapleg.h" 00002 00003 SwapLeg::SwapLeg(Date startDate, Real Frequency, Date endDate, Real Notional, Real AmortizingConstant, BusinessDayConvention convention) 00004 { 00005 Natural i=1; 00006 LongInteger serialEnd=endDate.serialNumber(); 00007 LongInteger serialCurrent=startDate.serialNumber(); 00008 Natural test; 00009 test=Natural((2+serialEnd-serialCurrent)*Frequency/365.25)+1; 00010 _dateSchedule.resize(Natural((2+serialEnd-serialCurrent)*Frequency/365.25)+2); 00011 _flowSchedule.resize(Natural((2+serialEnd-serialCurrent)*Frequency/365.25)+2); 00012 _dateSchedule[0]=startDate; 00013 _flowSchedule[0]=0.; 00014 00015 while (serialCurrent<=serialEnd) { 00016 Date Current; 00017 startDate=startDate.plusDays(Integer(365.25/Frequency)); 00018 Current=startDate; 00019 Current.applyConvention(convention); 00020 serialCurrent=Current.serialNumber(); 00021 _flowSchedule[i]=Notional-(i-1)*AmortizingConstant; 00022 _dateSchedule[i]=Current; 00023 i++; 00024 } 00025 } 00026 00027 SwapLeg::SwapLeg(valarray<Date> dates, valarray<Real> Notionals) 00028 { 00029 _dateSchedule.resize(dates.size()); 00030 _flowSchedule.resize(Notionals.size()); 00031 _dateSchedule=dates; 00032 _flowSchedule=Notionals; 00033 } 00034 00035 LongInteger SwapLeg::returnSize() 00036 { 00037 return _dateSchedule.size(); 00038 } 00039 00040 valarray<Date> SwapLeg::returnDates() 00041 { 00042 return _dateSchedule; 00043 } 00044 00045 valarray<Real> SwapLeg::returnAmounts() 00046 { 00047 return _flowSchedule; 00048 } 00049 00050 SwapLeg::~SwapLeg(void) 00051 { 00052 }