Skip to content
Draft
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
93e924f
initial commit CAT Bonds
KaiOBerg Oct 31, 2025
f502208
change subarea building to resolution input
KaiOBerg Nov 3, 2025
2c23ff5
alter subarea creation test notebook
KaiOBerg Nov 3, 2025
3e9457e
take crs from exposure
KaiOBerg Nov 7, 2025
efe9a75
dont save exp_gdf and adjust plotting
KaiOBerg Nov 7, 2025
cbd9b94
add buffer to create subareas
KaiOBerg Nov 7, 2025
716d3a0
streamline calculations
KaiOBerg Nov 7, 2025
96c26c4
change calculation of attachment and prinipal
KaiOBerg Nov 7, 2025
cc4fdee
keep only grids with exposure point within
KaiOBerg Nov 7, 2025
16caea0
fix bugs
KaiOBerg Nov 7, 2025
6533b49
adjust calc savings
KaiOBerg Nov 7, 2025
bf54f9b
adjust test notebook to changed classes
KaiOBerg Nov 7, 2025
688027d
inititate bond simulation class
KaiOBerg Nov 7, 2025
0a35b87
delete pay_dam_subarea class
KaiOBerg Nov 7, 2025
519dcb4
update function descriptions
KaiOBerg Nov 7, 2025
8a2accf
fix bugs
KaiOBerg Nov 7, 2025
08bd04e
add total payout and damage
KaiOBerg Nov 7, 2025
3d59693
update function description
KaiOBerg Nov 7, 2025
edf6598
add net cash flow and premium simulation
KaiOBerg Nov 7, 2025
2388d7c
adjust metric naming
KaiOBerg Nov 7, 2025
7db291c
update test to classes
KaiOBerg Nov 7, 2025
f9c6cab
change function naming
KaiOBerg Nov 7, 2025
1168e62
inititate premium class
KaiOBerg Nov 7, 2025
8ef65cb
add IBRD CAT bonds data file
KaiOBerg Nov 7, 2025
6d30ad7
add ibrd based premium calculation
KaiOBerg Nov 7, 2025
fc3edc8
improve logging and fix bug chatoro
KaiOBerg Nov 7, 2025
c7d1134
fix path to data dir
KaiOBerg Nov 7, 2025
6bf627e
remove premium input
KaiOBerg Nov 7, 2025
c93b862
adjust test notebook to classes
KaiOBerg Nov 7, 2025
b820b8c
add benchmark premium calculation
KaiOBerg Nov 7, 2025
ce9952c
include all premium methods in test notebook
KaiOBerg Nov 7, 2025
0d5fbcd
remove buffer grid size
KaiOBerg Nov 7, 2025
82d185d
define variables
KaiOBerg Nov 7, 2025
d6a494c
rename bond_simulation to sng_bond_simulation
KaiOBerg Nov 7, 2025
7322e02
initialize multi country bond simulation
KaiOBerg Nov 7, 2025
d6250ff
add function to derive VaR and ES
KaiOBerg Nov 7, 2025
ac4c317
add jamaica bond
KaiOBerg Nov 9, 2025
c4d2d99
fix bugs exp and haz jamaica
KaiOBerg Nov 9, 2025
78e8b8e
test multi-country bond in notebook
KaiOBerg Nov 9, 2025
4b9c735
add minimum simulation year
KaiOBerg Nov 9, 2025
a440927
Update climada_petals/engine/cat_bonds/mlt_bond_simulation.py
KaiOBerg Nov 16, 2025
616bf60
make init loss more pythonic
KaiOBerg Nov 16, 2025
d50ceb5
change var es function
KaiOBerg Nov 16, 2025
ac20d79
adjust test notebook for confidence intervals
KaiOBerg Nov 16, 2025
50ac5ef
remove nested loop from bond simulation
KaiOBerg Nov 17, 2025
da53e8a
change fucntion description
KaiOBerg Nov 17, 2025
c02d1eb
fix type of single events in df_loss_month
KaiOBerg Nov 21, 2025
7c6458b
adjust to chanings in sng_simulation
KaiOBerg Nov 21, 2025
ad92d39
implement return simulation mlt bonds
KaiOBerg Nov 21, 2025
9c5ca13
rename funciton names
KaiOBerg Nov 21, 2025
0e95f18
init function to calculate returns with trances
KaiOBerg Nov 21, 2025
805bbe1
add required principal calculation
KaiOBerg Nov 21, 2025
d692bea
save required principal to mlt_bond class
KaiOBerg Nov 21, 2025
05a88ee
rename functions
KaiOBerg Nov 21, 2025
61802b5
make bond term function private
KaiOBerg Nov 21, 2025
2b3484b
adapt changes in mlt class to test notebook
KaiOBerg Nov 21, 2025
1d5897d
fix min year in requ_principal and initialze min_year at class init
KaiOBerg Nov 21, 2025
499bf97
add function for overlapping subareas
KaiOBerg Nov 21, 2025
0fef13e
add belize
KaiOBerg Nov 21, 2025
a53e32e
make build_subareas optional
KaiOBerg Nov 21, 2025
0b09fe5
minor adjustments
KaiOBerg Nov 21, 2025
6051337
rename class names
KaiOBerg Nov 21, 2025
d2ec6c4
initialize pooling optimization problems
KaiOBerg Nov 21, 2025
edfb591
add function to derive optimal fixed pools
KaiOBerg Nov 21, 2025
7efc9a2
move allocate tranche payout to utils
KaiOBerg Nov 24, 2025
5a29cc3
rename test notebook to tutorial
KaiOBerg Nov 24, 2025
58bf8e1
move tutorial
KaiOBerg Nov 27, 2025
9166134
initialize subareas with resolution
KaiOBerg Nov 27, 2025
e5d2d47
initiate subareas by resolution
KaiOBerg Nov 27, 2025
5abe3c1
implement pooling n pools
KaiOBerg Nov 27, 2025
d8f70a0
initialise class with optimized n pools
KaiOBerg Nov 28, 2025
fc1a62f
rename n to n_pools
KaiOBerg Nov 28, 2025
7186418
rename fct process_n to process_n_pools
KaiOBerg Nov 28, 2025
62e4808
add maximum principal wrapper function
KaiOBerg Nov 28, 2025
f5c774b
fix iterration bug
KaiOBerg Nov 28, 2025
5e14044
return whole dictionary conatining multiple class instances
KaiOBerg Nov 28, 2025
b311758
add logging to simulate_bond_pool_n
KaiOBerg Nov 28, 2025
b262e71
add max_principal pooling optimization function
KaiOBerg Nov 28, 2025
4dbea02
adapt to changes in mlt_cty_bond
KaiOBerg Nov 28, 2025
20b08fa
update funciton descriptions
KaiOBerg Nov 28, 2025
c486f9c
comment tutorial script
KaiOBerg Nov 28, 2025
ad94804
change inital guess values to percentiles of hazard intensity
KaiOBerg Nov 28, 2025
df09dd3
implement option to plug in manuall init guess
KaiOBerg Nov 28, 2025
a84e767
add function to initialize subarea class with a gdf
KaiOBerg Nov 28, 2025
d422c83
update function description
KaiOBerg Nov 28, 2025
9c4a252
move turotial to docs and create init
KaiOBerg Nov 28, 2025
e9078d4
fix file paths
KaiOBerg Nov 28, 2025
f30d74b
move explode into exp_gdf function
KaiOBerg Nov 28, 2025
fa871c8
initialize subaarea unit tests
KaiOBerg Nov 28, 2025
16ce43d
remove padding of exposure resolution
KaiOBerg Nov 28, 2025
d784b82
add 1.2 padding to exposure resolution
KaiOBerg Nov 28, 2025
b7e95b4
add testing of merging polygons
KaiOBerg Nov 28, 2025
c1f5d4d
add more test cases to merging polyons
KaiOBerg Nov 28, 2025
70cd21d
fromatting
KaiOBerg Dec 1, 2025
e5d515a
init test subarea_calculations
KaiOBerg Dec 1, 2025
9635151
clearify variable origin
KaiOBerg Dec 1, 2025
b353942
fix bug
KaiOBerg Dec 1, 2025
f2e8f90
add pay_vs_dam test function
KaiOBerg Dec 1, 2025
cd7432a
add test objective_function
KaiOBerg Dec 1, 2025
b264001
initiate test script for single country bonds
KaiOBerg Dec 1, 2025
56bee84
fix loop bug and remove simulated years
KaiOBerg Dec 1, 2025
5de50d6
test simulate loss
KaiOBerg Dec 1, 2025
a7305bd
finish tests for single country bonds
KaiOBerg Dec 1, 2025
f7aae42
formatting
KaiOBerg Dec 1, 2025
76b10bc
adjust descriptions
KaiOBerg Dec 1, 2025
f53bc2e
initialize test for premium calculations
KaiOBerg Dec 1, 2025
bcd29f7
format
KaiOBerg Dec 1, 2025
e63caaa
test benchmark sharpe ration function
KaiOBerg Dec 1, 2025
b8b65f1
formatting
KaiOBerg Dec 1, 2025
9434653
update function description
KaiOBerg Dec 1, 2025
bd5b76d
test multi_level_es function
KaiOBerg Dec 1, 2025
a3ca2a0
formatting
KaiOBerg Dec 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions climada_petals/engine/cat_bonds/pay_dam_subarea.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import pandas as pd
import matplotlib.pyplot as plt

