Is anyone aware of a free tool that can produce a table of life annuity factors?
I know the SOA has an annuity factor calculator but it only produces a single factor at a time. I am looking for something that would allow me to generate a table for multiple ages without having to create my own.
I’ve created my own tools from first principles that loop through various ages and mortality/interest assumptions using vba. It was a bit time consuming but it was a useful project for my job. I suppose those are considered proprietary since I made them on company resources.
I’d be happy to create a spreadsheet for you with factors - but I’d charge you in advance for it. The software to generate it is expensive. As is the time involved to have it checked and properly documented.
Thanks for the offer. I am not looking for a table of factors, I am looking for a tool to create the factors.
I can build one myself from first principles like NA (if needed before I get around to buying the software that does it for me), but figured I would see if there was something that could make my life easier.
Here is a Julia script that will calculate annuity factors using JuliaActuary packages using any mortality table or rates that you want:
using MortalityTables
using LifeContingencies
using DataFrames
# pick any table name from mort.soa.org
table_name = "2001 VBT Residual Standard Select and Ultimate - Male Nonsmoker, ANB"
# load the table
mortality = MortalityTables.table(table_name)
age_range = 20:80
yield_range = 0.01:0.0025:0.06
# map over the ages and rates to calculate the annuity factors
factors = map(Iterators.product(age_range,yield_range)) do (age,rate)
# create a life contingency which is the combination of a life (or JointLife)
# and a yield (can be a curve, but this example uses a single rate)
lc = LifeContingency(
SingleLife(mort = mortality.select, issue_age = age),
rate
)
(
age = age,
yield = rate,
ä = LifeContingencies.ä(lc), # can be type with `a + \ddot[tab]`
a = LifeContingencies.a(lc),
)
end
# convert into a dataframe. `vec` converts the multi-dimensional factor array into a vector
DataFrame(vec(factors))
Run the code above by copy and pasting the code above or putting this url in the welcome screen: https://gist.githubusercontent.com/alecloudenback/2e36a1aa6fc66ca30457c86a52019f92/raw/2536736804a40aca0e08b75c30be82a697961c4f/annuity_factors.jl