Loading…
Public trading strategy

XLP Defensive Rotation Pair Strategy

Created

Thesis

A 5% 10-year yield is a regime change for stocks — companies living on cheap money and distant AI promises get hit hardest, and that is exactly the selloff underway. History shows that when bond yields spike like this, money rotates into staples and dividend payers whose cash flows don't depend on future growth. Pairing a long staples position against the tech-heavy Nasdaq captures the rotation rather than betting on the market's direction. With the Fed expected to hike this week, upward pressure on yields likely persists, giving the trade a catalyst.

Strategy approach

A 5% 10-year yield is a regime change for stocks — companies living on cheap money and distant AI promises get hit hardest, and that is exactly the selloff underway. History shows that when bond yields spike like this, money rotates into staples and dividend payers whose cash flows don't depend on future growth. Pairing a long staples position against the tech-heavy Nasdaq captures the rotation rather than betting on the market's direction. With the Fed expected to hike this week, upward pressure on yields likely persists, giving the trade a catalyst. Decision analysis profile: near_term. Required dimensions: as_of_session, catalyst_timing, expectations_priced_in, price_volume, liquidity_spread_volatility, dilution_capital_allocation, downside, actionability.

Markets and timeframes

Latest published rule evaluation

Evaluated . This is a dated rule snapshot, not a live price or trade execution confirmation.

QQQ · 1d

0 of 5 published entry conditions marked met.

  • Price above SMA (50) — near
  • Donchian (20) crossed above Donchian (20) — near
  • ATR (14) above 0.5 — unknown
  • Price above SMA (50) — near
  • Donchian (20) crossed above Donchian (20) — near
  • Price below SMA (50) — met

XLP · 1d

0 of 5 published entry conditions marked met.

  • Price above SMA (50) — near
  • Donchian (20) crossed above Donchian (20) — near
  • ATR (14) above 0.5 — unknown
  • Price above SMA (50) — near
  • Donchian (20) crossed above Donchian (20) — near
  • Price below SMA (50) — met

Entry and exit at a glance

These are the named rules in the shared configuration. Review the full conditions below before using a strategy.

  • Entry: SMA/DONCHIAN/ATR Crossover Long (XLP@1d) (4 conditions)
  • Entry: SMA/DONCHIAN Crossover Short (QQQ@1d) (2 conditions)
  • Exit: Position Exit Rule (XLP@1d) (2 conditions)
  • Exit: TP: Fib Extension 127.2% (XLP@1d) (1 condition)
  • Exit: SL: Below Support[2] (XLP@1d) (1 condition)
  • Exit: SL: Below Support[1] (XLP@1d) (1 condition)
  • Exit: SL: Below Support[1] (XLP@1d) (1 condition)
  • Exit: SL: Below Support[1] (QQQ@1d) (1 condition)
  • Exit: SL: Below Support[1] (QQQ@1d) (1 condition)
  • Exit: Stop Loss at 2.5% (1 condition)
  • Exit: Take Profit at 5.0% (1 condition)

Shared strategy rules

Rule configuration

{
  "data_dependencies": [
    {
      "symbol": "STOCK:XLP",
      "timeframe": "1d"
    },
    {
      "symbol": "STOCK:QQQ",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          },
          "operator": "crossed_above",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "resistance_level"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "type": "constant",
            "value": 0.5
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1",
      "name": "SMA/DONCHIAN/ATR Crossover Long (XLP@1d)",
      "priority": 1,
      "trade_symbol": "STOCK:XLP"
    },
    {
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          },
          "operator": "crossed_above",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_2",
      "name": "SMA/DONCHIAN Crossover Short (QQQ@1d)",
      "priority": 2,
      "trade_symbol": "STOCK:QQQ"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "holding_period_bars",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 120
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Position Exit Rule (XLP@1d)",
      "priority": 1,
      "purpose": "signal",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "less_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "TP: Fib Extension 127.2% (XLP@1d)",
      "priority": 96,
      "purpose": "take_profit",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 2,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3",
      "name": "SL: Below Support[2] (XLP@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_4_xlp",
      "name": "SL: Below Support[1] (XLP@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_4_qqq",
      "name": "SL: Below Support[1] (XLP@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:QQQ"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:QQQ",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5_xlp",
      "name": "SL: Below Support[1] (QQQ@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:QQQ",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5_qqq",
      "name": "SL: Below Support[1] (QQQ@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:QQQ"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -2.492
          }
        }
      ],
      "enabled": true,
      "id": "exit_6",
      "name": "Stop Loss at 2.5%",
      "priority": 100,
      "purpose": "stop_loss"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 4.984
          }
        }
      ],
      "enabled": true,
      "id": "exit_7",
      "name": "Take Profit at 5.0%",
      "priority": 100,
      "purpose": "take_profit"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2.492,
      "support_stop_rank": 2,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Indicator configuration

