Skip to main content

codecov

heavylight

A lightweight actuarial modelling framework for Python

  • single script
  • installation optional: package with your models.
  • only depends on pandas and numpy

Components

Model:

  • projection controller
  • class to subclass with your proprietary models
  • BeforeRun and AfterRun methods
  • get all values as a list with values attribute
  • get the sum of all values with sum() method

Table:

  • simple long format table object
  • type information encoded via |int, |int_bound, |band, |str header suffixes

Usage

Model Class

Create your model as a subclass of heavylight.Model. Each model variable is defined as a method:

import heavylight

class Annuity(heavylight.Model):
    def t(self, t):
        return t

    def expected_claim(self, t):
        return self.number_alive(t) * self.data["annuity_per_period"]

    def number_alive(self, t):
        if t == 0:
            return self.data["initial_policies"]
        else:
            return self.number_alive(t - 1) - self.deaths(t - 1)
    
    def deaths(self, t):
        return self.number_alive(t) * self.mortality_rate(t)

    def mortality_rate(self, t):
        return 0.02

    def v(self, t):
        """discount factor from time t to time 0"""
        if t == 0:
            return 1
        else:
            return self.v(t - 1) / (1 + self.forward_rate(t))
    
    def forward_rate(self, t):
        return 0.04

    def pv_expected_claim(self, t):
        return self.expected_claim(t) * self.v(t)

Define input data as a dictionary

policy_data = {
    "initial_policies": 10,
    "annuity_per_period": 55,
}

Call the model, passing in the data dictionary, with a projection length of 20.

model = Annuity(data = policy_data,
                do_run = True,
                proj_len = 20,
                )

Get the sum of pv_expected_claim:

print(model.pv_expected_claim.sum())

Display result as a pandas table

model_cashflows = model.ToDataFrame()

Notes

  • This package is designed for projecting actuarial variables, and calculates t=0, 1... in order.

  • Actuarial models are generally highly recursive.

  • If you create a method which refers to future t value (such as an NPV function) you may hit the python stack limit.

  • The recommended solution is to project forward first, and then calculate T0 metrics based on the result, for example using an `npv()`` function

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heavylight-1.0.11.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

heavylight-1.0.11-py3-none-any.whl (395.5 kB view details)

Uploaded Python 3

File details

Details for the file heavylight-1.0.11.tar.gz.

File metadata

  • Download URL: heavylight-1.0.11.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.20

File hashes

Hashes for heavylight-1.0.11.tar.gz
Algorithm Hash digest
SHA256 4d5612059e03ab5e108b2ad11804e74e885f7d7b4e28221a763f35ef36f37ed9
MD5 aae8d7a014d2a85d40aa49a472efd6d0
BLAKE2b-256 b5352d0e4415cede5cd39422740f991e7dfc1f0377f0518a88c8589a87d771f9

See more details on using hashes here.

File details

Details for the file heavylight-1.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for heavylight-1.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 bee036340f2aa79896565ce0845f5fc7fff344239e1489397b337477dc06e632
MD5 fe56d51f3a252de12e4a1c57d1772419
BLAKE2b-256 6d3a92a1e9c14adcea2bf0e95c3f788f97c54a08551862d522c0c235aac75777

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.11 This release

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page