Loading…
Public trading strategy

Oil prices in freefall after Iran peace deal — short energy stocks

Created

Thesis

For months, oil prices carried a 'war premium' — an extra cost baked in because of the risk to Middle Eastern oil supplies. With the war halted and tankers moving freely through the Strait of Hormuz again, that premium is evaporating fast. As long as the ceasefire holds, there is significantly more downside pressure on oil and energy companies than upside. We expect oil-related stocks to play catch-up to the lower crude prices over the coming weeks.

Strategy approach

Build a rule-based strategy that enters short USO on the daily timeframe when the security closes below its 20-day simple moving average and the 20-day SMA is sloping downward. Confirm entry only when daily RSI(14) is below 40. Exit conditions: cover at 4% profit from entry price, cover with a hard stop loss at 2.5% above entry, or exit after 10 trading days.

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: SMA/RSI Signal Short (USO@1d) (2 conditions)
  • Entry: SMA/RSI Signal Short (XLE@1d) (2 conditions)
  • Exit: Stop Loss at 2.5% (1 condition)
  • Exit: Take Profit at 4.0% (1 condition)

Shared strategy rules

Rule configuration

{
  "data_dependencies": [
    {
      "symbol": "USO",
      "timeframe": "1d"
    },
    {
      "symbol": "XLE",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "less_than",
          "right": {
            "type": "constant",
            "value": 40
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_1_uso",
      "name": "SMA/RSI Signal Short (USO@1d)",
      "priority": 1,
      "trade_symbol": "USO"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "XLE",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "XLE",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "less_than",
          "right": {
            "type": "constant",
            "value": 40
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_1_xle",
      "name": "SMA/RSI Signal Short (XLE@1d)",
      "priority": 2,
      "trade_symbol": "XLE"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -2.5
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Stop Loss at 2.5%",
      "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": 4
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "Take Profit at 4.0%",
      "priority": 11,
      "purpose": "take_profit"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "stop_loss_percent": 2.5,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Indicator configuration

{
  "indicators": [
    {
      "name": "sma",
      "period": 20
    },
    {
      "name": "rsi",
      "period": 14
    },
    {
      "name": "sma",
      "period": 20
    },
    {
      "name": "rsi",
      "period": 14
    }
  ]
}

Parsed strategy

{
  "data_dependencies": [
    {
      "symbol": "USO",
      "timeframe": "1d"
    },
    {
      "symbol": "XLE",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "less_than",
          "right": {
            "type": "constant",
            "value": 40
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_1_uso",
      "name": "SMA/RSI Signal Short (USO@1d)",
      "priority": 1,
      "trade_symbol": "USO"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "XLE",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "sma",
              "period": 20
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "XLE",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "rsi",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "less_than",
          "right": {
            "type": "constant",
            "value": 40
          }
        }
      ],
      "direction": "short",
      "enabled": true,
      "id": "entry_1_xle",
      "name": "SMA/RSI Signal Short (XLE@1d)",
      "priority": 2,
      "trade_symbol": "XLE"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "less_than_or_equal",
          "right": {
            "type": "constant",
            "value": -2.5
          }
        }
      ],
      "enabled": true,
      "id": "exit_1",
      "name": "Stop Loss at 2.5%",
      "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": 4
          }
        }
      ],
      "enabled": true,
      "id": "exit_2",
      "name": "Take Profit at 4.0%",
      "priority": 11,
      "purpose": "take_profit"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "stop_loss_percent": 2.5,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Strategy instructions

Trading agent generated from recommendation idea 'Oil prices in freefall after Iran peace deal — short energy stocks'. Thesis: For months, oil prices carried a 'war premium' — an extra cost baked in because of the risk to Middle Eastern oil supplies. With the war halted and tankers moving freely through the Strait of Hormuz again, that premium is evaporating fast. As long as the ceasefire holds, there is significantly more downside pressure on oil and energy companies than upside. We expect oil-related stocks to play catch-up to the lower crude prices over the coming weeks.

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