AI demand is surging but tech stocks are tanking — rotate into banks riding the
Created
Thesis
Taiwan Semiconductor's strong earnings confirm the AI spending boom is very real and capital-intensive — but the 'Nasdaq Slides' headline shows investors are currently punishing exactly the stocks that benefit from this trend in a classic 'sell the news' moment. Rather than catching a falling knife in semiconductor names, the smarter rotation play is into big banks. JPMorgan and Goldman Sachs just received a green light from the Fed's stress test and immediately announced a combined avalanche of buybacks and dividend hikes. This creates a clean divergence: AI fundamentals are strengthening but AI stocks are being sold, while banks have tangible, locked-in shareholder returns and zero regulatory overhang. The trade is to rotate from the chaos of tech into the certainty of bank cash returns until the tech dust settles.
Strategy approach
Build a pair-trading strategy that enters long JPM and short an equal-dollar amount of QQQ (Nasdaq proxy) on D1 when QQQ drops >2% on the day AND JPM is up on the day. Hold for 21 days maximum. Exit the entire pair when JPM's relative strength vs. QQQ (measured as the JPM/QQQ ratio) reaches a 10-day high. Use an 8% stop loss on each leg.
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: ROC/MOMENTUM Signal Long (JPM@1d) (3 conditions)
- Entry: ROC Signal Short (QQQ@1d) (2 conditions)
- Entry: ROC Signal Long (GS@1d) (2 conditions)
- Exit: DONCHIAN Crosses Above Exit (JPM@1d) (1 condition)
- Exit: TP: Near Resistance[1] (JPM@1d) (1 condition)
- Exit: SL: Below Support[1] (JPM@1d) (1 condition)
- Exit: Stop Loss at 2.4% (1 condition)
- Exit: Take Profit at 4.8% (1 condition)
Shared strategy rules
Rule configuration
{
"data_dependencies": [
{
"symbol": "JPM",
"timeframe": "1d"
},
{
"symbol": "QQQ",
"timeframe": "1d"
},
{
"symbol": "GS",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 10
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "ROC/MOMENTUM Signal Long (JPM@1d)",
"priority": 1,
"trade_symbol": "JPM"
},
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
}
],
"direction": "short",
"enabled": true,
"id": "entry_2",
"name": "ROC Signal Short (QQQ@1d)",
"priority": 2,
"trade_symbol": "QQQ"
},
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_3",
"name": "ROC Signal Long (GS@1d)",
"priority": 3,
"trade_symbol": "GS"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"field": "upper",
"indicator": {
"name": "donchian",
"period": 10
},
"type": "indicator"
},
"operator": "crossed_above",
"right": {
"type": "constant",
"value": 0
}
}
],
"enabled": true,
"id": "exit_1",
"name": "DONCHIAN Crosses Above Exit (JPM@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2",
"name": "TP: Near Resistance[1] (JPM@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_below",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3",
"name": "SL: Below Support[1] (JPM@1d)",
"priority": 100,
"purpose": "stop_loss",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.4158999999999997
}
}
],
"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.831799999999999
}
}
],
"enabled": true,
"id": "exit_5",
"name": "Take Profit at 4.8%",
"priority": 100,
"purpose": "take_profit"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2.4158999999999997,
"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": 10
},
{
"name": "donchian",
"period": 10
},
{
"name": "roc",
"period": 1
},
{
"name": "momentum",
"period": 10
},
{
"name": "donchian",
"period": 10
}
]
}Parsed strategy
{
"data_dependencies": [
{
"symbol": "JPM",
"timeframe": "1d"
},
{
"symbol": "QQQ",
"timeframe": "1d"
},
{
"symbol": "GS",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "momentum",
"period": 10
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0.5
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "ROC/MOMENTUM Signal Long (JPM@1d)",
"priority": 1,
"trade_symbol": "JPM"
},
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
}
],
"direction": "short",
"enabled": true,
"id": "entry_2",
"name": "ROC Signal Short (QQQ@1d)",
"priority": 2,
"trade_symbol": "QQQ"
},
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "QQQ",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": -2
}
},
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"indicator": {
"name": "roc",
"period": 1
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 0
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_3",
"name": "ROC Signal Long (GS@1d)",
"priority": 3,
"trade_symbol": "GS"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "JPM",
"timeframe": "1d"
},
"field": "upper",
"indicator": {
"name": "donchian",
"period": 10
},
"type": "indicator"
},
"operator": "crossed_above",
"right": {
"type": "constant",
"value": 0
}
}
],
"enabled": true,
"id": "exit_1",
"name": "DONCHIAN Crosses Above Exit (JPM@1d)",
"priority": 1,
"purpose": "signal",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2",
"name": "TP: Near Resistance[1] (JPM@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "crossed_below",
"right": {
"rank": 1,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3",
"name": "SL: Below Support[1] (JPM@1d)",
"priority": 100,
"purpose": "stop_loss",
"target_symbol": "JPM"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "unrealized_pnl_percent",
"type": "position"
},
"operator": "less_than_or_equal",
"right": {
"type": "constant",
"value": -2.4158999999999997
}
}
],
"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.831799999999999
}
}
],
"enabled": true,
"id": "exit_5",
"name": "Take Profit at 4.8%",
"priority": 100,
"purpose": "take_profit"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2.4158999999999997,
"support_stop_rank": 1,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Strategy instructions
Trading agent generated from recommendation idea 'AI demand is surging but tech stocks are tanking — rotate into banks riding the stress-test wave'. Thesis: Taiwan Semiconductor's strong earnings confirm the AI spending boom is very real and capital-intensive — but the 'Nasdaq Slides' headline shows investors are currently punishing exactly the stocks that benefit from this trend in a classic 'sell the news' moment. Rather than catching a falling knife in semiconductor names, the smarter rotation play is into big banks. JPMorgan and Goldman Sachs just received a green light from the Fed's stress test and immediately announced a combined avalanche of buybacks and dividend hikes. This creates a clean divergence: AI fundamentals are strengthening but AI stocks are being sold, while banks have tangible, locked-in shareholder returns and zero regulatory overhang. The trade is to rotate from the chaos of tech into the certainty of bank cash returns until the tech dust settles.
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