Introduction to Quantamental Trading: How a Macro Thesis Becomes a Rule, a Rank, and a Reproducible Backtest

Every discretionary macro trader carries a mental model that sounds something like this: “quality survives a slowdown,” or “boring stocks compound while glamour stocks round-trip.” The model is usually right more often than it is wrong — and it is usually applied inconsistently, sized emotionally, and abandoned at exactly the wrong moment. That gap between a good thesis and a disciplined application of it is where most discretionary performance leaks away.

Quantamental trading is the attempt to close that gap. It is not the replacement of judgment with a black box. It is the translation of a human, fundamental, macro-aware thesis into an explicit rule — one that scores every eligible stock the same way, every rebalance date, and produces a track record you can audit line by line. The judgment stays; what changes is that it gets written down, tested against a decade of data, and guarded by machinery that refuses to publish results when something is wrong.

This article opens our Macro & Strategy series. Over the coming installments we will walk the full curriculum — point-in-time data, regime detection, factor mining, portfolio construction, validation statistics, and live operations — and every piece will be grounded in the same place: the long/short factor platform we actually built and run. By the end of this piece you will have the pipeline skeleton, the exact Python that turns a thesis into a portfolio, real backtest numbers from our own engine, and the failure modes that the machinery exists to catch.

What “Quantamental” Actually Means

The word is a portmanteau — quantitative process, fundamental inputs — and it describes a specific middle ground. A pure quant shop may trade signals with no economic story at all: microstructure, statistical patterns, order-flow. A pure discretionary investor reads the same 10-K a quantamental system parses, but holds the conclusion in their head. Quantamental sits between: the inputs are the things a fundamental analyst cares about (profitability, cash flow, share issuance, balance-sheet strength, price behavior), and the process is systematic (a scoring function, a ranking, a rebalance schedule, a risk rule).

The crucial mental shift is from picks to rules. A discretionary investor asks, “is this stock attractive?” A quantamental system asks, “what is the attractiveness score of every stock in the universe, computed identically, using only information that existed on the decision date?” That last clause — only information that existed at the time — sounds pedantic and is anything but. It is the difference between a backtest and a fairy tale, and it is important enough that the next article in this series is devoted entirely to it.

The core claim Systematic does not mean black box. A quantamental rule is often more transparent than a discretionary process: the thesis is written as code you can read in one screen, the data it saw is timestamped, and the resulting track record is reproducible to the byte.

The Pipeline: Rank, Select, Hold, Measure

Nearly every cross-sectional equity strategy — value, momentum, quality, low-volatility, and the multi-factor composites built from them — shares one skeleton. At each rebalance date t, over an eligible universe of M stocks:

score:    s(i,t) = f( fundamentals(i,t), prices(i,t) )     for each stock i
rank:     r(i,t) = rank of s(i,t) across all M eligible stocks
select:   LONG  the top N by rank
          SHORT the bottom N by rank        (0 for a long-only book)
hold:     until the next rebalance, subject to risk rules (stops, caps)
measure:  portfolio return, net of costs, marked daily

Every symbol matters. f is the thesis — the entire economic idea lives inside that one function. fundamentals(i,t) means the fundamental data for stock i as it was knowable at date t (SEC filing dates, not fiscal-period dates). N is the book size — concentration versus diversification. The rebalance frequency sets the trade-off between signal freshness and transaction costs. And “measure” hides the most consequential decision of all: what you report. Average per-trade return and compounding fund return answer different questions, and mixing them is how marketing decks lie.

Notice what is not in the skeleton: no prediction of index direction, no timing call, no price target. A cross-sectional strategy only claims that the top of the ranking will beat the bottom of the ranking. That relative claim is far more modest than a market call — and far more testable.

From Thesis to Reproducible Backtest: Inside the v7 Engine

Theory is cheap, so here is the real thing. Our v7 platform is a contracts-first rebuild of our long/short backtester: a one-way pipeline — selection → engine → measurement → results → dashboard — where each stage only consumes the output of the previous one, and an architecture linter fails the build if any stage reaches backward. What follows is actual code from the repository, lightly trimmed for width.

