def main(job_date, cpty): base_path = os.getcwd() + "/" os.makedirs("Input", mode=0o777, exist_ok=True) os.makedirs("Market", mode=0o777, exist_ok=True) os.makedirs("Output", mode=0o777, exist_ok=True) storage_client = storage.Client.from_service_account_json( './vannarho-fb3267082c74.json') risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.risk_exe = '/home/condor/risk_engine/build/App/ore' # download params for counterparty bucket_name = 'risk_params' prefix = job_date + '/' + cpty + '/' # prefix = '09-10-20/cpty_01/' dl_dir = './Input/' get_input_blobs(bucket_name, prefix, dl_dir, storage_client) # download params for market bucket_name = 'market_params' prefix = job_date + '/' dl_dir = './Market/' get_input_blobs(bucket_name, prefix, dl_dir, storage_client) # run risk analytics risk_engine.print_headline( "Run risk engine to produce NPV cube and exposures") risk_engine.run("Input/ore.xml") # risk_engine.get_times("Output/log.txt") # upload risk output files bucket_name = 'cpty_risk_outputs' # destination_blob_name = '09-10-20/cpty_01/' destination_blob_name = job_date + '/' + cpty + '/' source_dir = './Output/' # source_dir = '/risk_run/Output/' upload_blob(bucket_name, source_dir, destination_blob_name, storage_client)
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline( "Run RiskEngine to illustrate use of discount ratio curve") risk_engine.print_headline("Run with USD base currency") risk_engine.run("Input/ore_usd_base.xml") risk_engine.print_headline( "Run with EUR base currency using GBP-IN-EUR discount modified ratio curve" ) risk_engine.run("Input/ore_eur_base.xml")
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv)>1 else False) risk_engine.print_headline("Run RiskEngine to produce CDS NPV") risk_engine.run("Input/ore.xml") risk_engine.get_times("Output/log.txt")
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline("Run RiskEngine with flat vols") risk_engine.run("Input/ore_flat.xml") risk_engine.print_headline("Run RiskEngine with smiles") risk_engine.run("Input/ore_smile.xml")
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline("Run RiskEngine to produce NPV cube and exposures") risk_engine.run("Input/ore.xml") risk_engine.get_times("Output/log.txt") risk_engine.print_headline("Run RiskEngine again to price European Swaptions") risk_engine.run("Input/ore_swaption.xml") risk_engine.print_headline( "Plot results: Simulated exposures vs analytical swaption prices") risk_engine.setup_plot("swaptions") risk_engine.plot("exposure_trade_Swap_20y.csv", 2, 3, 'b', "Swap EPE") risk_engine.plot("exposure_trade_Swap_20y.csv", 2, 4, 'r', "Swap ENE") risk_engine.plot("swaption_npv.csv", 3, 4, 'g', "NPV Swaptions", marker='s') risk_engine.decorate_plot( title="Example 1 - Simulated exposures vs analytical swaption prices") risk_engine.save_plot_to_file()
#!/usr/bin/env python import sys import os from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) # Portfolio 1 run risk_engine.print_headline( "Run RiskEngine to produce NPV cube and exposures for portfolio 1") risk_engine.run("Input/ore_portfolio_1.xml") risk_engine.get_times("Output/portfolio_1/log.txt") risk_engine.print_headline("Plot results for portfolio 1") risk_engine.setup_plot("portfolio_1") risk_engine.plot(os.path.join("portfolio_1", "exposure_trade_swap_01.csv"), 2, 3, 'b', "EPE Swap") risk_engine.plot(os.path.join("portfolio_1", "exposure_trade_collar_01.csv"), 2, 4, 'r', "ENE Collar") risk_engine.plot(os.path.join("portfolio_1", "exposure_nettingset_CPTY_A.csv"), 2, 4, 'g', "ENE Netting") #risk_engine.plot(os.path.join("portfolio_1", "exposure_nettingset_CPTY_A.csv"), 2, 3, 'g', "EPE Netting") risk_engine.decorate_plot(title="Example 6, Portfolio 1") risk_engine.save_plot_to_file(os.path.join("Output", "portfolio_1")) # Portfolio 2 run risk_engine.print_headline( "Run RiskEngine to produce NPV cube and exposures for portfolio 2") risk_engine.run("Input/ore_portfolio_2.xml")
import os import sys sys.path.append('Helpers/') import TradeGenerator from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv)>1 else False) risk_engine.print_headline("Running in currency trades") risk_engine.run("Input/ois_ore.xml") risk_engine.print_headline("Running EUR out of currency trades") risk_engine.run("Input/EUR_xois_ore.xml") risk_engine.print_headline("Running USD out of currency trades") risk_engine.run("Input/USD_xois_ore.xml")
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline( "Run RiskEngine for Sensitivity Analysis (simulating full volatility surfaces)" ) risk_engine.run("Input/ore_fullSurface.xml") risk_engine.get_times("Output/log_fullSurface.txt") risk_engine.print_headline( "Run RiskEngine for Sensitivity Analysis (simulating volatility atm strikes only)" ) risk_engine.run("Input/ore_atmOnly.xml") risk_engine.get_times("Output/log_atmOnly.txt")
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline("Run RiskEngine to produce NPV") risk_engine.run("Input/ore.xml") risk_engine.get_times("Output/log.txt") risk_engine.print_headline("Plot results: Simulated exposures") risk_engine.setup_plot("CPI Swap") risk_engine.plot("exposure_trade_CPI_Swap_1.csv", 2, 3, 'b', "EPE CPI Swap") risk_engine.decorate_plot(title="Example 17", ylabel="Exposure") risk_engine.save_plot_to_file() risk_engine.setup_plot("YoY Swap") risk_engine.plot("exposure_trade_YearOnYear_Swap.csv", 2, 3, 'b', "EPE YoY Swap") risk_engine.decorate_plot(title="Example 17", ylabel="Exposure") risk_engine.save_plot_to_file() risk_engine.run("Input/ore_capfloor.xml") risk_engine.get_times("Output/log_capfloor.txt")
#!/usr/bin/env python import glob import os import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) # whithout collateral risk_engine.print_headline( "Run RiskEngine to produce NPV cube and exposures, without collateral") risk_engine.run("Input/ore.xml") risk_engine.get_times("Output/log.txt") risk_engine.save_output_to_subdir( "collateral_none", ["log.txt", "xva.csv"] + glob.glob(os.path.join(os.getcwd(), os.path.join("Output", "exposure*")))) # Threshhold>0 risk_engine.print_headline( "Run RiskEngine to postprocess the NPV cube, with collateral (threshold>0)" ) risk_engine.run("Input/ore_threshold.xml") risk_engine.save_output_to_subdir( "collateral_threshold", ["log.txt", "xva.csv"] + glob.glob(os.path.join(os.getcwd(), os.path.join("Output", "exposure*"))) + glob.glob(os.path.join(os.getcwd(), os.path.join("Output", "colva*")))) # mta=0 risk_engine.print_headline( "Run RiskEngine to postprocess the NPV cube, with collateral (threshold=0)"
#!/usr/bin/env python import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) risk_engine.print_headline("Run RiskEngine to produce NPV cube and exposures") risk_engine.run("Input/ore.xml") risk_engine.get_times("Output/log.txt") risk_engine.print_headline("Run RiskEngine to price European Payer Swaptions") risk_engine.run("Input/ore_payer_swaption.xml") risk_engine.print_headline( "Run RiskEngine to price European Receiver Swaptions") risk_engine.run("Input/ore_receiver_swaption.xml") risk_engine.print_headline( "Plot results: Simulated exposures vs analytical Swaption prices") risk_engine.setup_plot("swaptions") risk_engine.plot("exposure_trade_Swap_20.csv", 2, 3, 'b', "EPE") risk_engine.plot("exposure_trade_Swap_20.csv", 2, 4, 'r', "ENE") risk_engine.plot_npv("npv_payer.csv", 6, 'g', 'Payer Swaption', marker='s') risk_engine.plot_npv("npv_receiver.csv", 6, 'm', "Receiver Swaption", marker='s') risk_engine.decorate_plot(title="Example 2")
#!/usr/bin/env python import os import sys from risk_helper import RiskEngine risk_engine = RiskEngine(sys.argv[1] if len(sys.argv) > 1 else False) # Case A risk_engine.print_headline( "Run RiskEngine (case A (swap eur), 1st order regression)") risk_engine.run("Input/ore_A1.xml") risk_engine.get_times("Output/log_1.txt") risk_engine.save_output_to_subdir( "case_A_eur_swap", ["log_1.txt", "dim_evolution_1.txt", "dim_regression_1.txt"]) risk_engine.print_headline( "Run RiskEngine (case A (swap eur), 2nd order regression)") risk_engine.run("Input/ore_A2.xml") risk_engine.save_output_to_subdir( "case_A_eur_swap", ["log_2.txt", "dim_evolution_2.txt", "dim_regression_2.txt"]) risk_engine.print_headline( "Run RiskEngine (case A (swap eur), zero order regression)") risk_engine.run("Input/ore_A0.xml") risk_engine.save_output_to_subdir( "case_A_eur_swap", ["log_0.txt", "dim_evolution_0.txt", "dim_regression_0.txt"]) risk_engine.print_headline("Plot results")