Loading…
Public trading strategy

U.S.-Iran tensions ignite the Strait of Hormuz — buy oil stocks for the geopolit

Created

Thesis

The Strait of Hormuz handles roughly a fifth of the world's daily oil supply. With the U.S. and Iran now in a direct military exchange around this narrow waterway, the immediate threat to global supply is the highest it has been in years. Even if the waterway remains technically open, shipping insurance costs will skyrocket, forcing crude prices higher. U.S. oil producers like ExxonMobil and Chevron are largely insulated from these overseas supply shocks and stand to capture massive profit margins as global prices surge.

Strategy approach

Build a trend-following strategy on USO (United States Oil Fund) and XOP (SPDR S&P Oil & Gas Exploration & Production ETF) on the Daily timeframe. Enter a long position when price closes above the upper Bollinger Band (20, 2) and the ATR(14) is expanding. Use a fixed 10-day hold period or exit early if the price closes below the 10-day Exponential Moving Average.

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/ATR Signal Long (USO@1d) (2 conditions)
  • Entry: BB/ATR Signal Long (XOM@1d) (2 conditions)
  • Entry: BB/ATR Signal Long (CVX@1d) (2 conditions)
  • Exit: Take Profit at 10.0% (USO@1d) (2 conditions)
  • Exit: Take Profit at 10.0% (XOM@1d) (2 conditions)
  • Exit: Take Profit at 10.0% (CVX@1d) (2 conditions)
  • Exit: TP: Fib Extension 127.2% (USO@1d) (1 condition)
  • Exit: TP: Fib Extension 127.2% (XOM@1d) (1 condition)
  • Exit: TP: Fib Extension 127.2% (CVX@1d) (1 condition)
  • Exit: SL: Below Support[1] (USO@1d) (1 condition)
  • Exit: SL: Below Support[1] (XOM@1d) (1 condition)
  • Exit: SL: Below Support[1] (CVX@1d) (1 condition)

Shared strategy rules

Rule configuration