import subarea_calculations

class Pay_dam_subarea:
def __init__(self, subareas, index_stat, exhaustion_point, attachment_point):
self.subareas_class = subareas
self.index_stat = index_stat
self.exhaustion_point = exhaustion_point
self.attachment = attachment_point
self._get_pay_vs_dam()

def _get_pay_vs_dam(self):
calculation_class = subarea_calculations.Subarea_Calculations(self.subareas_class, self.index_stat, self.exhaustion_point, self.attachment)
self.pay_vs_dam, self.principal = calculation_class.create_pay_vs_dam()

def plot_pay_vs_dam(self, calculation_class):
tot_exp = calculation_class.exposure.gdf['value'].sum()

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 4))

ax1.scatter(self.pay_vs_dam/tot_exp, payout_flt/tot_exp, marker='o', color='blue', label='Events')
ax1.plot([0, nominal/tot_exp], [0, nominal/tot_exp], color='black', linestyle='--', label='Trendline')
ax1.axhline(y = nominal/tot_exp, color = 'r', linestyle = '-', label='Principal')
ax1.axhline(y = 0.05, color = 'r', linestyle = '-', label='Attachment Point')
ax1.axvline(x = 0.05, color = 'r', linestyle = '--', label='Min. Damage')
ax1.set_xlabel("Damage [share of GDP]", fontsize=12)
ax1.set_ylabel("Payout [share of GDP]", fontsize=12)
ax1.legend(loc='lower right', borderpad=2.0)

ax2.scatter(damages/tot_exp, pay_dam_df['pay']/tot_exp, marker='o', color='blue', label='Events')
ax2.axhline(y = nominal/tot_exp, color = 'r', linestyle = '-', label='Principal')
ax2.axhline(y = 0.05, color = 'r', linestyle = '-', label='Attachment Point')
ax2.axvline(x = 0.05, color = 'black', linestyle = '--', label='Min. Damage')
ax2.set_xscale('log')
ax2.set_xlabel("Damage [share of GDP]", fontsize=12)
ax2.set_ylabel("Payout [share of GDP]", fontsize=12)

panel_labels = ["a)", "b)"]
for i, ax in enumerate([ax1, ax2]):
ax.annotate(panel_labels[i],
xy=(-0.1, 1),
xycoords="axes fraction",
fontsize=14,
fontweight="bold")

plt.tight_layout()
plt.show()
Loading
Loading