INNER CODE UNIT · Python

as_frame

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

    def as_frame(data):
        return data.to_frame("asset") if isinstance(data, pd.Series) else data

    opens, closes, targets = (
        frame(as_frame(open_prices), positive=True),
        frame(as_frame(close_prices), positive=True),
        frame(as_frame(targets)),
    )
    if not opens.index.equals(closes.index) or not opens.index.equals(targets.index):
        raise ValueError("open, close and target timestamps must match exactly")
    if not opens.columns.equals(closes.columns) or not opens.columns.equals(targets.columns):
        raise ValueError("open, close and target asset columns must match exactly")
    if len(opens) < 2 or (targets.abs().sum(axis=1) > 1 + 1e-12).any():
        raise ValueError("require at least two bars and gross targets <= 1")
    finite(initial_cash, "initial_cash", minimum=np.finfo(float).tiny)
    for name, cost in [
        ("commission", commission),
        ("slippage", slippage),

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…