Repository Public
1"""Long/short time-series momentum on perpetuals: long an asset whose past return is positive, short otherwise."""23import numpy as np45META = {6 "name": "ts_momentum_perp",7 "version": "1",8 "kind": "perp",9 "universe": ["BTC", "ETH", "SOL", "HYPE"],10 "interval": "1h",11 "lookback": 400,12 "max_leverage": 2.0,13 "max_gross_exposure": 2.0,14 "params": {"window": 168, "gross": 1.0},15}161718def target_weights(data, params):19 window, gross = int(params["window"]), float(params["gross"])20 n = len(data)21 weights = {}22 for symbol, df in data.items():23 close = df["close"].to_numpy()24 if window < 1 or len(close) < window + 1:25 weights[symbol] = 0.026 continue27 past = close[-1] / close[-1 - window] - 1.028 weights[symbol] = float(np.sign(past)) * gross / n29 return weights30