INNER CODE UNIT · Python
middle
shashankvemuri/Finance · src/finance/backtesting/engine.py:157
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()
new_position = (shares != 0) & (np.sign(shares) != np.sign(previous_shares))
entries[new_position] = price[new_position] * (1 + np.sign(shares[new_position]) * slippage)
extremes[new_position] = entries[new_position]
borrow = np.maximum(-shares, 0) @ price * borrow_rate / periods
cash -= borrow
borrow_total += borrow
if protective:
high, low = highs.iloc[i].to_numpy(), lows.iloc[i].to_numpy()
for j in range(len(shares)):
side = np.sign(shares[j])