Skip to main content

Elizur is an open source finance package for actuaries, finance professionals, and students

Project description

elizur.

License: GPL v3 Build Status PyPI version Coverage Status Code style: black

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 only on the Python 3 standard library and NumPy 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.2.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

elizur-0.2.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: elizur-0.2.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.2

File hashes

Hashes for elizur-0.2.0.tar.gz
Algorithm Hash digest
SHA256 de646866edf4ed7cd409c4ca2fb0b705ae391ecc4808c6416aaf0ff5335b0857
MD5 5d1d1574d57c6004587f364780877b60
BLAKE2b-256 361eebe5f0599431a6fae29684d28a4e4619cdbc4597d637df0e1d1b23530a6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: elizur-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.2

File hashes

Hashes for elizur-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 39ff01162e3d8fa2e96a3346bb4f27958c14380e809f078618e6a2a6dcc5eae5
MD5 390a709d596530ccfd756f44a68f80f2
BLAKE2b-256 762c14fd61eab69759b417711f1cb7a0a0b794db832d0e7764cd0eb462b4afcd

See more details on using hashes here.

Supported by

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