INNER CODE UNIT · Python

residual

shashankvemuri/Finance · src/finance/backtesting/engine.py:147

            def residual(equity, target=target, price=price, equity_at_open=equity_at_open):
                quantity = target * equity / price - shares
                fill = price * (1 + np.sign(quantity) * slippage)
                costs = np.sum(quantity * (fill - price) + np.abs(quantity) * fill * commission)
                return equity + costs - equity_at_open

            if residual(0) > 0:
                raise ValueError(f"costs exceed equity at {timestamp}")
            lower, upper = 0.0, equity_at_open
            for _ in range(60):
                middle = (lower + upper) / 2
                if residual(middle) > 0:
                    upper = middle
                else:
                    lower = middle
            desired = target * ((lower + upper) / 2) / price
            execute(desired - shares, price, timestamp, opens.index[i - 1] if i else pd.NaT, "open")
        prior_target = source_target.copy()

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…