Trend + Volatility Filter Combinations

Nik's request: "test various combinations of the trend + volatile filters — e.g. MACD+ATR, ADX+ATR, MA+ATR. For example, trade when volatility (ATR) is low and the trade direction corresponds to the direction of the MA (or the MACD-histogram)."

Method. Each algo's trades are sliced by daily, causal regimes (the last fully-closed prior day — no look-ahead). Direction axes: MA(50)-slope sign, MACD(12/26/9)-histogram sign, ADX/DI(14). Level axis: ATR vs its rolling median (calm/active). aligned = trade direction matches the indicator direction (long only if up, short only if down). Shown alongside our existing single-axis matrix (ATR / ER / LR-slope) as the baseline. Net of fees, ETH+SOL, 2024+, % of balance = R. ret/DD (return ÷ max-drawdown) is the headline metric; * = n<20 (noise).

What holds — and what doesn't:

Caveats: 2024+ only (3 years, up-biased — so pure MA-rising gates flatter long). Some combined cells are thin (n<20, flagged *). This is a regime-attribution study on historical trades, not a re-optimization — the point is which filters help consistently, not the single best cell.

Headline: ret/DD by filter × algo (combined book)

Green = high ret/DD, red = negative. Hover a cell for n + total%.

filter ↓ / algo →hhv llvsupertrend 10 3supertrend 7 2donchian20sol ma cross
base+5.7+0.8-0.4+3.1+2.4
ATR_low+5.3+2.2+0.7+3.9+2.6
ATR_high+1.0-0.8-1.0+0.9-0.2
ER_low+2.3+0.2+0.2+0.8+3.8
ER_high+5.2+0.7-1.0+4.2+0.5
LRslope_up+6.7+1.6+0.2+2.8+4.1
ADX_weak+6.3+2.9+0.9+4.5+2.8
ADX_strong+2.0-0.8-0.9+0.1+0.0
MA_aligned+5.3+2.1-0.3+3.1-0.1
MACD_aligned+10.9+0.8-0.7+6.6+0.9
DI_aligned+5.7+0.5-0.7+2.9+0.6
MA_aln·ATRlow+3.4+2.4+0.5+1.4+0.8
MACD_aln·ATRlow+6.9+0.1-0.2+6.3+1.4
ADXweak·ATRlow+5.4+3.2+0.8+3.2+1.7
ADXstrong·ATRhigh+0.4-1.1-1.0-0.6-0.9

Per-algo detail (Combined / Long / Short + by-year)

hhv_llv ETH 1h · channel breakout · long 200 / short 262

filternCmb rDDtot%Lng rDDtot%Sht rDDtot%
Existing single-axis matrix (baseline)
base (all)462+5.7+216%+1.8+62%+8.0+153%
ATR low260+5.3+187%+2.1+55%+12.5+132%
ATR high202+1.0+29%+0.3+7%+0.9+22%
ER low226+2.3+105%+2.0+47%+2.4+58%
ER high236+5.2+111%+0.8+15%+5.9+95%
LR-slope up225+6.7+122%+2.3+48%+4.1+75%
LR-slope dn237+3.3+93%+0.5+14%+4.8+79%
New direction axes (single)
MACD hist >0223+2.8+101%+2.9+63%+1.7+38%
MACD hist <0239+6.2+115%-0.0-1%+12.0+116%
MA rising224+11.7+161%+4.4+76%+4.7+85%
MA falling238+1.6+55%-0.4-13%+3.7+68%
+DI > -DI183+6.3+108%+3.3+63%+2.5+45%
-DI > +DI279+3.5+108%-0.0-1%+6.8+109%
ADX >= 25 (strong)266+2.0+49%-0.3-9%+2.5+58%
ADX < 25 (weak)196+6.3+167%+3.3+71%+10.7+96%
Direction-ALIGNED (trade dir = indicator dir)
MA-aligned (dir=MA)240+5.3+144%+4.4+76%+3.7+68%
MACD-aligned (dir=hist)225+10.9+179%+2.9+63%+12.0+116%
DI-aligned (dir=+DI/-DI)247+5.7+172%+3.3+63%+6.8+109%
Combined: direction × ATR level
MA-aln + ATR low129+3.4+90%+4.0+48%+1.9+42%
MA-aln + ATR high111+2.7+53%+1.3+27%+2.6+26%
MACD-aln + ATR low114+6.9+141%+4.7+63%+10.4+78%
MACD-aln + ATR high111+1.4+38%+0.0+0%+1.9+37%
DI-aln + ATR low134+3.2+108%+1.6+29%+5.0+79%
DI-aln + ATR high113+4.4+64%+2.3+34%+2.7+30%
ADX-strong + ATR low121+2.5+37%-0.7-15%+5.1+52%
ADX-strong + ATR high145+0.4+12%+0.3+6%+0.3+6%
ADX-weak + ATR low139+5.4+150%+3.9+70%+7.3+80%
ADX-weak + ATR high57+1.4+17%+0.1 *+1%+2.5+16%
ADX-strong + DI-aligned141+4.3+70%+1.1+20%+3.6+50%
By-year (combined total %, curated)
filter (combined)202420252026
base+133+110-28
ATR_low+91+118-22
ATR_high+42-8-6
ER_low+92+44-30
ER_high+42+67+2
LRslope_up+99+32-8
ADX_weak+96+93-22
ADX_strong+37+18-6
MA_aligned+86+78-20
MACD_aligned+101+91-13
DI_aligned+96+102-26
MA_aln·ATRlow+45+65-19
MACD_aln·ATRlow+55+101-15
ADXweak·ATRlow+77+95-22
ADXstrong·ATRhigh+23-5-6

