Loading…
Public trading strategy

Bond market bounces back after panic sell-off — grab Treasury ETFs

Created

Thesis

When the new Fed chair spooked the market with talk of raising interest rates, panicked selling drove bond prices down to unusual lows. However, investors are already stepping back in to buy the dip today, realizing the long-term outlook isn't as dire as the initial panic suggested. When bonds rebound this sharply after an emotion-driven plunge, they tend to climb steadily for a few days as the market finds its balance again.

Strategy approach

Construct a mean-reversion strategy for the 10-Year Treasury yield (US10Y) or a long ETF like IEF on the Daily timeframe. Entry: go long IEF when the yield is more than 2 standard deviations above its 20-day moving average (indicating an oversold bond market) and the RSI(14) crosses back below 70. Exit: close the position when the yield touches the 20-day moving average, or after a maximum 10-day hold.

Markets and timeframes

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: BB/RSI Crossover Long (TLT@1d) (2 conditions)
  • Exit: Take Profit at 10.0% (1 condition)
  • Exit: Position Exit Rule (TLT@1d) (1 condition)
  • Exit: Stop Loss at 5.0% (1 condition)
  • Exit: Take Profit at 10.0% (1 condition)
  • Exit: SL: Fib Retracement 50.0% (TLT@1d) (1 condition)
  • Exit: SL: Below Support[1] (TLT@1d) (1 condition)

Shared strategy rules

Rule configuration

{
  "data_dependencies": [
    {
      "symbol": "TLT",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "field": "lower",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "crossed_below",
          "right": {
            "type": "constant",
            "value": 70
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1",
      "name": "BB/RSI Crossover Long (TLT@1d)",
      "priority": 1
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Take Profit at 10.0%",
      "priority": 1,
      "purpose": "signal"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "field": "middle",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "Position Exit Rule (TLT@1d)",
      "priority": 1
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -5
          }
        }
      ],
      "enabled": true,
      "id": "exit_3",
      "name": "Stop Loss at 5.0%",
      "priority": 10,
      "purpose": "stop_loss"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_4",
      "name": "Take Profit at 10.0%",
      "priority": 11,
      "purpose": "take_profit"
    },
    {
      "applies_to": "long",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "ratio": 500,
            "type": "fibonacci_retracement"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5",
      "name": "SL: Fib Retracement 50.0% (TLT@1d)",
      "priority": 97,
      "purpose": "take_profit"
    },
    {
      "applies_to": "long",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_above",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_6",
      "name": "SL: Below Support[1] (TLT@1d)",
      "priority": 100,
      "purpose": "stop_loss"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "support_stop_rank": 2,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Indicator configuration

{
  "indicators": [
    {
      "name": "bollinger_bands",
      "period": 20,
      "std_dev": 2
    },
    {
      "name": "rsi",
      "period": 14
    }
  ]
}

Parsed strategy

{
  "data_dependencies": [
    {
      "symbol": "TLT",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "field": "lower",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "crossed_below",
          "right": {
            "type": "constant",
            "value": 70
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1",
      "name": "BB/RSI Crossover Long (TLT@1d)",
      "priority": 1
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Take Profit at 10.0%",
      "priority": 1,
      "purpose": "signal"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "field": "middle",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "Position Exit Rule (TLT@1d)",
      "priority": 1
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -5
          }
        }
      ],
      "enabled": true,
      "id": "exit_3",
      "name": "Stop Loss at 5.0%",
      "priority": 10,
      "purpose": "stop_loss"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_4",
      "name": "Take Profit at 10.0%",
      "priority": 11,
      "purpose": "take_profit"
    },
    {
      "applies_to": "long",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "TLT",
              "timeframe": "1d"
            },
            "ratio": 500,
            "type": "fibonacci_retracement"
          }
        }
      ],
      "enabled": true,
      "id": "exit_5",
      "name": "SL: Fib Retracement 50.0% (TLT@1d)",
      "priority": 97,
      "purpose": "take_profit"
    },
    {
      "applies_to": "long",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "crossed_above",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_6",
      "name": "SL: Below Support[1] (TLT@1d)",
      "priority": 100,
      "purpose": "stop_loss"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "support_stop_rank": 2,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Strategy instructions

Trading agent generated from recommendation idea 'Bond market bounces back after panic sell-off — grab Treasury ETFs'. Thesis: When the new Fed chair spooked the market with talk of raising interest rates, panicked selling drove bond prices down to unusual lows. However, investors are already stepping back in to buy the dip today, realizing the long-term outlook isn't as dire as the initial panic suggested. When bonds rebound this sharply after an emotion-driven plunge, they tend to climb steadily for a few days as the market finds its balance again.

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 thesis and strategy approach describe a market view. They do not show whether an entry or exit condition is currently met.
  • 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