parameters = [
Parameter(
name='gross_interest_rate',
shape=NumberShape(
kind=NumberKind.PERCENTAGE, min_value=0, max_value=1, step=0.01),
level=Level.TEMPLATE,
description='Gross Interest Rate',
display_name='Rate paid on positive balances',
),
]
def _accrue_interest(vault, end_of_day_datetime):
denomination = vault.get_parameter_timeseries(name='denomination').latest()
# Get the balance at the end of the previous day
balances = vault.get_balance_timeseries().at(timestamp=end_of_day_datetime)
effective_balance = balances[(DEFAULT_ADDRESS, DEFAULT_ASSET, denomination, Phase.COMMITTED)].net
gross_interest_rate = vault.get_parameter_timeseries(
name='gross_interest_rate'
).before(timestamp=end_of_day_datetime)
daily_rate = gross_interest_rate / 365
daily_rate_percent = daily_rate * 100
amount_to_accrue = _precision_accrual(effective_balance * daily_rate)
# Your code goes here.
def _precision_accrual(amount):
return amount.copy_abs().quantize(Decimal('.00001'), rounding=ROUND_HALF_UP)