supertrend_10_3 ETH 4h · trend flip · long 60 / short 60

filternCmb rDDtot%Lng rDDtot%Sht rDDtot%
Existing single-axis matrix (baseline)
base (all)120+0.8+11%-0.8-19%+4.2+30%
ATR low74+2.2+23%-0.6-11%+10.6+34%
ATR high46-0.8-12%-1.0-8%-0.6-4%
ER low67+0.2+3%-0.4-6%+1.3+9%
ER high53+0.7+8%-1.0-12%+5.1+21%
LR-slope up61+1.6+12%+0.2+2%+1.9+10%
LR-slope dn59-0.0-0%-1.0-20%+4.9+20%
New direction axes (single)
MACD hist >056-0.1-1%-1.1 *-13%+1.9+11%
MACD hist <064+1.9+13%-0.5-6%+6.2+18%
MA rising58+3.5+24%+0.9+6%+3.5+18%
MA falling62-1.1-13%-1.0-24%+5.5+12%
+DI > -DI45+1.2+7%-1.1 *-10%+4.3+17%
-DI > +DI75+0.3+4%-0.6-9%+3.2+13%
ADX >= 25 (strong)70-0.8-11%-1.0-27%+3.3+16%
ADX < 25 (weak)50+2.9+22%+1.4+8%+4.4+14%
Direction-ALIGNED (trade dir = indicator dir)
MA-aligned (dir=MA)52+2.1+17%+0.9+6%+5.5+12%
MACD-aligned (dir=hist)40+0.8+6%-1.1 *-13%+6.2+18%
DI-aligned (dir=+DI/-DI)45+0.5+3%-1.1 *-10%+3.2+13%
Combined: direction × ATR level
MA-aln + ATR low33+2.4+17%+1.2 *+6%+2.8 *+11%
MA-aln + ATR high19+0.1 *+0%-0.0 *-0%+0.2 *+1%
MACD-aln + ATR low27+0.1+1%-1.1 *-10%+4.9 *+10%
MACD-aln + ATR high13+1.3 *+5%-1.5 *-3%+2.7 *+8%
DI-aln + ATR low28+1.4+8%-1.3 *-5%+3.4+13%
DI-aln + ATR high17-0.8 *-5%-1.2 *-5%-0.3 *-1%
ADX-strong + ATR low38+0.0+0%-1.0-16%+4.2 *+16%
ADX-strong + ATR high32-1.1-11%-1.1 *-11%-0.1 *-0%
ADX-weak + ATR low36+3.2+23%+0.9 *+5%+5.5 *+18%
ADX-weak + ATR high14-0.2 *-1%+1.3 *+3%-1.2 *-4%
ADX-strong + DI-aligned27+0.6+3%-1.1 *-5%+3.9 *+8%
By-year (combined total %, curated)
filter (combined)202420252026
base+14+2-4
ATR_low+24-1+1
ATR_high-10+3-5
ER_low+21-10-9
ER_high-8+11+5
LRslope_up+8+4-0
ADX_weak+14+15-7
ADX_strong-1-13+3
MA_aligned+12+6+0
MACD_aligned+5+2-1
DI_aligned+4+0-1
MA_aln·ATRlow+18-3+2
MACD_aln·ATRlow+3-2-0
ADXweak·ATRlow+20+10-7
ADXstrong·ATRhigh-5-1-5

supertrend_7_2 ETH 4h · trend flip · long 96 / short 104

