ifrs17sim IFRS waterfall chart

The script draws multiple waterfall charts, each of which depict sources of changes in balances related to IFRS17. The script is broken down into pieces of code, and explained in a Jupyter notebook, IFRS17 Simulation (Baseline).

The live version of the notebook is available online.

Launch this notebook online! launch binder

  • ../../_images/sphx_glr_plot_ifrs_waterfall_001.png
  • ../../_images/sphx_glr_plot_ifrs_waterfall_002.png
  • ../../_images/sphx_glr_plot_ifrs_waterfall_003.png
  • ../../_images/sphx_glr_plot_ifrs_waterfall_004.png

Out:

Started loading data from 'input.xlsx'.
Loading PolicyData...Done. (0.50secs)
Loading MortalityTables...Done. (0.28secs)
Loading ProductSpec...Done. (0.28secs)
Loading OtherParam1...Done. (0.24secs)
Loading OtherParams2...Done. (0.23secs)
Loading Assumption...Done. (0.26secs)
Loading AssumptionTables...Done. (0.48secs)
Loading Scenarios...Done. (0.27secs)
Input space and its sub spaces are saved in '[project name].mx'.
You can load input data from the saved file instead of 'input.xlsx'
by passing 'load_saved=True' to simplelife.build function.

import matplotlib.pyplot as plt
from draw_charts import draw_waterfall, get_waterfalldata

try:
    import ifrs17sim.ifrs17sim as ifrs17sim
except ImportError:
    import ifrs17sim

model = ifrs17sim.build()
proj = model.OuterProj[1]

# CSM Amortization

csmrf = get_waterfalldata(
            proj,
            items=['CSM',
                   'IntAccrCSM',
                   'AdjCSM_FlufCF',
                   'TransServices'],
            length=3,
            reverseitems=['TransServices'])

draw_waterfall(csmrf, title='CSM Amortization')

# Expected Cashflow Rollforwad

estcf = get_waterfalldata(
            proj,
            items=['PV_FutureCF',
                   'EstPremIncome',
                   'EstIntOnCF',
                   'EstAcqCashflow',
                   'EstClaim',
                   'EstExps'],
            length=3,
            reverseitems=['EstPremIncome'])

draw_waterfall(estcf, title='Expected Cashflows')

# Actual Cashflow Rollforward

actcf = get_waterfalldata(
            proj,
            items=['PremIncome',
                   'IntAccumCF',
                   'ExpsAcqTotal',
                   'BenefitTotal',
                   'ExpsMaintTotal',
                   'ActualNetCF'],
            length=3,
            reverseitems=['ExpsAcqTotal',
                          'BenefitTotal',
                          'ExpsMaintTotal'])

draw_waterfall(actcf, stocks=[0, 5], title='Actual Cashflows')

# IFRS17 Financial Performance

ifrspl = get_waterfalldata(
            proj,
            items=['InsurRevenue',
                   'InsurServiceExps',
                   'InsurFinIncomeExps',
                   'ProfitBefTax'],
            length=5,
            reverseitems=['InsurServiceExps'])

draw_waterfall(ifrspl, stocks=[0, 3], title='IFRS17 Profit/Loss')

Total running time of the script: ( 0 minutes 4.841 seconds)

Gallery generated by Sphinx-Gallery