A thesis in fourteen lines

Take the low-volatility anomaly — the well-documented tendency of boring, low-volatility stocks to deliver better risk-adjusted returns than glamour names. As a discretionary belief it is a paragraph. As a v7 strategy it is this:

VOL_WINDOW = 63  # ~3 months of trading days

class LowVolatility:
    config = StrategyConfig(
        code="LOWVOL", name="Low Volatility",
        n_long=20, n_short=0, rebalance="monthly", long_stop=0.15,
        universe=UniverseSpec(mcap_min=3e8, price_min=5,
                              dollar_vol_min=2e6),
        required_inputs=(), min_history_days=VOL_WINDOW)

    def score(self, panels, date):
        """Higher = lower trailing vol. PIT: returns index <= date only."""
        rets = panels["close_d"].pct_change().loc[:date].tail(VOL_WINDOW)
        return -rets.std(ddof=0)

Read it as a contract. The universe is liquid US equities: at least $300M market cap, a $5 minimum price, $2M daily dollar volume. The book is the 20 best-ranked names, long only, rebalanced monthly, each position protected by a 15% stop. The thesis is one line: score every stock by the negative of its trailing 63-day return volatility, so the calmest names rank highest. The .loc[:date] is the point-in-time discipline made visible — the scoring function is physically unable to see a price from the future.

The one-way pipeline

The strategy class is all a researcher writes. The platform does the rest, and the core chain is short enough to quote:

def run_strategy(strategy, panels, *, data_effective_as_of, out_dir, ...):
    """The core chain: engine -> Results -> gate -> generate -> write."""
    cfg = strategy.config
    eo  = engine_run(panels, strategy)   # decide at close, fill at open
    va  = trade_ledger(eo, panels)       # View A: per-trade ledger
    vb  = fund_curve(eo, panels, cfg)    # View B: compounding fund NAV
    results = assemble(strategy, eo, va, vb, attr, data_effective_as_of)

    log_trial(cfg.code, cfg, headline_sharpe=results.metrics.view_b.sharpe)
    report  = evaluate(results, trial_log_path)  # validation gate
    results = apply_gate(results, report)        # fail => research_only

    files = to_dashboard(results)
    problems = coherence_check(files)    # chart vs snapshots disagree?
    if problems:
        raise CoherenceError(problems)   # publish nothing, keep last-good

Three details are worth slowing down for. First, the engine decides at the prior close and fills at the next open — it never trades on a price it could not have known. Second, the measurement stage produces two views that are never mixed: View A is a ledger of individual trades (distribution statistics — win rate, average trade), View B is a real compounding fund curve (CAGR, Sharpe, drawdown). A per-trade story is never allowed to masquerade as a fund return, or vice versa. Third, every run is logged as a trial before its results are evaluated — so when we later compute how likely a Sharpe ratio is to be luck, the denominator honestly includes everything we tried.

What the output looks like

Running python -m strategies_v7.run --strategy LOWVOL produces, among other artifacts, a dashboard JSON whose summary is the strategy’s honest report card. From the run in our repository (panel start February 2016, data effective as of June 12, 2026), the fund-level View B reads: total return +401.9% versus +353.2% for the S&P 500 (SPY) over the identical window — a CAGR of 16.8% versus 15.7% — with a portfolio beta of just 0.48, a Sharpe ratio of 0.62, and a maximum drawdown of −23.1%. The per-trade View A: 612 closed or open trades, a 62.9% win rate.

YearLOWVOLSPYQQQ
2018+5.2%−4.6%−0.1%
2020+11.8%+18.3%+48.4%
2022−0.1%−18.2%−32.6%
2023+5.1%+26.2%+54.9%
2024+11.6%+24.9%+25.6%

The selected years are the story. In 2022 — the worst joint stock-bond year in decades — the sleeve was flat while SPY lost 18% and the Nasdaq-100 lost a third. That is the low-volatility thesis doing exactly what it promises. But look at 2023: the sleeve made 5% while SPY made 26% and QQQ made 55%. A defensive rule pays for its crisis protection by missing the melt-ups, and over the full decade the sleeve trails QQQ’s +643.7% badly. An honest report includes both columns.

