Iran spooked the oil market, but the real story is a hidden supply glut — long i
Created
Thesis
A tanker attack in the Middle East has sparked fear and pushed oil prices higher as Iran rattles its saber over the Strait of Hormuz. But the physical crude market tells a different story: the strait is actually reopening and Persian Gulf output is ramping up so fast that Asian refiners are swimming in supply and sending cargoes as far as California. This gap between fear-driven headlines and the actual glut of oil on the water creates a setup where the price spike is likely temporary. When oil prices fall back to reality, independent refiners like Valero benefit from cheaper input costs, making this a classic 'fade the fear' opportunity.
Strategy approach
Build a mean-reversion strategy on D1 timeframe. Enter long VLO when WTI crude oil futures (CL=F) gap up >2% on news-driven fear (measured by the spread between high and prior close) while the Brent-WTI spread remains compressed. Exit after 10 trading days or when CL=F makes a new 10-day low, indicating the fear premium is unwinding. Set a 6% stop loss.
Markets and timeframes
Latest published rule evaluation
Evaluated . This is a dated rule snapshot, not a live price or trade execution confirmation.
MPC · 1d
1 of 3 published entry conditions marked met.
- RSI (14) below 35 — far
- Price below Bollinger (20) — far
- ADX (14) above 20 — met
- Price below Donchian (10) — near
PSX · 1d
1 of 3 published entry conditions marked met.
- RSI (14) below 35 — far
- Price below Bollinger (20) — far
- ADX (14) above 20 — met
- Price below Donchian (10) — near
VLO · 1d
1 of 3 published entry conditions marked met.
- RSI (14) below 35 — far
- Price below Bollinger (20) — far
- ADX (14) above 20 — met
- Price below Donchian (10) — near
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: Oversold RSI/BB/ADX Long (USO@1d) (5 conditions)
- Exit: Position Exit Rule (USO@1d) (1 condition)
- Exit: Stop Loss at 2.8% (1 condition)
- Exit: Take Profit at 5.6% (1 condition)
- Exit: TP: Near Resistance[1] (USO@1d) (1 condition)
- Exit: SL: Below Support[1] (USO@1d) (2 conditions)
Shared strategy rules
Rule configuration
{
"data_dependencies": [
{
"symbol": "USO",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": 35
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "bollinger_bands",
"period": 20,
"std_dev": 2
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
},
{
"left": {
"field": "low",
"type": "price"
},
"operator": "less_than_or_equal",
"right": {
"rank": 1,
"type": "support_level"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "Oversold RSI/BB/ADX Long (USO@1d)",
"priority": 1,
"trade_symbol": "USO"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "donchian",
"period": 10
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1",
"name": "Position Exit Rule (USO@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "USO"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.775233333333333
}
}
],
"enabled": true,
"id": "exit_2",
"name": "Stop Loss at 2.8%",
"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": 5.550466666666666
}
}
],
"enabled": true,
"id": "exit_3",
"name": "Take Profit at 5.6%",
"priority": 100,
"purpose": "take_profit"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_4",
"name": "TP: Near Resistance[1] (USO@1d)",
"priority": 97,
"purpose": "take_profit"
},
{
"applies_to": "long",
"condition_tree": {
"children": [
{
"cond": {
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "support_level"
}
},
"op": "cond"
},
{
"cond": {
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"ratio": 786,
"type": "fibonacci_retracement"
}
},
"op": "cond"
}
],
"op": "any"
},
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "support_level"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"ratio": 786,
"type": "fibonacci_retracement"
}
}
],
"enabled": true,
"id": "exit_5",
"name": "SL: Below Support[1] (USO@1d)",
"priority": 100,
"purpose": "stop_loss"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"fib_stop_ratio": 786,
"risk_percent": 2.775233333333333,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Indicator configuration
{
"indicators": [
{
"name": "rsi",
"period": 14
},
{
"name": "bollinger_bands",
"period": 20,
"std_dev": 2
},
{
"name": "adx",
"period": 14
},
{
"name": "donchian",
"period": 10
}
]
}Parsed strategy
{
"data_dependencies": [
{
"symbol": "USO",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": 35
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "bollinger_bands",
"period": 20,
"std_dev": 2
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
},
{
"left": {
"field": "low",
"type": "price"
},
"operator": "less_than_or_equal",
"right": {
"rank": 1,
"type": "support_level"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "Oversold RSI/BB/ADX Long (USO@1d)",
"priority": 1,
"trade_symbol": "USO"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "donchian",
"period": 10
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1",
"name": "Position Exit Rule (USO@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "USO"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.775233333333333
}
}
],
"enabled": true,
"id": "exit_2",
"name": "Stop Loss at 2.8%",
"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": 5.550466666666666
}
}
],
"enabled": true,
"id": "exit_3",
"name": "Take Profit at 5.6%",
"priority": 100,
"purpose": "take_profit"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_4",
"name": "TP: Near Resistance[1] (USO@1d)",
"priority": 97,
"purpose": "take_profit"
},
{
"applies_to": "long",
"condition_tree": {
"children": [
{
"cond": {
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "support_level"
}
},
"op": "cond"
},
{
"cond": {
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"ratio": 786,
"type": "fibonacci_retracement"
}
},
"op": "cond"
}
],
"op": "any"
},
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "support_level"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"ratio": 786,
"type": "fibonacci_retracement"
}
}
],
"enabled": true,
"id": "exit_5",
"name": "SL: Below Support[1] (USO@1d)",
"priority": 100,
"purpose": "stop_loss"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"fib_stop_ratio": 786,
"risk_percent": 2.775233333333333,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Strategy instructions
Trading agent generated from recommendation idea 'Iran spooked the oil market, but the real story is a hidden supply glut — long independent refiners'. Thesis: A tanker attack in the Middle East has sparked fear and pushed oil prices higher as Iran rattles its saber over the Strait of Hormuz. But the physical crude market tells a different story: the strait is actually reopening and Persian Gulf output is ramping up so fast that Asian refiners are swimming in supply and sending cargoes as far as California. This gap between fear-driven headlines and the actual glut of oil on the water creates a setup where the price spike is likely temporary. When oil prices fall back to reality, independent refiners like Valero benefit from cheaper input costs, making this a classic 'fade the fear' opportunity.
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