Iran ceasefire is over and oil is surging — ride the defense stock rally
Created
Thesis
The breakdown of the Iran ceasefire is doing exactly what you'd expect: sending oil prices up over 5% and causing a broad stock market scare. But while the Dow and S&P tumble, defense stocks like Lockheed Martin and Northrop Grumman are rising as investors anticipate increased military spending and prolonged conflict in the Middle East. This divergence—defense going up while the rest of the market goes down—is the easiest way to trade geopolitical shocks. As long as the Iran situation remains unresolved and oil stays elevated, defense contractors should continue to outperform.
Strategy approach
Build a momentum strategy that enters long LMT and NOC on D1 when front-month crude oil futures (CL=F) gain > 4% in a single session and SPY drops > 1%. Hold for up to 15 trading days. Exit if oil futures give back 50% of the breakout day's gain, or use a tight 5% trailing stop.
Markets and timeframes
Latest published rule evaluation
Evaluated . This is a dated rule snapshot, not a live price or trade execution confirmation.
LMT · 1d
2 of 4 published entry conditions marked met.
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — met
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — met
- ROC (1) below -2 — far
- ROC (1) below -2 — far
NOC · 1d
2 of 4 published entry conditions marked met.
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — met
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — met
- ROC (1) below -2 — far
- ROC (1) below -2 — far
RTX · 1d
0 of 4 published entry conditions marked met.
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — far
- Momentum (1) above 0.5 — far
- ADX (14) above 20 — far
- ROC (1) below -2 — met
- ROC (1) below -2 — 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: MOMENTUM/ADX Crossover Long (USO@1d) (3 conditions)
- Entry: MOMENTUM/ADX Crossover Long (SPY@1d) (3 conditions)
- Exit: ROC Threshold Exit (USO@1d) (1 condition)
- Exit: ROC Threshold Exit (SPY@1d) (1 condition)
- Exit: TP: Near Resistance[1] (USO@1d) (1 condition)
- Exit: TP: Near Resistance[1] (SPY@1d) (1 condition)
- Exit: SL: Below Support[1] (USO@1d) (1 condition)
- Exit: SL: Below Support[1] (SPY@1d) (1 condition)
- Exit: Stop Loss at 2.4% (1 condition)
- Exit: Take Profit at 4.9% (1 condition)
Shared strategy rules
Rule configuration
{
"data_dependencies": [
{
"symbol": "USO",
"timeframe": "1d"
},
{
"symbol": "SPY",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "resistance_level"
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1_uso",
"name": "MOMENTUM/ADX Crossover Long (USO@1d)",
"priority": 50,
"trade_symbol": "USO"
},
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "resistance_level"
}
},
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
},
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1_spy",
"name": "MOMENTUM/ADX Crossover Long (SPY@1d)",
"priority": 51,
"trade_symbol": "SPY"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
}
],
"enabled": true,
"id": "exit_1_uso",
"name": "ROC Threshold Exit (USO@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "USO"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
}
],
"enabled": true,
"id": "exit_1_spy",
"name": "ROC Threshold Exit (SPY@1d)",
"priority": 2,
"purpose": "signal",
"target_symbol": "SPY"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_uso",
"name": "TP: Near Resistance[1] (USO@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "USO"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_spy",
"name": "TP: Near Resistance[1] (SPY@1d)",
"priority": 98,
"purpose": "take_profit",
"target_symbol": "SPY"
},
{
"applies_to": "long",
"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": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_spy",
"name": "SL: Below Support[1] (SPY@1d)",
"priority": 101,
"purpose": "stop_loss",
"target_symbol": "SPY"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.446466666666667
}
}
],
"enabled": true,
"id": "exit_4",
"name": "Stop Loss at 2.4%",
"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.892933333333334
}
}
],
"enabled": true,
"id": "exit_5",
"name": "Take Profit at 4.9%",
"priority": 100,
"purpose": "take_profit"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2.446466666666667,
"support_stop_rank": 1,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Indicator configuration
{
"indicators": [
{
"name": "roc",
"period": 1
},
{
"name": "momentum",
"period": 1
},
{
"name": "adx",
"period": 14
},
{
"name": "roc",
"period": 1
},
{
"name": "momentum",
"period": 1
},
{
"name": "adx",
"period": 14
}
]
}Parsed strategy
{
"data_dependencies": [
{
"symbol": "USO",
"timeframe": "1d"
},
{
"symbol": "SPY",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "resistance_level"
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
},
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1_uso",
"name": "MOMENTUM/ADX Crossover Long (USO@1d)",
"priority": 50,
"trade_symbol": "USO"
},
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_above",
"right": {
"rank": 1,
"type": "resistance_level"
}
},
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
},
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 20
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1_spy",
"name": "MOMENTUM/ADX Crossover Long (SPY@1d)",
"priority": 51,
"trade_symbol": "SPY"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "USO",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
}
],
"enabled": true,
"id": "exit_1_uso",
"name": "ROC Threshold Exit (USO@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "USO"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
}
],
"enabled": true,
"id": "exit_1_spy",
"name": "ROC Threshold Exit (SPY@1d)",
"priority": 2,
"purpose": "signal",
"target_symbol": "SPY"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_uso",
"name": "TP: Near Resistance[1] (USO@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "USO"
},
{
"applies_to": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_spy",
"name": "TP: Near Resistance[1] (SPY@1d)",
"priority": 98,
"purpose": "take_profit",
"target_symbol": "SPY"
},
{
"applies_to": "long",
"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": "long",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_spy",
"name": "SL: Below Support[1] (SPY@1d)",
"priority": 101,
"purpose": "stop_loss",
"target_symbol": "SPY"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.446466666666667
}
}
],
"enabled": true,
"id": "exit_4",
"name": "Stop Loss at 2.4%",
"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.892933333333334
}
}
],
"enabled": true,
"id": "exit_5",
"name": "Take Profit at 4.9%",
"priority": 100,
"purpose": "take_profit"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2.446466666666667,
"support_stop_rank": 1,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Strategy instructions
Trading agent generated from recommendation idea 'Iran ceasefire is over and oil is surging — ride the defense stock rally'. Thesis: The breakdown of the Iran ceasefire is doing exactly what you'd expect: sending oil prices up over 5% and causing a broad stock market scare. But while the Dow and S&P tumble, defense stocks like Lockheed Martin and Northrop Grumman are rising as investors anticipate increased military spending and prolonged conflict in the Middle East. This divergence—defense going up while the rest of the market goes down—is the easiest way to trade geopolitical shocks. As long as the Iran situation remains unresolved and oil stays elevated, defense contractors should continue to outperform.
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