00001 #pragma once 00002 00003 #ifndef PORTFOLIO_H 00004 #define PORTFOLIO_H 00005 00006 #include "./../PartA/BlackScholes/OptionStrategy.h" 00007 #include "./../PartK/VarianceSwap.h" 00008 #include "./../PartD/VanillaSwap.h" 00009 #include "./../PartI/rainbowoption.h" 00010 #include "./../PartH/bond.h" 00011 #include "./../PartC/asset.h" 00012 #include "./../PartL/Exotics.h" 00013 00014 #include<valarray> 00015 using namespace std; 00016 00017 const Natural MAX_SIZE=100; 00018 const Natural MAX_SIZE_NAME=50; 00019 00024 class Portfolio 00025 { 00026 public: 00031 Portfolio(char* name,Currency currency); 00032 ~Portfolio(void); 00033 00035 char* getName(); 00036 00038 Currency getCurrency(); 00039 00041 char* getCurrencyAsString(); 00042 00044 void addOptionStrategy(OptionStrategy* optionStrategy); 00045 00047 void addRainbowOption(RainbowOption* rainbowOption, Real quantity); 00048 00050 void addExoticOption(Exotics* exoticOption, Real quantity); 00051 00053 void addVanillaSwap(VanillaSwap* vanillaSwap, Real quantity); 00054 00056 void addVarianceSwap(VarianceSwap* varSwap, Real quantity); 00057 00059 void addBond(bond* oneBond, Real quantity); 00060 00062 void addAsset(asset* oneAsset, Real quantity); 00063 00065 Real getPrice(); 00066 00068 Real returnSensibilityToRate(); 00069 00071 Real returnSensibilityToVol(); 00072 00074 Real returnSensibilityToTime(); 00075 00076 00077 private: 00078 00079 char* _name; 00080 Currency _currency; 00081 00082 OptionStrategy _optionStrategy; 00083 valarray<RainbowOption*> _rainbowOptions; 00084 valarray<Exotics*> _exoticsOptions; 00085 valarray<VanillaSwap*> _vanSwaps; 00086 valarray<VarianceSwap*> _varSwaps; 00087 valarray<bond*> _bonds; 00088 valarray<asset*> _assets; 00089 00090 valarray<Real> _quantityRainbowOptions; 00091 valarray<Real> _quantityExoticsOptions; 00092 valarray<Real> _quantityVanSwaps; 00093 valarray<Real> _quantityVarSwaps; 00094 valarray<Real> _quantityBonds; 00095 valarray<Real> _quantityAssets; 00096 00097 Natural _nbRainbowOptions; 00098 Natural _nbExoticsOptions; 00099 Natural _nbVanSwaps; 00100 Natural _nbVarSwaps; 00101 Natural _nbBonds; 00102 Natural _nbAssets; 00103 }; 00104 00105 #endif;