Your library.

Production code for every paper, tested in the regimes you care about, evaluated against your bar.

47 papers replicated
12 pass all 5 criteria
Sort IRR since publication
Solo quant preset
Asset class All
12 pass · 18 partial · 17 fail
# Paper Curve IRR Sharpe Yrs Criteria
01
Quality minus junk
Asness, Frazzini, Pedersen · 2019 US equitieslong-short
14.2% 0.92 7 5/5
02
Carry across asset classes
Koijen, Moskowitz, Pedersen, Vrugt · 2018 cross-assetcarry
11.8% 0.71 8 5/5
03
Betting against beta
Frazzini, Pedersen · 2014 US equitieslow-vol
10.4% 0.68 12 4/5
04
Buffett's Alpha
Frazzini, Kabiller, Pedersen · 2018 US equitiesqualityleverage
9.8% 0.74 12 5/5
05
Time series momentum
Moskowitz, Ooi, Pedersen · 2012 cross-assettrend
8.2% 0.38 14 4/5
06
Momentum crashes
Daniel, Moskowitz · 2016 US equitiesmomentum
7.6% 0.55 10 4/5
07
Variance risk premiums
Carr, Wu · 2009 optionsshort-vol
7.2% 0.61 11 3/5
08
Pairs trading
Gatev, Goetzmann, Rouwenhorst · 2006 US equitiesstat arb
5.4% 0.32 20 2/5
09
Post-earnings announcement drift
Bernard, Thomas · 1989 US equitiesearnings
4.8% 0.41 15 3/5
10
Cross-sectional momentum
Jegadeesh, Titman · 1993 US equitiesmomentum
4.1% 0.19 32 1/5
11
Asset growth anomaly
Cooper, Gulen, Schill · 2008 US equitiesaccounting
2.7% 0.12 18 0/5
12
Accruals anomaly
Sloan · 1996 US equitiesaccounting
1.4% 0.08 30 0/5

Citations real (click for paper) · performance figures and replication outputs illustrative · prototype demonstrating Lumiveo primitives

Replication · Journal of Financial Economics 2012

Time series momentum

Moskowitz, Ooi, Pedersen · JFE 104(2)

cross-asset futures trend monthly vol-scaled

Your success criteria Solo quant preset

Applied to every paper you replicate · click any threshold to edit

4/5
1 criterion fails
Out-of-sample Sharpe
post-publication, 2012–today
≥ 0.30
0.38
+27% headroom
Max drawdown
peak-to-trough, full history
≤ 15%
−18.4%
−23% over limit
Net Sharpe at my TC
IBKR commissions + 8 bps slippage
≥ 0.20
0.31
+55% headroom
Correlation to my book
vs current 60/40 sleeve
≤ 0.30
0.12
+60% headroom
Capacity at 5% impact
estimated, my universe
≥ $5M
$42M
8.4× threshold

Your test regimes Crisis-aware preset

Specific market regimes the strategy must survive · click any to inspect

3/5
2 regimes fail
2008 Global Financial Crisis
Jun 2007 – Mar 2009 · require Sharpe > 0
Sharpe 1.81
+44% return
2020 COVID crash
Feb – Apr 2020 · require Sharpe > 0
Sharpe 0.42
+3.8% return
2022 rate shock
Jan – Oct 2022 · require Sharpe > 0
Sharpe 2.14
+27% return
Low-vol regime 2017
full year 2017 · require DD < 10%
DD −14.2%
−42% over limit
Post-crisis recovery 2019
full year 2019 · require Sharpe > 0
Sharpe −0.12
flat/negative

Equity curve

In-sample 1985–2011 Out-of-sample
Strategy spec extracted
Signalsign(r₁₂ₘ)
Universe58 futures
Rebalancemonthly
Vol target40% / σᵢ
Sample1985–2009
DataDatabento
Decision log 5 entries
12-month lookback per spec
verbatim from §2.1
σ window: 60 days
paper unspecified · ±10d swings Sharpe by 0.04
Futures roll: OI-weighted
paper silent · Bloomberg standard applied
TC: IBKR + 8 bps slippage
from your TC profile
Databento replaces Datastream
5 minor symbols missing pre-1988

Your codebase.

Every paper you replicate becomes a tested Python module. Composable, versioned, yours to trade — not a one-off backtest notebook.

5,847 lines of Python
47 strategies · 18 reusable signals
Branch main
Last commit 2 hours ago
Tests 412 passing
Repository edge/
strategies 47
tsm.py 142
qmj.py 198
carry.py 167
bab.py 124
defensive.py 156
42 more
signals 18
momentum.py
quality.py
carry.py
15 more
backtest 6
data 4
tests 412
presets 3
README.md
pyproject.toml
strategies/tsm.py
2h ago · edge-agent
# strategies/tsm.py
# Source: Moskowitz, Ooi, Pedersen (2012) — JFE 104(2)
# Replication fidelity: 4/5 user criteria, 3/5 test regimes
# Decision log: see decisions/tsm.yaml

from edge.signals import lookback_return, realized_vol
from edge.data import futures_universe
from edge.strategy import Strategy, register
import numpy as np


@register("tsm")
class TimeSeriesMomentum(Strategy):
    """Time series momentum across cross-asset futures.

    Long if 12m return positive, short otherwise. Position sized
    to target 40% annualized vol per instrument.
    """

    lookback: str = "12M"
    rebalance: str = "monthly"
    vol_target_pct: float = 40.0
    vol_window: int = 60  # resolved from decision log

    def universe(self):
        return futures_universe(asset_classes=["eq", "fi", "fx", "cm"])

    def signal(self, prices):
        r = lookback_return(prices, self.lookback)
        return np.sign(r)

    def position(self, prices, signal):
        sigma = realized_vol(prices, window=self.vol_window)
        return signal * (self.vol_target_pct / sigma)

Recent agent activity

23 commits this week
Added Quality minus junk replication · 5/5 criteria, 4/5 tests
a47f3c2 · edge-agent · 2 hours ago · +198 −0
Resolved σ window ambiguity in tsm.py · sensitivity test added
8b21e94 · edge-agent · 5 hours ago · +34 −8
Refactored signals/momentum.py for cross-sectional composability
f3d2a1e · edge-agent · yesterday · +87 −42
Added 2017 low-vol test regime to preset · re-evaluated all 47 strategies
2c91b76 · estelle · 3 days ago · +12
Updated Databento data adapter for 5 missing futures symbols pre-1988
e58a3b9 · edge-agent · 5 days ago · +56 −12