{
  "data_dependencies": [
    {
      "symbol": "USO",
      "timeframe": "1d"
    },
    {
      "symbol": "XOM",
      "timeframe": "1d"
    },
    {
      "symbol": "CVX",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_uso",
      "name": "BB/ATR Signal Long (USO@1d)",
      "priority": 1,
      "trade_symbol": "USO"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_xom",
      "name": "BB/ATR Signal Long (XOM@1d)",
      "priority": 2,
      "trade_symbol": "XOM"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_cvx",
      "name": "BB/ATR Signal Long (CVX@1d)",
      "priority": 3,
      "trade_symbol": "CVX"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_uso",
      "name": "Take Profit at 10.0% (USO@1d)",
      "priority": 1,
      "purpose": "signal",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_xom",
      "name": "Take Profit at 10.0% (XOM@1d)",
      "priority": 2,
      "purpose": "signal",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_cvx",
      "name": "Take Profit at 10.0% (CVX@1d)",
      "priority": 3,
      "purpose": "signal",
      "target_symbol": "CVX"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_uso",
      "name": "TP: Fib Extension 127.2% (USO@1d)",
      "priority": 97,
      "purpose": "take_profit",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_xom",
      "name": "TP: Fib Extension 127.2% (XOM@1d)",
      "priority": 98,
      "purpose": "take_profit",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_cvx",
      "name": "TP: Fib Extension 127.2% (CVX@1d)",
      "priority": 99,
      "purpose": "take_profit",
      "target_symbol": "CVX"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_uso",
      "name": "SL: Below Support[1] (USO@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_xom",
      "name": "SL: Below Support[1] (XOM@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_cvx",
      "name": "SL: Below Support[1] (CVX@1d)",
      "priority": 102,
      "purpose": "stop_loss",
      "target_symbol": "CVX"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "support_stop_rank": 1,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Indicator configuration

{
  "indicators": [
    {
      "name": "bollinger_bands",
      "period": 20,
      "std_dev": 2
    },
    {
      "name": "atr",
      "period": 14
    },
    {
      "name": "ema",
      "period": 10
    },
    {
      "name": "bollinger_bands",
      "period": 20,
      "std_dev": 2
    },
    {
      "name": "atr",
      "period": 14
    },
    {
      "name": "ema",
      "period": 10
    },
    {
      "name": "bollinger_bands",
      "period": 20,
      "std_dev": 2
    },
    {
      "name": "atr",
      "period": 14
    },
    {
      "name": "ema",
      "period": 10
    }
  ]
}

Parsed strategy

{
  "data_dependencies": [
    {
      "symbol": "USO",
      "timeframe": "1d"
    },
    {
      "symbol": "XOM",
      "timeframe": "1d"
    },
    {
      "symbol": "CVX",
      "timeframe": "1d"
    }
  ],
  "entry_rules": [
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_uso",
      "name": "BB/ATR Signal Long (USO@1d)",
      "priority": 1,
      "trade_symbol": "USO"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_xom",
      "name": "BB/ATR Signal Long (XOM@1d)",
      "priority": 2,
      "trade_symbol": "XOM"
    },
    {
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "field": "upper",
            "indicator": {
              "name": "bollinger_bands",
              "period": 20,
              "std_dev": 2
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          },
          "operator": "greater_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "atr",
              "period": 14
            },
            "type": "indicator"
          }
        }
      ],
      "direction": "long",
      "enabled": true,
      "id": "entry_1_cvx",
      "name": "BB/ATR Signal Long (CVX@1d)",
      "priority": 3,
      "trade_symbol": "CVX"
    }
  ],
  "exit_rules": [
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_uso",
      "name": "Take Profit at 10.0% (USO@1d)",
      "priority": 1,
      "purpose": "signal",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_xom",
      "name": "Take Profit at 10.0% (XOM@1d)",
      "priority": 2,
      "purpose": "signal",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "indicator": {
              "name": "ema",
              "period": 10
            },
            "type": "indicator"
          }
        },
        {
          "left": {
            "field": "unrealized_pnl_percent",
            "type": "position"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "type": "constant",
            "value": 10
          }
        }
      ],
      "enabled": true,
      "id": "exit_1_cvx",
      "name": "Take Profit at 10.0% (CVX@1d)",
      "priority": 3,
      "purpose": "signal",
      "target_symbol": "CVX"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "USO",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_uso",
      "name": "TP: Fib Extension 127.2% (USO@1d)",
      "priority": 97,
      "purpose": "take_profit",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "XOM",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_xom",
      "name": "TP: Fib Extension 127.2% (XOM@1d)",
      "priority": 98,
      "purpose": "take_profit",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "greater_than_or_equal",
          "right": {
            "chart_ref": {
              "symbol": "CVX",
              "timeframe": "1d"
            },
            "ratio": 1272,
            "type": "fibonacci_extension"
          }
        }
      ],
      "enabled": true,
      "id": "exit_2_cvx",
      "name": "TP: Fib Extension 127.2% (CVX@1d)",
      "priority": 99,
      "purpose": "take_profit",
      "target_symbol": "CVX"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_uso",
      "name": "SL: Below Support[1] (USO@1d)",
      "priority": 100,
      "purpose": "stop_loss",
      "target_symbol": "USO"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_xom",
      "name": "SL: Below Support[1] (XOM@1d)",
      "priority": 101,
      "purpose": "stop_loss",
      "target_symbol": "XOM"
    },
    {
      "applies_to": "both",
      "conditions": [
        {
          "left": {
            "field": "close",
            "type": "price"
          },
          "operator": "less_than",
          "right": {
            "rank": 1,
            "type": "support_level"
          }
        }
      ],
      "enabled": true,
      "id": "exit_3_cvx",
      "name": "SL: Below Support[1] (CVX@1d)",
      "priority": 102,
      "purpose": "stop_loss",
      "target_symbol": "CVX"
    }
  ],
  "position_sizing": {
    "max_position_percent": 25,
    "method": {
      "risk_percent": 2,
      "support_stop_rank": 1,
      "type": "fixed_risk"
    },
    "min_position_value": 100
  },
  "trigger_timeframe": "1d",
  "version": 1
}

Strategy instructions

Trading agent generated from recommendation idea 'U.S.-Iran tensions ignite the Strait of Hormuz — buy oil stocks for the geopolitical premium'. Thesis: The Strait of Hormuz handles roughly a fifth of the world's daily oil supply. With the U.S. and Iran now in a direct military exchange around this narrow waterway, the immediate threat to global supply is the highest it has been in years. Even if the waterway remains technically open, shipping insurance costs will skyrocket, forcing crude prices higher. U.S. oil producers like ExxonMobil and Chevron are largely insulated from these overseas supply shocks and stand to capture massive profit margins as global prices surge.

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