Tiered Accounts

Recall that the amount and accumulation functions are often related by the property:

A_K(t) = Ka(t)

This is not always the case. An example where this relationship does not hold is the tiered investment account. A tiered investment account is one that offers different interest rates at different balances. For example, the following interest rate schedule determines what interest rate is paid according to the account balance:

Required Minimum Balance

Interest Rate

0

1%

10,000

2%

20,000

3%

This means that the account pays 1% interest when the balance is less than 10,000. Once that balance grows to 10,000, the account starts paying 2%. When it hits 20,000, the account starts paying 3%.

Examples

TmVal’s TieredBal class offers a way to model this type of account. You simply supply the tiers and rates. Let’s do this using the above table:

In [1]: from tmval import TieredBal

In [2]: my_tiered_bal = TieredBal(
   ...:     tiers=[0, 10000, 20000],
   ...:     rates=[.01, .02, .03]
   ...: )
   ...: 

TieredBal is a growth pattern that can be supplied to the Amount class, which you can then use to access its methods. If we invest 18,000 today, to what value does it grow after 10 years?

In [3]: from tmval import Amount

In [4]: my_amt = Amount(gr=my_tiered_bal, k=18000)

In [5]: print(my_amt.val(10))
22966.846915945713

You can also use TieredBal to find the times at which you would expect the interest rate to jump, given an initial investment. We do this by calling the method get_jump_times(). Assuming no future contributions, how long will it take to hit 2% and 3% interest?

In [6]: print(my_tiered_bal.get_jump_times(k=5000))
[69.66071689357483, 104.66350567472134]

It will take almost 70 years to reach 2%, and about 105 years to reach 3%. That’s a long time!

TmVal also offers the TieredTime class, where the interest rate paid varies by the length of time the account is held:

Required Minimum Time

Interest Rate

0 years

1%

1 year

2%

2 years

3%

This means, the account pays 1% during the first year, 2% during the second year, and 3% for subsequent years. Let’s model this in TmVal, and find out how much 18,000 grows after 10 years:

In [7]: from tmval import TieredTime

In [8]: my_tiered_time = TieredTime(
   ...:     tiers=[0, 1, 2],
   ...:     rates=[.01, .02, .03]
   ...: )
   ...: 

In [9]: my_amt = Amount(gr=my_tiered_time, k=18000)

In [10]: print(my_amt.val(10))
23490.4776812194