Asteria

About Asteria

Asteria is an application for modelling cashflows and balances. It uses a modular approach, making it very easy to look at variations and scenarios.

This flavour of Asteria models a defined benefit retirement scheme. It shows how Asteria can be used to construct a deterministic model of reasonably complex cash flows. Another flavour models a simple software startup, and shows how Asteria can be used for a stochastic model. Both flavours illustrate Asteria's flexibility and interactive visualisation of results.

Getting started

To get started, go to the Results section of the site to see the Model Runners that have already been defined. You can use an existing one as it is, modify it or create a new one. Click on its run button to see its results, on its edit button to edit it, or on the add button to create a new one.

By the way, you'll only be able to do this if you are logged in, which you can do with any Google id. You don't need to register with this site.

Most pages on the site have Description, Help or other information panels: just click on the words in the blue box to find out more about what is being shown on the page or what actions are possible. Click on them again to hide the information.

Many pages have useful descriptions of what is going on.
Hover the mouse over any button to see what it will do.

Overview

This flavour of Asteria shows one way of modelling a defined contribution retirement scheme.

When a member joins the scheme, they pay a contribution each year until they either:

  • retire
  • die
  • or become disabled

The scheme sponsor (who may, for example, be the member's employer, or the government, or some other body) may also pay contributions in respect of that member. Some proportion of the member's and sponsor's contributions are credited to the member's retirement account, which accumulates at some rate of return.

When the member reaches the scheme's retirement age, they are paid the value of their accumulated retirement account. (They may use the money to buy an annuity, but that is not modelled here).

If the member dies before reaching retirement, the scheme may pay their dependants some benefit: a lump sum, or a pension. If a pension is paid, the model assumes it is paid to the member's spouse, who is the same age and the opposite sex as the member.

If the member becomes disabled before reaching retirement, the scheme might pay them a lump sum, or a disability pension (which is paid until they reach retirement age). They may still be entitled to the accumulated value of their retirement account when they retire, or the disability benefit might replace their retirement benefits.

Chart of cash flows

Asteria models the cash flows of the whole scheme, and of the retirement and risk (ie, death and disability benefits) parts of the scheme separately. It also models the membership of the scheme.

Parameters

The Asteria model is driven by parameters, which you use to define the economic environment in which the scheme operates, the costs it incurs, the demographics of the membership, the scheme sponsor, and, of course, the scheme's benefit structure.

Economic environment

The economic environment is represented by an Economy parameter block, which specifies the inflation rate and investment return.

An Economy represents the economic environment in which the scheme operates. Each Economy must have a Name, so that the Model Runner knows which one to use.

The economic environment has two components: the inflation rate and the real return earned by investments. The inflation rate is specified per year, and is applied to various payments specified in other parts of the model.

There are two ways of specifying the returns earned by investments. If the real return is Level, the investment return in each year is the sum of the inflation rate and the average real return. (The cycle height and length parameters are ignored.)

If the real return is Cyclical, the investment return varies. The average return over the cycle is the sum of the inflation rate and the average real return. The cycle height specifies the extent of the variation, by setting the difference between the maximum and minimum returns: the maximum return is the inflation rate plus the average real return plus half the cycle height. The cycle length specifies the number of years over which the variation occurs.

Costs

The costs incurred by the scheme are represented by a Cost Structure parameter block, which specifies the costs in terms of the scheme's membership, contributions received and benefits paid.

A Cost Structure specifies the costs incurred by the scheme. Each Cost Structure must have a Name, so that the Model Runner knows which one to use.

There are two types of flat rate costs that might be incurred by the scheme: an amount per active member (ie, a fixed amount for each member paying contributions during the year), and an amount per retirement (ie, a fixed amount for each member who retires during the year). Both these amounts are subject to inflation: the level specified in the parameters is the level for the first year of the projection. The per active members costs are assumed to be incurred half way through the year, and the per retirement costs at the beginning of the year.

In addition, costs might be incurred as a proportion of member contributions received by the scheme, or as a proportion of risk benefits paid by the scheme (ie benefits paid on death or disability before retirement). Both these types of cost are assumed to be incurred half way through the year.

Membership

The age, gender, and contribution levels of the members entering the scheme, and the rates at which members die and become disabled, must all be specified. There are several parameter blocks that contribute to the overall picture.

A Decrement table parameter block specifies the rates (by age and gender) at which members are subject to some decrement, such as death or disability.

A Decrement table parameter block specifies the rates (by age and gender) at which members are subject to some decrement, such as death or disability. However, it does not specify which decrement the rate apply to — that's done in the Decrement package parameter block.

Each Decrement table must have a Name, so that the Decrement package knows which one to use.

The rates in a Decrement table are constructed from the rates in a Base table. There are several base tables available, including one that has uniform decrement rates of 1% per year for all ages and both genders.

The base rates can be adjusted for age, multiplied by a fixed factor, and may change over time.

The age rating adds a number of years to the member's actual age. For example, with an age rating of 5, the rate that is used for a member aged 50 would be the base table rate for age 55. The scaling factor is a multiple that is applied to the base rate. For example, if the base rate is 1%, and there is a scaling factor of .9, the rate that is used is .09.

The Improvement rate specifies how the rates change over time. The rates in the base table are assumed to apply in the Base year. After that, the base rates improve by the specified rate each year. For example, if the base rate for a particular age and gender is 1% in 2011, and the improvement rate is 2%, the rate in 2012 would be 0.98%.

A Decrement package parameter block specifies the mortality and disability decrements for the scheme membership.

A Decrement package parameter block specifies the mortality and disability rates that should be used in the projection. A Decrement table must be specified for each of the following:

  • Active mortality: rates for a member dying before retirement
  • Survivor mortality: rates for the recipient of a survivor's pension dying
  • Disabled mortality: rates for a disabled member dying
  • Disability: rates for a member becoming disabled before retirement

Each Decrement package must have a Name, so that the Model runner knows which one to use.

Decrement rates are applied to the number of members in existence at the beginning of year, and each member can only undergo one decrement a year. Retirement counts as a decrement for this purpose, and happens before death or disability. For example, if the retirement age of the scheme is 65, there are 100 members aged 64 at the beginning of the year, and the mortality rate for age 64 is 2%, and the disability rate 1%, then 2 members will die during the year, and 1 will become disabled, leaving 97 at the end of the year. In the following year all 97 will retire: none of them will die or become disabled.

A Joining pattern parameter block describes how the numbers of members of a particular type joining the scheme vary by time.

A Joining pattern specifies a pattern for members joining the scheme. The members that it applies to are specified in a Membership pattern parameter block. Each Joining pattern must have a Name, so that the Membership pattern knows which one to use.

A Joining pattern consists of one or more Changes. Each Change contains a year and a proportion of maximum joiners. The maximum number of joiners of a particular type of member is specified in a Membership pattern parameter block. The Joining pattern specifies, for each year, how many members of that type will join the scheme. The proportions are linearly interpolated between the specified years.

For example, a Joining pattern with just a single change, specifying a year of 1 and a proportion of 1.0, would mean that from year 1 onwards the maximum number would join. A Joining pattern with three changes: a proportion of .5 at year 1, 1.0 at year 3, and .5 at year 5, would have the following proportions join in each year:

Year Proportion
1 0.50
2 0.75
3 1.00
4 0.75
5 0.50
6 0.50
7 0.50

The types of members joining the scheme are described by Member parameter blocks.

The types of members joining the scheme are defined by Member parameter blocks. Each Member must have a Name, so that the Membership pattern parameter block, which ties together Members and Joining patterns, knows which one to use.

Each Member has a Gender (male or female) and the Age at which they enter the scheme.

Their Initial contribution level is the amount of their contribution in the year that they join the scheme, assuming that they join in the first year of the projection. If they join in later years, their contribution level in the year that they join is calculated by inflating the specified amount. For example, a Member with an Initial contribution level of 100 who joins the scheme in the second year of the projection would make a contribution of 103 in that year, if the inflation rate is 3%.

The rate of Real contribution growth is the rate at which the contributions grow in addition to the inflation rate after joining the scheme. In our example, if the Real contribution growth is 2%, the contributions in the third year of the projection would be 108.15 — 103 increased by 5%.

It is assumed that member contributions are paid to the scheme half way through the year.

A Membership pattern parameter block ties together the Joining patterns and Members to specify the membership composition of the scheme.

The composition of the membership of a scheme is specified by a Membership pattern parameter block, which ties together Joining patterns and Members. Each Membership pattern must have a Name, so that the Model runner knows which one to use.

A Membership pattern consists of one or more combinations of a Member, Maximum joiners, and Joining pattern. Each combination specifies how members of that type join the scheme: the Joining pattern is applied to the Maximum joiners to determine how many members of that type join the scheme in each year.

The scheme sponsor is represented by a Sponsor parameter block, which specifies the sponsor's contributions to the scheme.

The scheme sponsor is represented by a Sponsor parameter block, which specifies the sponsor's contributions to the scheme. Each Sponsor must have a Name, so that the Model runner knows which one to use.

There are two types of contribution that a Sponsor might make: matching contributions, which are linked to the members' contributions, and special contributions, which are made only in the first few years of the scheme's existence.

The extent to which the Sponsor matches members' contributions is specified by the Matching rate and Matching ceiling. A Matching rate of 1.0 means that the Sponsor will match 100% of members' contributions up to the specified ceiling. For example, if the matching rate is 0.5 and the matching ceiling is 100, and a member contributes 80 during the year, then the sponsor will contribute 40 (50% of the member's contributions). However, if a member contributions 120, the sponsor will only contribute 50 — ie, 50% of the ceiling.

The Sponsor may also contribute a fixed sum for the first few years of the scheme's existence. This amount is not subject to inflation.

Both matching and special contributions are assumed to be paid half way through the year.

Benefits

A Payment amount parameter block defines the amount of a lump sum or pension payment that may be made.

A Payment amount parameter block defines the amount of a lump sum or pension payment that may be made. Each Payment amount must have a Name, so that the parameter blocks that define the benefits know which one to use.

The payment may be specified as a flat rate amount, or as a multiple of the retirement account, contributions or pension. For example, a lump sum payable on death before retirement could be a multiple of the retirement account or a multiple of recent contributions made by the member. A pension payable to a survivor on the death of a disabled member could be a flat rate, or a multiple of the disability pension.

If the payment is a flat rate, inflation will be applied to the specified amount. If the payment is a multiple of contributions, the relevant contributions (as specified in the risk package parameter block) will be used.

The multiple is ignored for flat rate payments, and the amount is ignored for payments that are multiples of the retirement account, contribution or pension.

A Death package parameter block defines the benefits that are payable when a member dies before reaching retirement.

A Death package parameter block defines the benefits that are payable when a member dies before reaching retirement. Each Death package must have a Name so that the Model runner knows which one to use.

The benefits that are paid on the death of a member depend on how long the member has been in the scheme, and in particular on whether the vesting period has expired. The vesting period is defined in the Risk package parameter block, as it affects both death and disability benefits.

When a member dies after the expiry of the vesting period, the scheme may pay a pension to their spouse. It is assumed that each member has one spouse, who is the same age but the opposite gender. The annual amount of pension is defined by a Payment amount parameter block. The pension is inflated during payment, and is assumed to be paid half way through each year.

The scheme may also pay a lump sum amount on the death of a member. The amount paid on death after the expiry of the vesting period may be different to the amount paid on death during the vesting period. Lump sums are paid at the beginning of the year.

A Disability package parameter block defines the benefits that are payable when a member becomes disabled before reaching retirement.

A Disability package parameter block defines the benefits that are payable when a member becomes disabled before reaching retirement. Each Disability package must have a Name so that the Model runner knows which one to use.

The benefits that are paid when a member becomes disabled depend on how long the member has been in the scheme, and in particular on whether the vesting period has expired. The vesting period is defined in the Risk package parameter block, as it affects both death and disability benefits.

When a member becomes disabled after the expiry of the vesting period, the scheme may pay them a pension. The annual amount of pension is defined by a Payment amount parameter block. The pension is not inflated during payment, and is assumed to be paid half way through each year. It is paid until the member reaches retirement age, when the member is paid the accrued value in their retirement account.

The scheme may also pay a lump sum amount when a member becomes disabled. The amount paid after the expiry of the vesting period may be different to the amount paid during the vesting period. Lump sums are paid at the beginning of the year.

In addition, contributions may be made to the member's retirement account as a percentage of the disability pension or vested lump sum.

A Risk package parameter block defines which death and disability packages are used.

A Risk package parameter block defines which death and disability packages are used, and a couple of parameters that apply to both. Each Risk package must have a name, so that the Model runner knows which one to use.

  • Vesting period: different risk benefits are payable depending on whether the death or disability occurs within the specified number of years of the member joining the scheme.
  • Relevant contributions: some risk benefit payment amounts may be specified in terms of a multiple of contributions. If so, the contributions to which the multiple is applied are those made within the specified number of years before the occurrence of the death or disability.
  • Death benefits: a package of benefits payable on death before retirement.
  • Disability benefits: a package of benefits payable on disability before retirement.

A member's Retirement account is made up of the accumulated contributions from the member and scheme sponsor. It is paid out to the member when they reach the scheme's retirement age.

A member's Retirement account is made up of the accumulated contributions from the member and scheme sponsor. Each Retirement account parameter block must have a Name, so that the Model runner knows which one to use.

The accumulated value of the member's retirement account is paid out to the member when they reach the scheme's retirement age. It is paid at the beginning of the year.

The investment proportion is the proportion of total contributions credited to the retirement account (the remainder goes towards the risk benefits and the administration costs of the scheme).

There are two methods of defining the way in which a member's retirement account accumulates: using the actual or smoothed investment returns. The actual investment returns are specified by the economic assumptions.

If smoothed returns are used to accumulate the retirement account, the rate of return credited each year cannot be less than the specified minimum return (this is the minimum total return — inflation plus real return), and is at most the specified percentage of the actual return.

There is a ceiling on the amount a member is permitted to contribute to the scheme each year, specified by the maximum contribution. This ceiling is subject to inflation.

Model

A Model runner parameter block ties all the other parameters together.

A Model runner parameter block ties all the other parameters together. It also specifies two parameters that affect the model as a whole.

The following must be specified:

  • Simulation duration: the number of years in the projection
  • Start year: the first year for the projection

Features

An Asteria cash flow model is an ideal way to give your clients a tool that they can use to explore different scenarios.

  • It's easy to change model parameters, and to switch different options on and off
  • You can give each client a dedicated website that lets them use their own model
  • It's easy to control what version of the model they are using — no more reliance on old versions
  • Results can be archived by locking the model parameters, giving an effective audit trail
  • Intuitive user interface
  • Interactive graphs
  • Easy to compare results and parameters
  • Deterministic and stochastic models

Services

We offer the following services to help you get the best out of Asteria

  • Custom frameworks for any cash flow modelling problem
  • Detailed models
  • Full modelling service
  • Training
  • Custom extensions