Import('*')

# =============================================================================
# Calibration code
# =============================================================================

# Code paths
CALIBRATION_CODE = '#source/derived/calibration'
MODEL_CODE = '#source/derived/models'

# Data paths
MODEL_DATA = '#datastore/derived/model'
DISASTER_MODEL = f'{MODEL_DATA}/disaster_model'
INFLATIONARY_DEFAULT_MODEL = f'{MODEL_DATA}/inflationary_default_model'
DYNAMIC_PARAMETERS = f'{MODEL_DATA}/dynamic_model/parameters'
DYNAMIC_RESULTS = f'{MODEL_DATA}/dynamic_model/results'
INVENTORY_MODEL = f'{MODEL_DATA}/inventory_model'
EMPIRICS_DATA = '#datastore/derived/empirics'

# 01: Calibrate disaster model
target = [f'{DISASTER_MODEL}/table_1_panel_b.json',
          f'{DISASTER_MODEL}/table_1_panel_c.json',
          f'{DISASTER_MODEL}/table_E2_panel_a.json',
          f'{DISASTER_MODEL}/table_E2_panel_b.json',
          f'{DISASTER_MODEL}/table_E2_panel_c.json']
source = [f'{CALIBRATION_CODE}/01_calibrate_disaster_model.py',
          f'{MODEL_CODE}/disaster_model.py',
          f'{EMPIRICS_DATA}/all_data.dta']
env.Python(target, source)

# 02: Calibrate inflationary default model
target = [f'{INFLATIONARY_DEFAULT_MODEL}/table_2_panel_b.json',
          f'{INFLATIONARY_DEFAULT_MODEL}/table_2_panel_c.json',
          f'{INFLATIONARY_DEFAULT_MODEL}/table_E3_panel_a.json',
          f'{INFLATIONARY_DEFAULT_MODEL}/table_E3_panel_b.json',
          f'{INFLATIONARY_DEFAULT_MODEL}/table_E3_panel_c.json',
          f'{INFLATIONARY_DEFAULT_MODEL}/convenience_yield_adjusted.json']
source = [f'{CALIBRATION_CODE}/02_calibrate_inflationary_default_model.py',
          f'{MODEL_CODE}/inflationary_default_model.py',
          f'{DISASTER_MODEL}/table_1_panel_b.json',
          f'{EMPIRICS_DATA}/all_data.dta']
env.Python(target, source)

# 03: Dynamic model parameters
target = [f'{DYNAMIC_PARAMETERS}/baseline_calibration.json']
source = [f'{CALIBRATION_CODE}/03_dynamic_model_parameters.py',
          f'{DISASTER_MODEL}/table_1_panel_b.json',
          f'{EMPIRICS_DATA}/all_data.dta']
env.Python(target, source)

# 04: Calibrate dynamic model
target = [f'{DYNAMIC_RESULTS}/baseline_calibration.json',
          f'{DYNAMIC_RESULTS}/beta_only_calibration.json',
          f'{DYNAMIC_RESULTS}/inflation_risk_premium.dta']
source = [f'{CALIBRATION_CODE}/04_calibrate_dynamic_model.py',
          f'{MODEL_CODE}/dynamic_model.py',
          f'{DYNAMIC_PARAMETERS}/baseline_calibration.json']
env.Python(target, source)

# 05: Calibrate inventory model
target = [f'{INVENTORY_MODEL}/table_4_panel_b.json',
          f'{INVENTORY_MODEL}/table_4_panel_c.json']
source = [f'{CALIBRATION_CODE}/05_calibrate_inventory_model.py',
          f'{MODEL_CODE}/inventory_model.py',
          f'{DISASTER_MODEL}/table_1_panel_b.json']
env.Python(target, source)

# 06: Inventory comparative statics
target = [f'{INVENTORY_MODEL}/comparative_statics.json']
source = [f'{CALIBRATION_CODE}/06_inventory_comparative_statics.py',
          f'{MODEL_CODE}/inventory_model.py',
          f'{INVENTORY_MODEL}/table_4_panel_b.json',
          f'{INVENTORY_MODEL}/table_4_panel_c.json']
env.Python(target, source)

