INNER CODE UNIT · Python
borrow
shashankvemuri/Finance · src/finance/backtesting/engine.py:168
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])
if not side:
continue
stop = entries[j] * (1 - side * stop_loss) if stop_loss else None
if trailing_fraction:
trail = extremes[j] * (1 - side * trailing_fraction)
stop = (
trail
if stop is None
else (max(stop, trail) if side > 0 else min(stop, trail))
)
profit = entries[j] * (1 + side * take_profit) if take_profit else None