void test_Calib_gMatrix(const LmmCalibrationConfig& config , const std::string& mkt_data_filename) { std::string folder_data_file = "WithPositiveConstraint\\" + LMMPATH::get_BaseFileName(mkt_data_filename) + "\\"; LmmSwaptionMarketData_PTR pLmmSwaptionMarketData=get_LmmSwaptionMarketData(config, mkt_data_filename); { std::string sub_folder_data_file = folder_data_file + "Cascade\\"; LMMPATH::reset_Output_SubFolder(sub_folder_data_file ); GMatrixMapping_PTR pGMatrixMapping = marketData_LMM_CascadeExact_calibration(config, pLmmSwaptionMarketData, config.get_abcdArray() ,create_InitCorrelation(config)); config.print("calib_config.csv"); } { config.use_local_calib_=false; std::string sub_folder_data_file = folder_data_file + "Global\\"; LMMPATH::reset_Output_SubFolder(sub_folder_data_file ); marketData_LMM_Global_gCalibration(config, pLmmSwaptionMarketData,config.get_abcdArray(),create_InitCorrelation(config), GMatrixMapping_PTR() ); config.print("calib_config.csv"); } { config.use_local_calib_=true; std::string sub_folder_data_file = folder_data_file + "Local\\"; LMMPATH::reset_Output_SubFolder(sub_folder_data_file ); marketData_LMM_Global_gCalibration(config, pLmmSwaptionMarketData,config.get_abcdArray(),create_InitCorrelation(config), GMatrixMapping_PTR() ); config.print("calib_config.csv"); } }
void test_calibration_Cascade_then_Global(const std::string& mkt_data_filename) { LmmCalibrationConfig config; config.reset_nbYear(16); config.correl_ReducedRank_= 3; config.correl_alpha_ = 0.000000001; config.correl_beta_ = 0.05; config.vol_abcd_.a_ = 0.25673; config.vol_abcd_.b_ = 0.00002; config.vol_abcd_.c_ = 0.547; config.vol_abcd_.d_ = 0.13998; config.use_positive_constraint_=true; std::stringstream foldername ; std::string base_name_file = LMMPATH::get_BaseFileName(mkt_data_filename) + "\\"; foldername<<"Cascade_Then_Global\\"; foldername << base_name_file ; LMMPATH::reset_Output_SubFolder(foldername.str() ); LmmSwaptionMarketData_PTR pLmmSwaptionMarketData=get_LmmSwaptionMarketData(config, mkt_data_filename ); GMatrixMapping_PTR pGMatrixMapping = marketData_LMM_CascadeExact_calibration(config, pLmmSwaptionMarketData, config.get_abcdArray() ,create_InitCorrelation(config)); marketData_LMM_Global_gCalibration(config, pLmmSwaptionMarketData,config.get_abcdArray(),create_InitCorrelation(config),pGMatrixMapping ); }
void test_LmmGenericSensitivity(const std::string& mkt_data_filename) { LmmCalibrationConfig config; config.reset_nbYear(16); config.correl_ReducedRank_= 3; config.correl_alpha_ = 0.000000001; config.correl_beta_ = 0.05; config.vol_abcd_.a_ = 0.136554 ; config.vol_abcd_.b_ = 8.45E-06 ; config.vol_abcd_.c_ = 0.0439938 ; config.vol_abcd_.d_ = 0.0269172 ; config.penalty_libor_ = 1e-6; config.penalty_time_homogeneity_ = 1e-4; config.use_positive_constraint_=true; std::stringstream foldername ; std::string base_name_file = LMMPATH::get_BaseFileName(mkt_data_filename) + "\\"; foldername<<"Regularized_"; foldername << base_name_file ; LMMPATH::reset_Output_SubFolder(foldername.str() ); LmmSwaptionMarketData_PTR pLmmSwaptionMarketData=get_LmmSwaptionMarketData(config, mkt_data_filename ); //config.print("config_for_abcd_calibration.csv"); //QuantLib::Array calibrated_abcd = marketData_LMM_ABCD_calibration(config,pLmmSwaptionMarketData); marketData_LMM_Global_gCalibration(config, pLmmSwaptionMarketData,config.get_abcdArray(),create_InitCorrelation(config), GMatrixMapping_PTR() ); //QuantLib::Array calibrated_abcd(4); //config.correl_alpha_= 1e-7 ; config.correl_beta_= 1; //calibrated_abcd[0]=0.223519;calibrated_abcd[1]=1.36E-05;calibrated_abcd[2]=0.455953;calibrated_abcd[3]=0.140501; //Correlation_PTR pCorrelation = marketData_LMM_Correlation_calibration(config,pLmmSwaptionMarketData, calibrated_abcd ); //config.print("config_for_correlation_calibration.csv"); //Correlation_PTR pCorrelation = marketData_LMM_Correlation_calibration(config,pLmmSwaptionMarketData, calibrated_abcd ); //Correlation_PTR pCorrelation = create_InitCorrelation(config); //GMatrixMapping_PTR pGMatrixMapping = marketData_LMM_CascadeExact_calibration(config, pLmmSwaptionMarketData, config.get_abcdArray() ,pCorrelation); //marketData_LMM_Global_gCalibration(config, pLmmSwaptionMarketData,config.get_abcdArray(),pCorrelation, pGMatrixMapping ); foldername.str( std::string() ) ; }
void test_LmmSensitivityCorrelationReducedRank() { std::vector<std::string> mkt_file_list = InputFileManager::get_VCUB_FileList(); size_t nbFile = mkt_file_list.size(); LmmCalibrationConfig config; config.reset_nbYear(16); config.vol_abcd_.a_ = 0.148975 ; config.vol_abcd_.b_ = 0.0197503 ; config.vol_abcd_.c_ = 0.108518 ; config.vol_abcd_.d_ = 1.38E-08 ; std::vector<size_t> reduced_rank_list; reduced_rank_list.push_back(3); reduced_rank_list.push_back(5); reduced_rank_list.push_back(10); reduced_rank_list.push_back(15); reduced_rank_list.push_back(20); reduced_rank_list.push_back(25); reduced_rank_list.push_back(30); std::stringstream foldername ; LmmSwaptionMarketData_PTR pLmmSwaptionMarketData=get_LmmSwaptionMarketData(config, mkt_file_list[0]); for(size_t i=0; i<reduced_rank_list.size();++i) { config.correl_ReducedRank_ = reduced_rank_list[i] ; foldername << LMMPATH::get_BaseFileName(mkt_file_list[0])<<"\\"<<"ReducedRank_"<<reduced_rank_list[i]<<"\\"; LMMPATH::reset_Output_SubFolder(foldername.str() ); Correlation_PTR pCorrelation = marketData_LMM_Correlation_calibration(config,pLmmSwaptionMarketData,config.get_abcdArray() ); foldername.str( std::string() ) ; } }