Where these numbers come from Every figure above is read from the artifact our engine wrote — not estimated, not annualized by hand, not adjusted after the fact. Backtest results are hypothetical, net of a modeled 10-basis-point-per-side cost, and describe the past, not the future. The same file records what the gate could not verify on this run — deflated Sharpe, bootstrap confidence intervals, regime splits are marked null until those validation passes are run — because an unfilled field is more honest than an invented one.

The Risk: A Rule Faithfully Executes a Bad Thesis

Here is the part introductions usually skip: making a strategy systematic makes it consistent, not correct. If the thesis is wrong, automation executes the mistake with perfect discipline, every month, at scale. If the data is stale, the rule trades yesterday’s world. If you tested forty variants and published the best one, the beautiful Sharpe ratio is mostly selection bias wearing a lab coat. Systematic ≠ safe — a pipeline is an amplifier, and it amplifies flaws as faithfully as edges.

The v7 answer is a wall of gates that would rather publish nothing than publish garbage:

  • Freshness gate — refuses to run at all if the input data is stale, so a signal can never silently be computed on last week’s prices.
  • Validation gate (research_only) — a strategy that has not cleared out-of-sample and multiple-testing checks is stamped research_only and cannot present itself as live-eligible.
  • Coherence gate — if the chart, the snapshots, and the summary artifacts disagree with each other, the whole publish is refused and the last-good output stays in place.
  • Output-sanity gate — a final screen on the generated dashboard files themselves; impossible values block the write.
The risk that remains No gate can detect a thesis that used to work and quietly stopped. Factor edges decay, get crowded, and invert — the low-volatility sleeve’s 2023 gap versus QQQ is what a regime mismatch looks like from the inside. The gates catch corrupted inputs and inflated claims; only ongoing measurement against live results catches a dying edge. That monitoring problem gets its own article later in this series.

There is also a subtler discipline encoded in the platform’s architecture decisions: the two-view separation exists precisely so that a flattering per-trade average can never be quoted as if it were a fund return, and the trial registry exists so that “we ran it once and it worked” can be distinguished from “we ran it eighty times and kept the winner.” These are not features; they are constraints we imposed on ourselves, because the most dangerous person to fool with a backtest is the person running it.

If you want the narrative version of what this machinery is for, our market coverage shows the same regimes from the other side — the record-setting, dovish-Fed tape of early July 2026 is exactly the kind of momentum-led environment in which a defensive rank quietly lags, and knowing that in advance, from the regime table rather than in hindsight, is the entire point of doing this systematically. The rest of the series lives on the Macro & Strategy hub: next up are the pitfalls of revised data (why point-in-time discipline makes or breaks a backtest), a full worked treatment of the low-volatility sleeve, and eventually the gates themselves — including the real bug they caught. Our standing rules for data sourcing and verification are in the methodology.

The AlphaEdge Take

Quantamental trading is discipline made explicit, not judgment made obsolete. A macro thesis you cannot write as a scoring function is a mood; once written, ranked, and gated, it becomes something you can test, size, and audit — and something that will also faithfully execute your mistakes, which is why the reproducibility and the refuse-to-publish machinery matter more than any single strategy’s returns. Start with the skeleton — rank, select, hold, measure — demand point-in-time data, report both the trade view and the fund view, and treat every backtest as a claim to be attacked rather than a result to be admired.

Georgi Kuzmanov

Senior Equity Analyst & Founder at AlphaEdge. Columbia University MSFE (2011–2013). Covering equities, macro, and geopolitics for serious investors.

Disclosure: This article is for informational purposes only and does not constitute investment advice. Backtested and hypothetical performance results have inherent limitations and do not represent actual trading; past performance is not indicative of future results. The author may hold positions in securities mentioned. AlphaEdge is an independent publication and is not affiliated with any broker, fund, financial institution, investment adviser, or broker-dealer. Always do your own research before making investment decisions. See our Financial Disclaimer.