filternCmb rDDtot%Lng rDDtot%Sht rDDtot%
Existing single-axis matrix (baseline)
base (all)200-0.4-12%-0.7-24%+1.0+12%
ATR low118+0.7+14%-0.1-2%+1.7+16%
ATR high82-1.0-26%-1.0-22%-0.5-5%
ER low100+0.2+5%-0.2-3%+0.8+8%
ER high100-1.0-17%-0.8-21%+0.4+4%
LR-slope up100+0.2+4%-0.5-8%+1.6+12%
LR-slope dn100-0.7-16%-0.7-16%-0.0-0%
New direction axes (single)
MACD hist >099-0.0-0%-1.1-13%+1.1+12%
MACD hist <0101-0.4-12%-0.5-12%-0.1-1%
MA rising100+0.2+3%-0.5-7%+1.5+11%
MA falling100-0.9-16%-0.7-17%+0.1+1%
+DI > -DI81-0.6-10%-1.0-18%+1.3+9%
-DI > +DI119-0.2-3%-0.3-6%+0.3+3%
ADX >= 25 (strong)130-0.9-27%-1.0-39%+0.9+12%
ADX < 25 (weak)70+0.9+15%+1.2+14%+0.0+0%
Direction-ALIGNED (trade dir = indicator dir)
MA-aligned (dir=MA)96-0.3-6%-0.5-7%+0.1+1%
MACD-aligned (dir=hist)69-0.7-13%-1.1-13%-0.1-1%
DI-aligned (dir=+DI/-DI)79-0.7-15%-1.0-18%+0.3+3%
Combined: direction × ATR level
MA-aln + ATR low57+0.5+6%-0.1-1%+0.9+7%
MA-aln + ATR high39-0.8-12%-0.8-7%-0.7 *-6%
MACD-aln + ATR low38-0.2-2%-0.8-7%+1.8 *+5%
MACD-aln + ATR high31-0.8-12%-1.2 *-6%-0.6-6%
DI-aln + ATR low46-0.0-0%-1.1 *-11%+1.8+11%
DI-aln + ATR high33-0.9-15%-1.0 *-7%-0.7 *-8%
ADX-strong + ATR low70+0.1+1%-0.9-16%+3.0+17%
ADX-strong + ATR high60-1.0-28%-1.0-23%-0.5-5%
ADX-weak + ATR low48+0.8+13%+1.3+13%-0.0-0%
ADX-weak + ATR high22+0.2+1%+0.3 *+1%+0.1 *+1%
ADX-strong + DI-aligned55-0.2-3%-1.1 *-10%+1.0+7%
By-year (combined total %, curated)
filter (combined)202420252026
base+10-17-5
ATR_low+17-1-2
ATR_high-7-16-4
ER_low+17-7-5
ER_high-8-9-0
LRslope_up+11-5-2
ADX_weak+17+8-11
ADX_strong-7-25+5
MA_aligned-3-2-2
MACD_aligned+3-14-3
DI_aligned-4-9-3
MA_aln·ATRlow+6+1-1
MACD_aln·ATRlow+1-2-1
ADXweak·ATRlow+22+2-11
ADXstrong·ATRhigh-2-22-4

donchian20 ETH 4h · channel breakout · long 121 / short 177

filternCmb rDDtot%Lng rDDtot%Sht rDDtot%
Existing single-axis matrix (baseline)
base (all)298+3.1+82%+0.4+10%+3.4+72%
ATR low169+3.9+72%+0.6+10%+5.9+62%
ATR high129+0.9+10%-0.0-0%+0.7+10%
ER low153+0.8+19%+0.5+7%+0.7+12%
ER high145+4.2+63%+0.2+3%+7.4+60%
LR-slope up152+2.8+51%+0.9+16%+3.3+36%
LR-slope dn146+2.1+31%-0.4-6%+3.2+37%
New direction axes (single)
MACD hist >0137+2.4+35%+1.8+19%+1.0+16%
MACD hist <0161+3.4+47%-0.5-9%+7.9+57%
MA rising150+5.3+69%+2.0+23%+3.9+46%
MA falling148+0.8+13%-0.7-13%+2.5+26%
+DI > -DI116+2.1+32%+0.4+6%+1.3+26%
-DI > +DI182+3.3+51%+0.3+4%+4.9+46%
ADX >= 25 (strong)173+0.1+1%-0.6-18%+1.0+19%
ADX < 25 (weak)125+4.5+82%+1.5+28%+9.7+54%
Direction-ALIGNED (trade dir = indicator dir)
MA-aligned (dir=MA)155+3.1+50%+2.0+23%+2.5+26%
MACD-aligned (dir=hist)144+6.6+76%+1.8+19%+7.9+57%
DI-aligned (dir=+DI/-DI)161+2.9+52%+0.4+6%+4.9+46%
Combined: direction × ATR level
MA-aln + ATR low87+1.4+23%+1.2+12%+0.8+11%
MA-aln + ATR high68+2.9+27%+1.3+12%+2.9+15%
MACD-aln + ATR low74+6.3+56%+2.3+18%+10.3+38%
MACD-aln + ATR high70+1.5+20%+0.1+1%+1.9+19%
DI-aln + ATR low88+1.9+26%-0.1-2%+4.0+28%
DI-aln + ATR high73+3.7+25%+0.8+7%+3.5+18%
ADX-strong + ATR low82+0.9+10%-0.6-10%+1.8+20%
ADX-strong + ATR high91-0.6-10%-0.5-8%-0.2-2%
ADX-weak + ATR low87+3.2+62%+1.3+20%+8.9+42%
ADX-weak + ATR high38+4.0+20%+2.5 *+8%+1.6+12%
ADX-strong + DI-aligned94+1.8+18%-0.0-0%+2.1+18%
By-year (combined total %, curated)
filter (combined)202420252026
base+72+23-13
ATR_low+56+22-6
ATR_high+16+1-7
ER_low+36-0-17
ER_high+36+23+4
LRslope_up+43+14-6
ADX_weak+69+27-15
ADX_strong+3-4+2
MA_aligned+29+27-7
MACD_aligned+60+17-1
DI_aligned+34+29-11
MA_aln·ATRlow+17+11-6
MACD_aln·ATRlow+33+25-2
ADXweak·ATRlow+55+21-15
ADXstrong·ATRhigh+2-5-7

