Skip to content

open-source-modelling/Light_Economic_Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

675d945 Β· Aug 21, 2024

History

36 Commits
Apr 14, 2024
Mar 31, 2024
Mar 30, 2024
Mar 31, 2024
Mar 30, 2024
Mar 30, 2024
Apr 1, 2024
Apr 13, 2024
Apr 14, 2024
Apr 2, 2024
Apr 13, 2024
Aug 21, 2024
Aug 21, 2024
Apr 13, 2024
Apr 13, 2024
Apr 12, 2024
Mar 31, 2024
Apr 13, 2024

Repository files navigation

🐍 Light Economic Generator 🐍


The purpose of this repository is to create an open-source stochastic economic scenario generator using algorithms previously published by OSEM. As a prototype (NOT TESTED!!!!), LEG supports 3 models:

The stochastic scenarios are available in two modelities. As an index (I) or as a discounting factor (D).

The example of the input:

Calibration_ID model Type NoOfPaths NoOfSteps T a sigma epsilon Country selected_param_file selected_curves_file mu gamma
11 HW I 1000 600 50 0.02 0.02 0.01 Slovenia Param_no_VA.csv Curves_no_VA.csv 0 0
22 BS D 1000 600 50 0 0.02 0.01 Slovenia Param_no_VA.csv Curves_no_VA.csv 0.02 0
33 V D 1000 600 50 0 0.02 0.01 Slovenia Param_no_VA.csv Curves_no_VA.csv 0.02 0.3

This prototype generates a csv that contains 1000 stochastic scenarios for each of the 3 rows and append it one bellow the other.

The script that starts the prototype is (also in main.py):

import pandas as pd
from read_input import read_model_input
from term_structure import calculate_zero_coupon_price
from black_sholes import set_up_black_sholes
from vasicek import set_up_vasicek
from hull_white import set_up_hull_white

param_raw = pd.read_csv("Parameters.csv", sep=',', index_col=0)

combined_run = []

for run_id in param_raw.index:
    [modeling_parameters, curve_parameters] = read_model_input(run_id)
    
    zero_coupon_price = lambda t: calculate_zero_coupon_price(t, curve_parameters["target_maturities"], curve_parameters["calibration_vector"], curve_parameters["ultimate_forward_rate"], curve_parameters["convergence_speed"] )
    if modeling_parameters["run_type"] == "HW":
        run = set_up_hull_white(run_id, modeling_parameters, zero_coupon_price)        
    elif modeling_parameters["run_type"] == "BS":
        run = set_up_black_sholes(run_id, modeling_parameters, zero_coupon_price)
    elif modeling_parameters["run_type"] == "V":
        run = set_up_vasicek(run_id, modeling_parameters, zero_coupon_price)
    else:
        raise ValueError("Model type not available")

    if isinstance(combined_run,pd.DataFrame):
        combined_run = pd.concat([combined_run,run])
    else:
        combined_run = run

combined_run.to_csv("Output/run.csv")