File size: 527 Bytes
d763787
 
2f1ce99
 
d763787
2f1ce99
d763787
2f1ce99
d763787
2f1ce99
 
d763787
 
 
2f1ce99
d763787
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def run_backtest(df, initial_capital, vol_target, lookback):

    import numpy as np
    import pandas as pd

    returns = df.pct_change().dropna()

    momentum = df.pct_change(lookback)

    weights = (momentum > 0).astype(int)
    weights = weights.div(weights.sum(axis=1), axis=0).fillna(0)

    strategy_returns = (weights.shift(1) * returns).sum(axis=1)

    equity_curve = (1 + strategy_returns).cumprod() * initial_capital

    return {
        "returns": strategy_returns,
        "equity_curve": equity_curve,
    }