Skip to content

Commit b55aeec

Browse files
committed
insurancesimulation: Combine insurancefirm and reinsurancefirm parameters init
1 parent 0f8249b commit b55aeec

File tree

1 file changed

+25
-40
lines changed

1 file changed

+25
-40
lines changed

insurancesimulation.py

+25-40
Original file line numberDiff line numberDiff line change
@@ -141,47 +141,32 @@ def __init__(self, override_no_riskmodels, replic_ID, simulation_parameters, rc_
141141
self.agent_parameters = {"insurancefirm": [], "reinsurance": []} # TODO: rename reinsurance -> reinsurancefirm (also in start.py and below in method accept_agents
142142

143143
self.insurer_id_counter = 0
144-
# TODO: collapse the following two loops into one generic one?
145-
for i in range(simulation_parameters["no_insurancefirms"]):
146-
if simulation_parameters['static_non-proportional_reinsurance_levels']:
147-
insurance_reinsurance_level = simulation_parameters["default_non-proportional_reinsurance_deductible"]
148-
else:
149-
insurance_reinsurance_level = np.random.uniform(simulation_parameters["insurance_reinsurance_levels_lower_bound"], simulation_parameters["insurance_reinsurance_levels_upper_bound"])
150-
151-
riskmodel_config = risk_model_configurations[i % len(risk_model_configurations)]
152-
self.agent_parameters["insurancefirm"].append({'id': self.get_unique_insurer_id(), 'initial_cash': simulation_parameters["initial_agent_cash"],
153-
'riskmodel_config': riskmodel_config, 'norm_premium': self.norm_premium,
154-
'profit_target': simulation_parameters["norm_profit_markup"],
155-
'initial_acceptance_threshold': simulation_parameters["initial_acceptance_threshold"],
156-
'acceptance_threshold_friction': simulation_parameters["acceptance_threshold_friction"],
157-
'reinsurance_limit': simulation_parameters["reinsurance_limit"],
158-
'non-proportional_reinsurance_level': insurance_reinsurance_level,
159-
'capacity_target_decrement_threshold': simulation_parameters['capacity_target_decrement_threshold'],
160-
'capacity_target_increment_threshold': simulation_parameters['capacity_target_increment_threshold'],
161-
'capacity_target_decrement_factor': simulation_parameters['capacity_target_decrement_factor'],
162-
'capacity_target_increment_factor': simulation_parameters['capacity_target_increment_factor'],
163-
'interest_rate': simulation_parameters["interest_rate"]})
164-
165144
self.reinsurer_id_counter = 0
166-
for i in range(simulation_parameters["no_reinsurancefirms"]):
167-
if simulation_parameters['static_non-proportional_reinsurance_levels']:
168-
reinsurance_reinsurance_level = simulation_parameters["default_non-proportional_reinsurance_deductible"]
169-
else:
170-
reinsurance_reinsurance_level = np.random.uniform(simulation_parameters["reinsurance_reinsurance_levels_lower_bound"], simulation_parameters["reinsurance_reinsurance_levels_upper_bound"])
171-
172-
riskmodel_config = risk_model_configurations[i % len(risk_model_configurations)]
173-
self.agent_parameters["reinsurance"].append({'id': self.get_unique_reinsurer_id(), 'initial_cash': simulation_parameters["initial_reinagent_cash"],
174-
'riskmodel_config': riskmodel_config, 'norm_premium': self.norm_premium,
175-
'profit_target': simulation_parameters["norm_profit_markup"],
176-
'initial_acceptance_threshold': simulation_parameters["initial_acceptance_threshold"],
177-
'acceptance_threshold_friction': simulation_parameters["acceptance_threshold_friction"],
178-
'reinsurance_limit': simulation_parameters["reinsurance_limit"],
179-
'non-proportional_reinsurance_level': reinsurance_reinsurance_level,
180-
'capacity_target_decrement_threshold': simulation_parameters['capacity_target_decrement_threshold'],
181-
'capacity_target_increment_threshold': simulation_parameters['capacity_target_increment_threshold'],
182-
'capacity_target_decrement_factor': simulation_parameters['capacity_target_decrement_factor'],
183-
'capacity_target_increment_factor': simulation_parameters['capacity_target_increment_factor'],
184-
'interest_rate': simulation_parameters["interest_rate"]})
145+
146+
for a_type in ["insurance", "reinsurance"]:
147+
_n = "no_" + a_type + "firms"
148+
for i in range(simulation_parameters[_n]):
149+
if simulation_parameters['static_non-proportional_reinsurance_levels']:
150+
reinsurance_level = simulation_parameters["default_non-proportional_reinsurance_deductible"]
151+
else:
152+
reinsurance_level = np.random.uniform(simulation_parameters[a_type + "_reinsurance_levels_lower_bound"], simulation_parameters[a_type + "_reinsurance_levels_upper_bound"])
153+
154+
riskmodel_config = risk_model_configurations[i % len(risk_model_configurations)]
155+
self.agent_parameters[a_type + "firm"].append({
156+
'id': self.get_unique_insurer_id(), 'initial_cash': simulation_parameters["initial_agent_cash"],
157+
'riskmodel_config': riskmodel_config, 'norm_premium': self.norm_premium,
158+
'profit_target': simulation_parameters["norm_profit_markup"],
159+
'initial_acceptance_threshold': simulation_parameters["initial_acceptance_threshold"],
160+
'acceptance_threshold_friction': simulation_parameters["acceptance_threshold_friction"],
161+
'reinsurance_limit': simulation_parameters["reinsurance_limit"],
162+
'non-proportional_reinsurance_level': reinsurance_level,
163+
'capacity_target_decrement_threshold': simulation_parameters['capacity_target_decrement_threshold'],
164+
'capacity_target_increment_threshold': simulation_parameters['capacity_target_increment_threshold'],
165+
'capacity_target_decrement_factor': simulation_parameters['capacity_target_decrement_factor'],
166+
'capacity_target_increment_factor': simulation_parameters['capacity_target_increment_factor'],
167+
'interest_rate': simulation_parameters["interest_rate"]})
168+
169+
185170

186171
# set up remaining list variables
187172

0 commit comments

Comments
 (0)