sol_ma_cross SOL 1h · MA cross · long 160 / short 288

filternCmb rDDtot%Lng rDDtot%Sht rDDtot%
Existing single-axis matrix (baseline)
base (all)448+2.4+79%-0.3-14%+4.6+93%
ATR low247+2.6+87%-0.1-4%+4.5+92%
ATR high201-0.2-8%-0.3-10%+0.1+2%
ER low217+3.8+63%-0.6-19%+5.4+81%
ER high231+0.5+17%+0.2+5%+0.3+12%
LR-slope up235+4.1+70%-0.3-10%+4.8+79%
LR-slope dn213+0.2+10%-0.2-4%+0.5+14%
New direction axes (single)
MACD hist >0210+2.2+47%-0.6-14%+4.6+60%
MACD hist <0238+1.4+33%-0.0-0%+2.0+33%
MA rising238+3.2+55%-0.6-21%+4.0+75%
MA falling210+0.8+25%+0.2+7%+0.9+18%
+DI > -DI166+2.5+53%-0.7-12%+3.7+65%
-DI > +DI282+0.6+26%-0.1-2%+1.1+28%
ADX >= 25 (strong)233+0.0+2%-1.0-54%+3.1+55%
ADX < 25 (weak)215+2.8+78%+2.3+40%+2.2+38%
Direction-ALIGNED (trade dir = indicator dir)
MA-aligned (dir=MA)208-0.1-3%-0.6-21%+0.9+18%
MACD-aligned (dir=hist)176+0.9+19%-0.6-14%+2.0+33%
DI-aligned (dir=+DI/-DI)194+0.6+16%-0.7-12%+1.1+28%
Combined: direction × ATR level
MA-aln + ATR low122+0.8+19%-0.2-4%+1.3+22%
MA-aln + ATR high86-0.6-21%-0.6-17%-0.4-5%
MACD-aln + ATR low95+1.4+29%-1.0-17%+4.5+46%
MACD-aln + ATR high81-0.4-10%+0.4+3%-0.7-13%
DI-aln + ATR low104+0.9+24%-1.3 *-5%+1.2+29%
DI-aln + ATR high90-0.3-8%-0.4-7%-0.0-1%
ADX-strong + ATR low100+1.4+43%-0.6-13%+3.3+56%
ADX-strong + ATR high133-0.9-41%-1.0-40%-0.1-1%
ADX-weak + ATR low147+1.7+44%+0.6+9%+2.3+35%
ADX-weak + ATR high68+2.2+33%+5.9+31%+0.1+3%
ADX-strong + DI-aligned111-0.2-8%-1.0-16%+0.4+8%
By-year (combined total %, curated)
filter (combined)202420252026
base+33+46+0
ATR_low+41+49-3
ATR_high-8-3+3
ER_low+19+39+4
ER_high+14+7-4
LRslope_up+33+16+21
ADX_weak+48+53-23
ADX_strong-15-7+23
MA_aligned-22+13+7
MACD_aligned+12+6+1
DI_aligned+6+16-6
MA_aln·ATRlow-9+26+1
MACD_aln·ATRlow+5+30-6
ADXweak·ATRlow+32+34-21
ADXstrong·ATRhigh-25-22+5
All filters causal (regime as of the last fully-closed prior day). Source: run_trend_combo_filters.pytrend_combo_filters.json. ret/DD = total return ÷ |max drawdown|; tot% = cumulative % of balance (1% risk per trade = 1R).