Skip to content

D. Positioning & Flows (D.14--D.18)

Trade against crowd positioning and track physical demand proxies. Futures positioning reveals when the crowd is offside; physical flow data provides ground-truth demand signals that lead price.


Flow Signal Architecture

graph TB
    subgraph "Positioning Data"
        COT[CFTC COT<br/>Weekly]
        HP[Commercial<br/>Net Position]
    end
    subgraph "Physical Flow Data"
        ETF[ETF Shares<br/>Outstanding]
        COMEX[COMEX Registered<br/>+ Eligible]
        SGE[SGE Weekly<br/>Withdrawals]
    end

    COT --> D14[D.14 COT Extreme]
    HP --> D15[D.15 Hedging Pressure]
    ETF --> D16[D.16 ETF Flow]
    COMEX --> D17[D.17 COMEX Warehouse]
    SGE --> D18[D.18 SGE Withdrawals]

    D14 & D15 & D16 & D17 & D18 --> AGG[Position & Flow<br/>Composite]
    AGG --> GLD[GLD/SLV<br/>Position]

D.14 COT Extreme

Module: qgtm_strategies/cot_precious.py Class: COTPreciousStrategy ID: cot_precious

Economic Rationale

CFTC Commitments of Traders data reveal aggregate managed-money (hedge fund) positioning in gold and silver futures. When speculators reach 2-sigma extremes, the market is crowded and prone to reversal. We fade the crowd: extremely long managed-money implies liquidation risk; extremely short implies short-squeeze risk.

Signal Formula

\[ \text{net}_t = \text{MM\_long}_t - \text{MM\_short}_t \]
\[ z_t = \frac{\text{net}_t - \bar{\text{net}}_{52w}}{\sigma_{\text{net}, 52w}} \]

Entry/exit:

Condition Signal Rationale
\(z > +2\) SHORT Crowded long; liquidation risk
\(z < -2\) LONG Crowded short; squeeze risk
\(\|z\| < 1\) Close Positioning normalized

Position split: 70% GLD, 30% SLV. Sized by z-score magnitude, capped at \(|z| = 3\).

\[ w_t = \text{clip}\!\left(\frac{-z_t}{3},\; -1,\; 1\right) \times \text{max\_weight} \]

Factor Exposures

Factor Loading
Metals +0.5
Value +0.4
Momentum -0.3

Capacity & Decay

  • Max capacity: $20M
  • Alpha half-life: 30 days
  • Kill condition: Strategy on wrong side of 3+ sigma positioning move
  • Expected Sharpe: 0.5--0.9

References

  • De Roon, Nijman, Veld (2000) "Hedging Pressure Effects in Futures Markets"
  • Moskowitz, Ooi, Pedersen (2012) "Time series momentum"
  • Hong & Yogo (2012) "What does futures market interest tell us?"

D.15 Hedging Pressure

Module: qgtm_strategies/hedging_pressure.py Class: HedgingPressureStrategy ID: hedging_pressure

Economic Rationale

Hedging pressure theory (Cootner 1960, Bessembinder 1992): commodity producers hedge by selling forward, creating natural short pressure. Speculators provide liquidity and are compensated with a risk premium. When hedging pressure is extreme (commercials very short), the risk premium widens, making long positions attractive.

Signal Formula

\[ \text{hp\_ratio}_t = \frac{\text{commercial\_net}_t}{\text{open\_interest}_t} \]
\[ z_{\text{hp}} = \text{zscore}\!\bigl(\text{hp\_ratio}_t,\; \text{lookback}\bigr) \]
Condition Signal
\(z_{\text{hp}} < -\tau\) LONG (extreme hedging pressure = fat risk premium)
\(z_{\text{hp}} > +\tau\) SHORT (hedgers unwinding = premium contracting)

Default \(\tau = 2.0\).

Factor Exposures

Factor Loading
Metals +0.4
Carry +0.5
Value +0.3

Capacity & Decay

  • Max capacity: $25M
  • Alpha half-life: 42 days
  • Expected Sharpe: 0.4--0.7

References

  • Cootner (1960) "Returns to Speculators: Telser versus Keynes"
  • Bessembinder (1992) "Systematic Risk, Hedging Pressure, and Risk Premiums"
  • De Roon, Nijman, Veld (2000)
  • Basu & Miffre (2013) "Capturing the Risk Premium of Commodity Futures"

D.16 ETF Flow Momentum

Status: Planned Data module: qgtm_data/etf_flows.py

Economic Rationale

ETF creations/redemptions represent real-time institutional demand. Sustained GLD inflows often precede or confirm gold rallies. Large single-day redemptions signal institutional liquidation. The strategy follows the flow: sustained creations = bullish; sustained redemptions = bearish. Divergence between price and flows signals potential reversal.

