Record cash piling into tech, but valuations flashing red — wait for the dip to
Created
Thesis
The stock market has been on a tear thanks to AI excitement, leading to record inflows last week. While the momentum is strong, headlines are warning that valuations are elevated, meaning stocks are expensive relative to actual earnings. Instead of buying at the very top, a smarter play is to wait for a short-term pullback. If the market takes a brief dip—like it often does after big rallies—it gives you a chance to buy the core tech index at a discount before the next leg up.
Strategy approach
Build a mean-reversion strategy on QQQ (Nasdaq ETF) using the daily timeframe. Entry: RSI(14) crosses below 30 OR price touches the lower Bollinger Band (20, 2). Exit: RSI(14) crosses above 50. Risk management: 2% hard stop-loss on entry price. Max hold: 15 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: Oversold RSI/BB Long (SPY@1d) (3 conditions)
- Exit: Position Exit Rule (SPY@1d) (1 condition)
- Exit: TP: Near Resistance[1] (SPY@1d) (1 condition)
- Exit: SL: Below Support[2] (SPY@1d) (1 condition)
- Exit: SL: Below Support[1] (SPY@1d) (1 condition)
Shared strategy rules
Rule configuration
{
"data_dependencies": [
{
"symbol": "SPY",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": 30
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "bollinger_bands",
"period": 20,
"std_dev": 2
},
"type": "indicator"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"ratio": 382,
"type": "fibonacci_retracement"
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "Oversold RSI/BB Long (SPY@1d)",
"priority": 1,
"trade_symbol": "SPY"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 50
}
}
],
"enabled": true,
"id": "exit_1",
"name": "Position Exit Rule (SPY@1d)",
"priority": 1,
"purpose": "signal"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2",
"name": "TP: Near Resistance[1] (SPY@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "SPY"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3",
"name": "SL: Below Support[2] (SPY@1d)",
"priority": 100,
"purpose": "stop_loss",
"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_4",
"name": "SL: Below Support[1] (SPY@1d)",
"priority": 100,
"purpose": "stop_loss"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2,
"support_stop_rank": 2,
"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
}
]
}Parsed strategy
{
"data_dependencies": [
{
"symbol": "SPY",
"timeframe": "1d"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "less_than",
"right": {
"type": "constant",
"value": 30
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"field": "lower",
"indicator": {
"name": "bollinger_bands",
"period": 20,
"std_dev": 2
},
"type": "indicator"
}
},
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"ratio": 382,
"type": "fibonacci_retracement"
}
}
],
"direction": "long",
"enabled": true,
"id": "entry_1",
"name": "Oversold RSI/BB Long (SPY@1d)",
"priority": 1,
"trade_symbol": "SPY"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"chart_ref": {
"symbol": "SPY",
"timeframe": "1d"
},
"indicator": {
"name": "rsi",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 50
}
}
],
"enabled": true,
"id": "exit_1",
"name": "Position Exit Rule (SPY@1d)",
"priority": 1,
"purpose": "signal"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than_or_equal",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2",
"name": "TP: Near Resistance[1] (SPY@1d)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "SPY"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3",
"name": "SL: Below Support[2] (SPY@1d)",
"priority": 100,
"purpose": "stop_loss",
"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_4",
"name": "SL: Below Support[1] (SPY@1d)",
"priority": 100,
"purpose": "stop_loss"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2,
"support_stop_rank": 2,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "1d",
"version": 1
}Strategy instructions
Trading agent generated from recommendation idea 'Record cash piling into tech, but valuations flashing red — wait for the dip to buy Nasdaq'. Thesis: The stock market has been on a tear thanks to AI excitement, leading to record inflows last week. While the momentum is strong, headlines are warning that valuations are elevated, meaning stocks are expensive relative to actual earnings. Instead of buying at the very top, a smarter play is to wait for a short-term pullback. If the market takes a brief dip—like it often does after big rallies—it gives you a chance to buy the core tech index at a discount before the next leg up.
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