Python

accumulate: منحنی equity و حداکثر drawdown

جمع‌های تجمعی با itertools.accumulate: جمع جاری برای منحنی سرمایه، بیشینه‌ی جاری برای سقف‌ها، و drawdown از تفاضل این دوتا.

کاربرد

حساب کردن max drawdown از یه سری P&L روزانه بدون pandas و numpy.

پیش‌نیازها

Python 3.9+

Python
from itertools import accumulate

pnl_journalier = [120.5, -80.0, 45.2, -210.0, 95.0]

# Equity curve : cumul des P&L à partir du capital initial
equity = list(accumulate(pnl_journalier, initial=10_000))

# Plus haut historique (running max) pour calculer le drawdown
peaks = list(accumulate(equity, max))
drawdowns = [e - p for e, p in zip(equity, peaks)]

max_dd = min(drawdowns)
print(f"Max drawdown : {max_dd:.2f}")

نتیجه

>>> equity
[10000, 10120.5, 10040.5, 10085.7, 9875.7, 9970.7]
>>> [round(d, 2) for d in drawdowns]
[0, 0.0, -80.0, -34.8, -244.8, -149.8]

Max drawdown : -244.80
itertoolsaccumulateFinanceDrawdown

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده