fix(analytics): нереалистичная годовая доходность не валит пересчёт метрик
XIRR за несколько дней истории даёт артефакт солвера за ±100 000 000 %, который переполнял NUMERIC(24,10) и ронял весь refresh. Такое значение теперь считается «нет ответа».
This commit is contained in:
@@ -119,3 +119,15 @@ def test_period_start(period: str, expected: date | None):
|
||||
def test_months_back_clamps_to_a_shorter_month():
|
||||
assert months_back(date(2026, 3, 31), 1) == date(2026, 2, 28)
|
||||
assert months_back(date(2026, 1, 15), 13) == date(2024, 12, 15)
|
||||
|
||||
|
||||
def test_a_rate_no_column_could_hold_is_no_answer():
|
||||
# doubling in one day annualises to 2**365 - 1: arithmetically right, and not a return
|
||||
assert xirr([day(0), day(1)], [D("-1000"), D("2000")]) is None
|
||||
|
||||
|
||||
def test_a_large_but_plausible_rate_is_kept():
|
||||
# +10 % in a month is roughly +214 % a year
|
||||
rate = xirr([day(0), day(30)], [D("-1000"), D("1100")])
|
||||
assert rate is not None
|
||||
assert D("2.0") < rate < D("2.3")
|
||||
|
||||
Reference in New Issue
Block a user