{
  "indicators": [
    {
      "name": "sma",
      "period": 50
    },
    {
      "name": "donchian",
      "period": 20
    },
    {
      "name": "atr",
      "period": 14
    }
  ]
}

Parsed strategy

{
  "data_dependencies": [
    {
      "symbol": "STOCK:XLP",
      "timeframe": "1d"
    },
    {
      "symbol": "STOCK:QQQ",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          },
          "operator": "crossed_above",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "resistance_level"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "type": "constant",
            "value": 0.5
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1",
      "name": "SMA/DONCHIAN/ATR Crossover Long (XLP@1d)",
      "priority": 1,
      "trade_symbol": "STOCK:XLP"
    },
    {
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          },
          "operator": "crossed_above",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "donchian",
              "period": 20
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_2",
      "name": "SMA/DONCHIAN Crossover Short (QQQ@1d)",
      "priority": 2,
      "trade_symbol": "STOCK:QQQ"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 50
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "holding_period_bars",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 120
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Position Exit Rule (XLP@1d)",
      "priority": 1,
      "purpose": "signal",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "less_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "TP: Fib Extension 127.2% (XLP@1d)",
      "priority": 96,
      "purpose": "take_profit",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 2,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3",
      "name": "SL: Below Support[2] (XLP@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_4_xlp",
      "name": "SL: Below Support[1] (XLP@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:XLP",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_4_qqq",
      "name": "SL: Below Support[1] (XLP@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:QQQ"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:QQQ",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5_xlp",
      "name": "SL: Below Support[1] (QQQ@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:XLP"
    },
    {
      "applies_to": "short",
      "conditions": [
        {
          "left": {
            "chart_ref": {
              "symbol": "STOCK:QQQ",
              "timeframe": "1d"
            },
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_below",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5_qqq",
      "name": "SL: Below Support[1] (QQQ@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "STOCK:QQQ"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -2.492
          }
        }
      ],
      "enabled": true,
      "id": "exit_6",
      "name": "Stop Loss at 2.5%",
      "priority": 100,
      "purpose": "stop_loss"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 4.984
          }
        }
      ],
      "enabled": true,
      "id": "exit_7",
      "name": "Take Profit at 5.0%",
      "priority": 100,
      "purpose": "take_profit"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2.492,
      "support_stop_rank": 2,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Strategy instructions

Trading agent generated from recommendation idea 'A 5% 10-year yield is a regime change for stocks — companies living on cheap money and distant AI promises get hit hardest, and that is exactly the selloff underway. History shows that when bond yields spike like this, money rotates into staples and divid'. Thesis: A 5% 10-year yield is a regime change for stocks — companies living on cheap money and distant AI promises get hit hardest, and that is exactly the selloff underway. History shows that when bond yields spike like this, money rotates into staples and dividend payers whose cash flows don't depend on future growth. Pairing a long staples position against the tech-heavy Nasdaq captures the rotation rather than betting on the market's direction. With the Fed expected to hike this week, upward pressure on yields likely persists, giving the trade a catalyst.

Performance

No trade count, win rate, or realized P&L figures are provided in this public preview. The thesis and shared rules do not establish a performance record.

What this public preview can establish

  • The dated rule snapshot above shows the conditions evaluated at that time. It does not prove a current trigger or executed trade.
  • Technical strategy fields are shared above. Inspect the actual conditions and check when they were evaluated before relying on them.
  • No trade count, win rate, or P&L figure is published in this preview. It cannot establish a performance record.

Explore

How CommonQuant researches and tests strategies · Public paper-trading record and its limits · Discover public strategies