.. module:: fastlife
.. _project_fastlife:
Project **fastlife**
======================
.. include:: /banners.rst
:start-after: Begin modelx badge
:end-before: End modelx badge
|modelx badge|
This project includes the **fastlife** model. The firstlife model
calculates the present values of the net insurance cashflows.
The calculation results are the same as the model in :doc:`simplelife`.
However, the fastlife model
carries out the calculations for all model points in parallel at the same time,
while the calculations in the simplelife model are done separately for
each model point. Because the parallel processing is
The values of most Cells for projecting cashflows are `pandas Series`_ objects
that contain calculation results for all model points::
>>> fastlife.Projection.PV_NetCashflow(0)
Policy
1 8.954018e+03
2 7.511092e+03
3 9.173907e+03
4 7.638071e+03
5 9.418541e+03
...
296 2.599794e+06
297 2.298079e+06
298 2.557191e+06
299 2.242406e+06
300 2.510715e+06
Length: 300, dtype: float64
fastlife runs faster than simplelife thanks to powerful vector operations
on `pandas Series`_.
The blog posts on https://modelx.io/blog linked below discuss the background
and performance of fastlife.
**Related posts**
* `modelx blog: Introduction to fastlife and parallel modeling `_
* `modelx blog: fastlife got faster `_
.. _pandas Series:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html
How to use the project
-----------------------
Create a project folder from IPython in Spyder.
as explained in :ref:`create-a-project` section.
Read the model in Spyder
by following the steps in :ref:`read-a-model` section.
The model become accessible
as ``fastlife`` global variable
in the IPython console in Spyder.
There is no explicit 'Run' command to run the model. The model calculates its values on the fly, when requested.
Model structure
---------------
Composition Structure
^^^^^^^^^^^^^^^^^^^^^
The diagram below shows the spaces in the fastlife model.
.. blockdiag::
blockdiag {
default_node_color="#D5E8D4";
default_linecolor="#628E47";
node_width=150;
fastlife [shape=roundedbox, linecolor="#7B99C5", color="#D4E8FC", width=96]
fastlife <- Projection [hstyle=composition];
Projection <- Assumptions [hstyle=composition];
Projection <- Policy [hstyle=composition];
fastlife <- PV
Econ[label="Economic[ScenID]", stacked];
fastlife <- Econ[hstyle=composition];
LifeTable [label="LifeTable\n[Sex, IntRate, TableID]", stacked];
fastlife <- LifeTable [hstyle=composition];
fastlife <- Input [hstyle=composition];
PV[style=dotted]
}
Inheritance Structure
^^^^^^^^^^^^^^^^^^^^^
.. blockdiag::
blockdiag {
default_node_color="#D5E8D4";
default_linecolor="#628E47";
PV[style=dotted]
PV<- Projection [hstyle=generalization];
}
Jupyter Notebooks
-----------------
A live version of the Jupyter notebook below is available online,
thanks to Binder.
*Launch this sample now!*
* Introduction to fastlife |binder fastlife_introduction|
.. include:: /banners.rst
:start-after: Begin binder banner
:end-before: End binder banner
.. toctree::
fastlife-introduction
Space Details
-------------
.. autosummary::
:toctree: generated/
:template: llmodule.rst
~model.Input
~model.LifeTable
~model.Economic
~model.PV
~model.Projection
~model.Projection.Policy
~model.Projection.Assumptions