Signal Formula (Proposed)

\[ \text{flow}_t = \Delta\text{shares\_outstanding}_t \times P_{\text{NAV},t} \]
\[ \text{cum\_flow}_{N} = \sum_{i=0}^{N-1} \text{flow}_{t-i} \]
\[ z_{\text{flow}} = \text{zscore}\!\bigl(\text{cum\_flow}_{21d},\; 252\bigr) \]

Momentum signal: Long when 21-day cumulative flow z > 1.5 (sustained buying). Short when z < -1.5 (sustained selling).

Divergence signal: Long when price falls but flows are positive (smart money accumulating). Short when price rises but flows are negative (distribution).

Expected Properties

  • Max capacity: $30M
  • Expected Sharpe: 0.4--0.8

D.17 COMEX Warehouse

Module: qgtm_strategies/comex_warehouse.py Class: ComexWarehouseStrategy ID: comex_warehouse

Economic Rationale

COMEX registered inventory is metal earmarked for delivery against futures. Rapid drawdowns signal physical demand outstripping supply, creating delivery squeeze risk. Silver is particularly susceptible due to its smaller market (~\(1.5T vs ~\)15T for gold), dual monetary/industrial demand, and concentrated deliverable stocks.

Signal Formula

\[ \text{drawdown\_rate}_t = \frac{\Delta \text{registered}_{N}}{\text{registered}_{t-N}} \]
\[ z_{\text{dd}} = \text{zscore}\!\bigl(\text{drawdown\_rate}_t,\; \text{long\_lookback}\bigr) \]
\[ \text{eligible\_ratio}_t = \frac{\text{eligible}_t}{\text{eligible}_t + \text{registered}_t} \]
\[ z_{\text{ratio}} = \text{zscore}\!\bigl(\text{eligible\_ratio}_t,\; \text{long\_lookback}\bigr) \]
\[ \text{composite} = 0.7 \cdot (-z_{\text{dd}}) + 0.3 \cdot z_{\text{ratio}} \]

Negative drawdown z = stocks falling fast = bullish. High eligible ratio z = metal moving from eligible to registered for delivery = bullish.

Factor Exposures

Factor Loading
Metals +0.7
Value +0.3

Capacity & Decay

  • Max capacity: $20M
  • Alpha half-life: 21 days
  • Kill condition: Registered stocks increase for 3 consecutive months while signal stays long
  • Expected Sharpe: 0.5--0.9

References

  • Pirrong (2012) "Commodity Price Dynamics: A Structural Approach"
  • Geman (2005) "Commodities and Commodity Derivatives"
  • Working (1949) "The Theory of Price of Storage"

D.18 SGE Withdrawals

Module: qgtm_strategies/sge_withdrawals.py Class: SGEWithdrawalsStrategy ID: sge_withdrawals

Economic Rationale

SGE withdrawals represent the primary channel for physical gold entering the Chinese domestic market. China is the world's largest gold consumer (~1,000 tonnes/year). When weekly withdrawals surge (> 2 sigma), it signals strong physical accumulation -- potentially festival/wedding-season demand, PBOC-adjacent buying, or arbitrage-driven imports when Shanghai premium is elevated.

Signal Formula

\[ z_{\text{SGE}} = \text{zscore}\!\bigl(\text{weekly\_withdrawals}_t,\; \text{trailing\_lookback}\bigr) \]
\[ z_{\text{India}} = \text{zscore}\!\bigl(\text{india\_imports}_t,\; \text{trailing\_lookback}\bigr) \]
\[ \text{composite} = \begin{cases} 0.7 \cdot z_{\text{SGE}} + 0.3 \cdot z_{\text{India}} & \text{if India data available} \\ z_{\text{SGE}} & \text{otherwise} \end{cases} \]
\[ w_t = \begin{cases} \text{clip}\!\left(\dfrac{\text{composite}}{3},\; -1,\; 1\right) \times \text{scale} & \text{if composite} > 2 \\ 0 & \text{otherwise} \end{cases} \]

Factor Exposures

Factor Loading
Metals +0.8
Value +0.2

Capacity & Decay

  • Max capacity: $30M
  • Alpha half-life: 63 days
  • Kill condition: SGE data becomes unavailable or lagged > 2 weeks
  • Expected Sharpe: 0.4--0.8

References

  • World Gold Council "Gold Demand Trends"
  • Koos Jansen, BullionStar SGE withdrawal analysis
  • O'Connell (2022) "The Shanghai Factor in Gold Pricing"