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)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…