INNER CODE UNIT · Python

desired

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

            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])
                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)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…