INNER CODE UNIT · Python
i
shashankvemuri/Finance · src/finance/backtesting/engine.py:209
if liquidate and i == len(opens) - 1:
execute(-shares.copy(), close, timestamp, pd.NaT, "final_close")
equity = cash + shares @ close
if equity <= 0:
raise ValueError(f"account insolvent at {timestamp}; performance is undefined")
cash_rows.append(cash)
equity_rows.append(equity)
holding_rows.append(shares.copy())
equity = pd.Series(equity_rows, index=opens.index, name="equity")
cash_curve = pd.Series(cash_rows, index=opens.index, name="cash")
account_returns = equity.pct_change(fill_method=None)
account_returns.iloc[0] = equity.iloc[0] / initial_cash - 1
benchmark = pd.Series(
(initial_cash / opens.shape[1] / open_values[0]) @ close_values.T,
index=opens.index,
name="benchmark",
)
metrics = performance(account_returns, periods)