Skip to main content

Elizur is a finance library for actuaries, finance professionals, and students

Project description

elizur.

License: GPL v3 CI PyPI version codecov Ruff

Elizur is an open source finance package for actuaries, finance professionals, and students. The package currently helps with calculating annuity present values, annuity future values, cash flow expected present values, and life contingencies. Elizur depends on NumPy and Polars at runtime. The project is named after Elizur Wright.

If you like Elizur, support the project by clicking the :star: above!

Requirements

Install

pip install elizur

Documentation

Read the library documentation here

Examples

All calculations accept a single numeric type or iterable (including numpy arrays) as input

Given an interest rate calculate a discount factor

>>> import elizur.life.annuity as ann
>>> ann.discount_factor(0.07)
0.9345794
>>> ann.discount_factor([0.07, 0.06])
array([0.93457944, 0.94339623])

Given a term and interest rate calculate the present value of an annuity

>>> import elizur.life.annuity as ann
>>> ann.annuity_pv(n=10, i=0.07)
7.023581540932602
>>> ann.annuity_pv(n=[10, 20], i=[0.07, 0.08])
array([7.02358154, 9.81814741])

Given a term and interest rate calculate the present value of an annuity increasing by one each period

>>> import elizur.life.annuity as ann
>>> ann.increasing_annuity_pv(n=10, i=0.07)
34.73913324929581
>>> ann.increasing_annuity_pv(n=[10, 20], i=[0.07, 0.08])
array([34.73913325, 78.90793815])

Given cash flows, probabilities, and interest rates calculate the expected present value

>>> from elizur.life import expected_present_value
>>> expected_present_value(
>>>    cash_flows=(10, 11, 12),
>>>    probabilities=(0.99, 0.98, 0.97),
>>>    interest_rates=(0.05, 0.06, 0.07)
>>> )
28.88814436019514
>>> expected_present_value(
...     cash_flows=(
...         (10, 11, 12),
...         (13, 14, 15)
...     ),
...     probabilities=(
...         (0.99, 0.98, 0.97),
...         (0.96, 0.95, 0.94)
...     ),
...     interest_rates=(
...         (0.05, 0.06, 0.07),
...         (0.08, 0.09, 0.10)
...     )
... )
array([28.88814436, 33.74225435])

Given a mortality table calculate life contingencies and probabilities

>>> from elizur.life.table import LifeTable, EXAMPLE_TABLE
>>> life_table = LifeTable(EXAMPLE_TABLE)
>>> life_table.qx(0)
0.006271
>>> life_table.qx(77)
0.036094
>>> life_table.tqxn(3, 2, 77)
0.08770141840040623
>>> life_table.Ax(0, 0.07)
0.01562517028789102
>>> life_table.IAxn(0, 0.07, 30)
0.04871771529491165
>>> life_table.ax(0, 0.07)
14.046872397027947
>>> life_table.axn_due(0, 0.07, 30)
13.173054007415931

Import a mortality table in a specific SOA CSV format and perform life contingency calculations. Download a mortality table in csv format from the SOA here. This example uses the first table, 1941 CSO Basic Table ANB.

>>> from elizur.life.util import read_soa_csv_mort_table
>>> from elizur.life.table import LifeTable
>>> mort_table = read_soa_csv_table("1941_cso_basic_table_anb.csv")
>>> life_table = LifeTable(mort_table["values"])
>>> life_table.qx(77)
0.10364
>>> life_table.Ax(0, 0.07)
0.03800673925889163

There are many other possibilities. Check out the reference section of the docs for a full list of functionality.

Contributing

Checkout the contributing guide here if you'd like to contribute code or raise issues here.

Project details


Download files

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

Source Distribution

elizur-0.3.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

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

elizur-0.3.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file elizur-0.3.0.tar.gz.

File metadata

  • Download URL: elizur-0.3.0.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elizur-0.3.0.tar.gz
Algorithm Hash digest
SHA256 609570a1f79ca96352f7c7a37032d21be4ecae99b7dead17e3a38116f08343a5
MD5 16d765bf3d10be4c511cc4fa7396448e
BLAKE2b-256 0e53ac0136501ed42c1f3fbf17b8321f6ec53fe90ac4d42b0651a4d01c3e2486

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizur-0.3.0.tar.gz:

Publisher: publish-pypi.yml on trollefson/elizur

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elizur-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: elizur-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elizur-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ab3866358d80cddc20d1f5c3aac99257800bf1ebb0a32117689a130d73d79f4
MD5 78d3407a596aa13ddb59562742e6e849
BLAKE2b-256 1e1edb460cf7e8109cec9c6ace9cc1ff4c3c571afce7d101f49da27fae3b2f97

See more details on using hashes here.

Provenance

The following attestation bundles were made for elizur-0.3.0-py3-none-any.whl:

Publisher: publish-pypi.yml on trollefson/elizur

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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