Fox buys Roku for $22 billion — ride the streaming mega-merger momentum
Created
Thesis
When a buyout is announced, the target company's stock usually jumps immediately to just below the buyout price because the deal is all but guaranteed. But the combined company will be an absolute advertising and streaming powerhouse, which might make other big media companies feel pressure to make their own acquisitions. Even if the buyout goes smoothly, Roku's stock tends to have strong upward momentum in the days following the initial pop as smaller investors catch up to the news.
Strategy approach
Build a rule-based strategy that enters long ROKU on the 4-hour timeframe when the price pulls back to and bounces off the 20-period exponential moving average (EMA), with an 8-day max hold and a 4% trailing stop.
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: EMA/ADX Signal Long (ROKU@4h) (5 conditions)
- Entry: EMA/ADX Signal Long (FOXA@4h) (5 conditions)
- Exit: Position Exit Rule (ROKU@4h) (1 condition)
- Exit: Position Exit Rule (FOXA@4h) (1 condition)
- Exit: TP: Near Resistance[1] (ROKU@4h) (1 condition)
- Exit: TP: Near Resistance[1] (FOXA@4h) (1 condition)
- Exit: SL: Below Support[2] (ROKU@4h) (1 condition)
- Exit: SL: Below Support[2] (FOXA@4h) (1 condition)
Shared strategy rules
Rule configuration
{
"data_dependencies": [
{
"symbol": "ROKU",
"timeframe": "4h"
},
{
"symbol": "FOXA",
"timeframe": "4h"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 25
}
},
{
"left": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"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_roku",
"name": "EMA/ADX Signal Long (ROKU@4h)",
"priority": 1,
"trade_symbol": "ROKU"
},
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 25
}
},
{
"left": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"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_foxa",
"name": "EMA/ADX Signal Long (FOXA@4h)",
"priority": 2,
"trade_symbol": "FOXA"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1_roku",
"name": "Position Exit Rule (ROKU@4h)",
"priority": 1,
"purpose": "signal",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1_foxa",
"name": "Position Exit Rule (FOXA@4h)",
"priority": 2,
"purpose": "signal",
"target_symbol": "FOXA"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_roku",
"name": "TP: Near Resistance[1] (ROKU@4h)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_foxa",
"name": "TP: Near Resistance[1] (FOXA@4h)",
"priority": 98,
"purpose": "take_profit",
"target_symbol": "FOXA"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_roku",
"name": "SL: Below Support[2] (ROKU@4h)",
"priority": 100,
"purpose": "stop_loss",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_foxa",
"name": "SL: Below Support[2] (FOXA@4h)",
"priority": 101,
"purpose": "stop_loss",
"target_symbol": "FOXA"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2,
"support_stop_rank": 2,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "4h",
"version": 1
}Indicator configuration
{
"indicators": [
{
"name": "ema",
"period": 20
},
{
"name": "adx",
"period": 14
},
{
"name": "ema",
"period": 20
},
{
"name": "adx",
"period": 14
}
]
}Parsed strategy
{
"data_dependencies": [
{
"symbol": "ROKU",
"timeframe": "4h"
},
{
"symbol": "FOXA",
"timeframe": "4h"
}
],
"entry_rules": [
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 25
}
},
{
"left": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"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_roku",
"name": "EMA/ADX Signal Long (ROKU@4h)",
"priority": 1,
"trade_symbol": "ROKU"
},
{
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
},
{
"left": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"field": "adx",
"indicator": {
"name": "adx",
"period": 14
},
"type": "indicator"
},
"operator": "greater_than",
"right": {
"type": "constant",
"value": 25
}
},
{
"left": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"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_foxa",
"name": "EMA/ADX Signal Long (FOXA@4h)",
"priority": 2,
"trade_symbol": "FOXA"
}
],
"exit_rules": [
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "ROKU",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1_roku",
"name": "Position Exit Rule (ROKU@4h)",
"priority": 1,
"purpose": "signal",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"chart_ref": {
"symbol": "FOXA",
"timeframe": "4h"
},
"indicator": {
"name": "ema",
"period": 20
},
"type": "indicator"
}
}
],
"enabled": true,
"id": "exit_1_foxa",
"name": "Position Exit Rule (FOXA@4h)",
"priority": 2,
"purpose": "signal",
"target_symbol": "FOXA"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_roku",
"name": "TP: Near Resistance[1] (ROKU@4h)",
"priority": 97,
"purpose": "take_profit",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "greater_than",
"right": {
"rank": 1,
"type": "resistance_level"
}
}
],
"enabled": true,
"id": "exit_2_foxa",
"name": "TP: Near Resistance[1] (FOXA@4h)",
"priority": 98,
"purpose": "take_profit",
"target_symbol": "FOXA"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_roku",
"name": "SL: Below Support[2] (ROKU@4h)",
"priority": 100,
"purpose": "stop_loss",
"target_symbol": "ROKU"
},
{
"applies_to": "both",
"conditions": [
{
"left": {
"field": "close",
"type": "price"
},
"operator": "less_than",
"right": {
"rank": 2,
"type": "support_level"
}
}
],
"enabled": true,
"id": "exit_3_foxa",
"name": "SL: Below Support[2] (FOXA@4h)",
"priority": 101,
"purpose": "stop_loss",
"target_symbol": "FOXA"
}
],
"position_sizing": {
"max_position_percent": 25,
"method": {
"risk_percent": 2,
"support_stop_rank": 2,
"type": "fixed_risk"
},
"min_position_value": 100
},
"trigger_timeframe": "4h",
"version": 1
}Strategy instructions
Trading agent generated from recommendation idea 'Fox buys Roku for $22 billion — ride the streaming mega-merger momentum'. Thesis: When a buyout is announced, the target company's stock usually jumps immediately to just below the buyout price because the deal is all but guaranteed. But the combined company will be an absolute advertising and streaming powerhouse, which might make other big media companies feel pressure to make their own acquisitions. Even if the buyout goes smoothly, Roku's stock tends to have strong upward momentum in the days following the initial pop as smaller investors catch up to the news.
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