diff --git a/catbond.py b/agents/catbond.py similarity index 98% rename from catbond.py rename to agents/catbond.py index 1445011..a09ff35 100644 --- a/catbond.py +++ b/agents/catbond.py @@ -2,9 +2,9 @@ import isleconfig import numpy as np import scipy.stats -from insurancecontract import InsuranceContract -from reinsurancecontract import ReinsuranceContract -from metainsuranceorg import MetaInsuranceOrg +from contracts.insurancecontract import InsuranceContract +from contracts.reinsurancecontract import ReinsuranceContract +from agents.metainsuranceorg import MetaInsuranceOrg from riskmodel import RiskModel import sys, pdb import uuid diff --git a/genericagent.py b/agents/genericagent.py similarity index 100% rename from genericagent.py rename to agents/genericagent.py diff --git a/genericagentabce.py b/agents/genericagentabce.py similarity index 100% rename from genericagentabce.py rename to agents/genericagentabce.py diff --git a/insurancefirm.py b/agents/insurancefirm.py similarity index 99% rename from insurancefirm.py rename to agents/insurancefirm.py index 61d5746..88398d8 100644 --- a/insurancefirm.py +++ b/agents/insurancefirm.py @@ -1,7 +1,7 @@ -from metainsuranceorg import MetaInsuranceOrg -from catbond import CatBond +from agents.metainsuranceorg import MetaInsuranceOrg +from agents.catbond import CatBond import numpy as np -from reinsurancecontract import ReinsuranceContract +from contracts.reinsurancecontract import ReinsuranceContract import isleconfig class InsuranceFirm(MetaInsuranceOrg): diff --git a/metainsuranceorg.py b/agents/metainsuranceorg.py similarity index 96% rename from metainsuranceorg.py rename to agents/metainsuranceorg.py index 5de33ab..0803499 100644 --- a/metainsuranceorg.py +++ b/agents/metainsuranceorg.py @@ -3,17 +3,16 @@ import numpy as np import scipy.stats import copy -from insurancecontract import InsuranceContract -from reinsurancecontract import ReinsuranceContract +from contracts import InsuranceContract, ReinsuranceContract from riskmodel import RiskModel import sys, pdb import uuid if isleconfig.use_abce: - from genericagentabce import GenericAgent + from agents.genericagentabce import GenericAgent #print("abce imported") else: - from genericagent import GenericAgent + from agents.genericagent import GenericAgent #print("abce not imported") def get_mean(x): @@ -55,17 +54,7 @@ def init(self, simulation_parameters, agent_parameters): self.cash_last_periods = list(np.zeros(4, dtype=int)*self.cash) rm_config = agent_parameters['riskmodel_config'] - self.riskmodel = RiskModel(damage_distribution=rm_config["damage_distribution"], \ - expire_immediately=rm_config["expire_immediately"], \ - cat_separation_distribution=rm_config["cat_separation_distribution"], \ - norm_premium=rm_config["norm_premium"], \ - category_number=rm_config["no_categories"], \ - init_average_exposure=rm_config["risk_value_mean"], \ - init_average_risk_factor=rm_config["risk_factor_mean"], \ - init_profit_estimate=rm_config["norm_profit_markup"], \ - margin_of_safety=rm_config["margin_of_safety"], \ - var_tail_prob=rm_config["var_tail_prob"], \ - inaccuracy=rm_config["inaccuracy_by_categ"]) + self.riskmodel = RiskModel(**rm_config) self.category_reinsurance = [None for i in range(self.simulation_no_risk_categories)] if self.simulation_reinsurance_type == 'non-proportional': diff --git a/reinsurancefirm.py b/agents/reinsurancefirm.py similarity index 85% rename from reinsurancefirm.py rename to agents/reinsurancefirm.py index 1c1558b..33c1ebb 100644 --- a/reinsurancefirm.py +++ b/agents/reinsurancefirm.py @@ -1,5 +1,5 @@ -#from metainsuranceorg import MetaInsuranceOrg -from insurancefirm import InsuranceFirm +#from agents.metainsuranceorg import MetaInsuranceOrg +from agents.insurancefirm import InsuranceFirm class ReinsuranceFirm(InsuranceFirm): """ReinsuranceFirm class. diff --git a/contracts/__init__.py b/contracts/__init__.py new file mode 100644 index 0000000..a0c66d1 --- /dev/null +++ b/contracts/__init__.py @@ -0,0 +1,2 @@ +from .insurancecontract import InsuranceContract +from .reinsurancecontract import ReinsuranceContract diff --git a/insurancecontract.py b/contracts/insurancecontract.py similarity index 97% rename from insurancecontract.py rename to contracts/insurancecontract.py index 5feb2d0..02c291d 100644 --- a/insurancecontract.py +++ b/contracts/insurancecontract.py @@ -1,6 +1,6 @@ import numpy as np -from metainsurancecontract import MetaInsuranceContract +from contracts.metainsurancecontract import MetaInsuranceContract class InsuranceContract(MetaInsuranceContract): diff --git a/metainsurancecontract.py b/contracts/metainsurancecontract.py similarity index 100% rename from metainsurancecontract.py rename to contracts/metainsurancecontract.py diff --git a/reinsurancecontract.py b/contracts/reinsurancecontract.py similarity index 96% rename from reinsurancecontract.py rename to contracts/reinsurancecontract.py index 199237c..45a2cb5 100644 --- a/reinsurancecontract.py +++ b/contracts/reinsurancecontract.py @@ -1,6 +1,6 @@ import numpy as np -from metainsurancecontract import MetaInsuranceContract +from contracts.metainsurancecontract import MetaInsuranceContract class ReinsuranceContract(MetaInsuranceContract): """ReinsuranceContract class. @@ -66,4 +66,4 @@ def mature(self, time): if np.random.uniform(0,1,1) < 0.95: reinrisk = self.property_holder.create_reinrisk(time,self.category) if reinrisk is not None and hasattr(self.insurer, 'reinrisks_kept'): - self.insurer.reinrisks_kept.append(reinrisk) \ No newline at end of file + self.insurer.reinrisks_kept.append(reinrisk) diff --git a/insurancesimulation.py b/insurancesimulation.py index 7857f10..64eb4f3 100644 --- a/insurancesimulation.py +++ b/insurancesimulation.py @@ -1,6 +1,6 @@ -from insurancefirm import InsuranceFirm +from agents.insurancefirm import InsuranceFirm #from riskmodel import RiskModel -from reinsurancefirm import ReinsuranceFirm +from agents.reinsurancefirm import ReinsuranceFirm from distributiontruncated import TruncatedDistWrapper import numpy as np import scipy.stats @@ -123,18 +123,19 @@ def __init__(self, override_no_riskmodels, replic_ID, simulation_parameters, rc_ self.inaccuracy = random.sample(self.inaccuracy, self.simulation_parameters["no_riskmodels"]) - risk_model_configurations = [{"damage_distribution": self.damage_distribution, - "expire_immediately": self.simulation_parameters["expire_immediately"], - "cat_separation_distribution": self.cat_separation_distribution, - "norm_premium": self.norm_premium, - "no_categories": self.simulation_parameters["no_categories"], - "risk_value_mean": risk_value_mean, - "risk_factor_mean": risk_factor_mean, - "norm_profit_markup": self.simulation_parameters["norm_profit_markup"], - "margin_of_safety": self.simulation_parameters["riskmodel_margin_of_safety"], - "var_tail_prob": self.simulation_parameters["value_at_risk_tail_probability"], - "inaccuracy_by_categ": self.inaccuracy[i]} \ - for i in range(self.simulation_parameters["no_riskmodels"])] + risk_model_configurations = [ + {"damage_distribution": self.damage_distribution, + "expire_immediately": self.simulation_parameters["expire_immediately"], + "cat_separation_distribution": self.cat_separation_distribution, + "norm_premium": self.norm_premium, + "category_number": self.simulation_parameters["no_categories"], + "init_average_exposure": risk_value_mean, + "init_average_risk_factor": risk_factor_mean, + "init_profit_estimate": self.simulation_parameters["norm_profit_markup"], + "margin_of_safety": self.simulation_parameters["riskmodel_margin_of_safety"], + "var_tail_prob": self.simulation_parameters["value_at_risk_tail_probability"], + "inaccuracy": self.inaccuracy[i]} + for i in range(self.simulation_parameters["no_riskmodels"])] # prepare setting up agents (to be done from start.py) self.agent_parameters = {"insurancefirm": [], "reinsurance": []} # TODO: rename reinsurance -> reinsurancefirm (also in start.py and below in method accept_agents @@ -224,12 +225,8 @@ def build_agents(self, agent_class, agent_class_string, parameters, agent_parame def accept_agents(self, agent_class_string, agents, agent_group=None, time=0): # TODO: fix agent id's for late entrants (both firms and catbonds) if agent_class_string == "insurancefirm": - try: - self.insurancefirms += agents - self.insurancefirms_group = agent_group - except: - print(sys.exc_info()) - pdb.set_trace() + self.insurancefirms += agents + self.insurancefirms_group = agent_group # fix self.history_logs['individual_contracts'] list for agent in agents: self.logger.add_insurance_agent() @@ -237,21 +234,13 @@ def accept_agents(self, agent_class_string, agents, agent_group=None, time=0): new_agent_cash = sum([agent.cash for agent in agents]) self.reduce_money_supply(new_agent_cash) elif agent_class_string == "reinsurance": - try: - self.reinsurancefirms += agents - self.reinsurancefirms_group = agent_group - except: - print(sys.exc_info()) - pdb.set_trace() + self.reinsurancefirms += agents + self.reinsurancefirms_group = agent_group # remove new agent cash from simulation cash to ensure stock flow consistency new_agent_cash = sum([agent.cash for agent in agents]) self.reduce_money_supply(new_agent_cash) elif agent_class_string == "catbond": - try: - self.catbonds += agents - except: - print(sys.exc_info()) - pdb.set_trace() + self.catbonds += agents else: assert False, "Error: Unexpected agent class used {0:s}".format(agent_class_string) diff --git a/resume.py b/resume.py index 7c60700..c7935ed 100644 --- a/resume.py +++ b/resume.py @@ -60,9 +60,9 @@ from abce import gui from insurancesimulation import InsuranceSimulation -from insurancefirm import InsuranceFirm +from agents.insurancefirm import InsuranceFirm from riskmodel import RiskModel -from reinsurancefirm import ReinsuranceFirm +from agents.reinsurancefirm import ReinsuranceFirm # create conditional decorator def conditionally(decorator_function, condition): diff --git a/start.py b/start.py index 26f43a0..382a972 100644 --- a/start.py +++ b/start.py @@ -19,9 +19,9 @@ override_no_riskmodels = False from insurancesimulation import InsuranceSimulation -from insurancefirm import InsuranceFirm +from agents.insurancefirm import InsuranceFirm from riskmodel import RiskModel -from reinsurancefirm import ReinsuranceFirm +from agents.reinsurancefirm import ReinsuranceFirm import logger import calibrationscore