CTA Trend Following

Crude Oil — Concentration, Ensemble & The Twelve Sections

Kaufman's robust-region method on Crude Oil (CL=F), then the same twelve sections as the market card — all of it on data ending 2015-12-31.

As of 2015-12-31 — the last ten years are withheld. Every number on this tab is computed on bars up to and including 2015-12-31, and nothing after that date is read by any calculation here. The cut happens on the raw price frame before any indicator touches it, so no parameter on this tab was chosen with knowledge of what came next. This market's window is 1983-03-30 → 2015-12-31 (8,221 daily bars). The withheld data still exists and has not been touched — it is the out-of-sample test for whatever comes out of this work, and it is only worth having once the strategies are fixed.
Funded entries
SMA 66, SMA 70, SMA 100, SMA 110
Direction
System B — Long & Short
Plateau
SMA 95–120 (6/25 tested)
Efficiency ratio (20d)
0.250
Read this before the numbers. The data vendor rolls one business day before last trade, so on 2020-04-20 this series still held the expiring May contract, which settled at -37.63. That bar is excluded (a percentage curve cannot represent a negative price) and the history before it is shifted by its point move, so the next day carries only the June contract's fall. A system short crude that day would in reality have banked the May collapse; this card does not count it.

K1. Where The Results Concentrate

Kaufman's method: rather than take the best of the 50 base cells, or their median, find the contiguous stretch of SMA periods that all work. The plateau is the region holding at or above 70% of the smoothed peak. Its width is the honest measure of how much room for error this market gives you.

Sortino By SMA Period — Where The Results Concentrate

Bars are each tested period on its own. The line averages each period with the tested period either side (3-point neighbourhood), which is what the selection reads. The shaded band is the plateau; the outlined bars are the funded entries.

Plateau
SMA 95–120
Width
6 of 25 tested (24%)
Periods in profit
100% of 25
Best / median / worst
0.84 / 0.50 / 0.09

Why this direction

SystemPlateau meanCoveragePeriods in profit
System A — Long Only0.623100%100%
System B — Long & Short ✓0.63824%100%

The direction is chosen on the plateau, not on the best cell. A direction that covers at least 20% of the grid wins over one that scores higher across three adjacent periods, because that narrow high score is exactly the fluke this method exists to avoid.

Speed preference vs efficiency ratio

Speed bandMean sortino
short(SMA 30–54)0.380
medium(SMA 55–80)0.529
long(SMA 81–120)0.583

Efficiency ratio over this window: 10d 0.337, 20d 0.250, 60d 0.154. A high ER means price travels in straighter lines, which should favour faster SMAs; a low ER means the path is noisy and a slower SMA should do better. The index page tests that across all markets rather than asserting it here.

K2. The Funded Ensemble — 4 Entries, Equal Weight

Each selected period is funded with 25% of the market's capital and runs as its own base system. They are deliberately spread across the plateau: adjacent periods would be one system counted several times, which is the overfit this is meant to avoid.

EntryBandWeightCAGRMax DDSharpeSortinoCalmarTradesWin rate
SMA 66medium25.0%15.6%-69.1%0.500.760.2330835.7%
SMA 70medium25.0%10.3%-80.3%0.330.500.1333234.6%
SMA 100long25.0%17.4%-65.1%0.580.840.2724836.3%
SMA 110long25.0%12.3%-69.8%0.410.590.1822631.9%
Ensemble (equal weight)100.0%15.3%-57.1%0.590.860.271114—
Mean pairwise correlation between the members' daily returns is 0.630. The ensemble's Sortino is +0.192 against the average of its members, and its drawdown +0.140 — that difference is the combination working (or not), rather than any member being good.

The ensemble against the three readings it replaces

On sortino, the tab's selection metric.

ReadingsortinoEnsemble minus thisWhat it is
Ensemble0.863—4 periods from the plateau, equal weight.
Buy & hold0.156+0.707Holding the future outright over the same window.
Median cell0.577+0.287The middle of all 50 cells — what picking a parameter at random gets you. This is the reading the earlier cross-market tables used.
Best single cell — SMA 1000.845+0.019The luckiest point on the surface. In sample it must win; the question is by how little, because whatever it wins by is what you are betting survives.

Ensemble Equity — Month-End Cumulative Return

Each funded entry gets 25% of the market's capital and runs independently. Everything stops on 2015-12-31.

Below: the same twelve sections as the market card, rebuilt in-sample. Identical code, identical grids — only the window differs. Use them to see what each risk layer would have done to the funded periods above. Section 13 (Reset / No Reset, added 2026-08-04) is deliberately not here: the client asked for it on the markets “koja imaju sve podatke”, and this tab is the one that does not. The full-history card for Crude Oil is here — do not read it while choosing parameters.
Instrument
Crude Oil (CL=F)
History
1983-03-30 → 2015-12-31
Trading Days / Year
252
Volatility Grid
15–55% (step 5)
Read this before the numbers. The data vendor rolls one business day before last trade, so on 2020-04-20 this series still held the expiring May contract, which settled at -37.63. That bar is excluded (a percentage curve cannot represent a negative price) and the history before it is shifted by its point move, so the next day carries only the June contract's fall. A system short crude that day would in reality have banked the May collapse; this card does not count it.
All results are net of trading costs. Every round turn (entry + exit) of one contract pays $5.00 commission + 1.5 ticks of slippage (1.5 × $10.00) = $20.00, i.e. 0.02 price points at $1,000 per point. Half is charged on entry and half on exit (a position still open at the end has paid only its entry half); on the compounding curve the cost is a share of the contract's real value at entry, so it weighs more on short, frequent trades. Profit Factor is gross profit ÷ gross loss over all trades (not the ATR target multiple sections 4–5 call “profit factor”); Avg Trade and Avg Loss are net USD per contract. Contract rolls are not charged as extra round turns.
How this market is calibrated. The volatility factor grid is 15–55%, derived from p10-p90 of annualized 20-day volatility, rounded to a nice step on this market's own history — not Corn's 20–60%, which would be meaningless here. Annualized 20-day volatility percentiles: p5 11.0%, p10 14.0%, p25 20.1%, p50 28.6%, p75 36.6%, p90 47.9%, p95 65.7%. Metrics annualize with 252 trading days per year. A cell at −100% CAGR means a position lost more than its stake — typically a short in a contract that more than doubled before the exit — and the later numbers in that cell are not meaningful. History from 1983-03-30: this card now runs on Norgate's Panama-adjusted series, which for most markets starts in 1978–1983 — years or decades before the feeds this site used earlier (1998–2019, depending on the market). Trend results include the 1980s–90s trends and buy-and-hold includes decades of roll cost, so neither is comparable to figures from those earlier feeds.

1. Moving Average Optimization

SMA periods 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120. Entry when the SMA turns up, exit when it turns down (System A flat, System B reverses short). Returns are percentages of capital on a compounding equity curve.

Total Return By SMA Period

System A (Long Only) vs System B (Long & Short, stop-and-reverse on the SMA slope). Percentage return on a compounding equity curve.

2. Risk Metrics — Base Systems

CAGR, total return, max drawdown, Sharpe, trade count, profit factor and the average trade / average losing trade for every base variant of both systems over 8,221 daily bars. System A = Long Only, System B = Long & Short (stop-and-reverse).

Donchian Breakout — Pure Channel

Lookback N grid 20–80 step 3, then 85, 90, 95, 100. Exit on the opposite N-period band break.

NA: CAGRA: Total ReturnA: Max DDA: SharpeA: SortinoA: CalmarA: TradesA: Profit FactorA: Avg TradeA: Avg LossB: CAGRB: Total ReturnB: Max DDB: SharpeB: SortinoB: CalmarB: TradesB: Profit FactorB: Avg TradeB: Avg Loss
2011.3%3168.7%-56.0%0.500.730.20902.25$1,365−$2,45510.9%2840.7%-79.2%0.360.520.141811.94$1,346−$2,533
2311.1%3036.0%-56.0%0.500.730.20772.36$1,577−$2,88810.1%2178.2%-85.5%0.330.480.121552.01$1,554−$2,919
2611.9%3824.3%-51.5%0.530.780.23692.56$1,884−$2,88112.1%4060.7%-78.3%0.390.580.151382.20$1,877−$2,967
2910.2%2275.0%-54.2%0.460.670.19642.26$1,753−$2,9788.6%1360.9%-79.0%0.270.400.111281.97$1,747−$3,304
329.4%1786.7%-60.3%0.410.590.16601.99$1,589−$3,2167.3%881.0%-86.8%0.230.340.081201.78$1,585−$3,655
3510.1%2219.0%-52.2%0.430.630.19532.03$1,812−$3,5719.4%1759.5%-77.1%0.300.440.121061.86$1,807−$3,885
388.2%1204.8%-55.1%0.350.500.15521.74$1,440−$3,8805.5%474.2%-84.8%0.170.260.061041.61$1,435−$4,190
417.4%923.2%-56.7%0.320.460.13501.74$1,461−$3,6393.7%222.1%-90.9%0.120.170.041001.61$1,456−$4,255
448.3%1236.4%-58.2%0.350.510.14461.83$1,743−$3,8655.6%498.2%-92.7%0.180.260.06921.70$1,738−$4,362
479.0%1553.5%-49.1%0.390.550.18412.06$2,217−$3,7406.9%776.7%-88.5%0.220.310.08821.90$2,210−$4,196
509.3%1746.0%-49.1%0.400.570.19391.90$2,253−$4,4528.0%1145.1%-79.7%0.250.360.10781.84$2,246−$4,643
5310.3%2360.3%-50.0%0.430.620.21372.04$2,408−$4,08611.0%2930.7%-79.9%0.350.520.14741.95$2,401−$4,472
5611.0%2872.1%-50.8%0.450.660.22342.73$3,214−$3,70712.6%4681.3%-82.8%0.400.600.15682.56$3,213−$3,888
5910.5%2530.1%-46.8%0.440.640.23332.68$3,147−$3,63211.8%3714.2%-78.5%0.380.560.15662.49$3,146−$3,973
6210.1%2237.6%-46.8%0.420.620.22322.50$3,011−$3,78111.1%3006.2%-81.1%0.350.530.14642.34$3,010−$4,218
659.3%1721.1%-49.3%0.400.570.19322.12$2,539−$4,2589.6%1884.7%-83.3%0.310.450.12642.03$2,538−$4,495
6810.6%2591.7%-49.4%0.430.610.21282.45$3,339−$4,28612.5%4555.8%-59.9%0.410.580.21562.38$3,338−$4,242
7110.0%2144.0%-51.4%0.400.570.19282.13$2,881−$4,77711.4%3262.6%-62.3%0.370.530.18562.08$2,881−$4,669
7410.7%2689.8%-49.4%0.430.610.22262.35$3,340−$4,93412.5%4596.7%-62.3%0.410.580.20522.27$3,344−$4,888
7712.1%4011.1%-49.4%0.490.700.24232.66$4,205−$4,48415.8%11716.4%-63.5%0.520.750.25462.60$4,210−$4,653
8011.8%3686.7%-50.1%0.480.680.24222.80$4,469−$3,89315.1%9841.8%-63.5%0.500.720.24442.72$4,474−$4,393
8511.5%3361.6%-51.3%0.460.660.22212.75$4,622−$4,27114.6%8371.8%-60.8%0.480.690.24422.71$4,635−$4,756
9011.9%3817.8%-50.1%0.480.690.24193.35$5,481−$4,03513.9%6914.9%-64.2%0.460.660.22392.89$5,293−$4,956
9514.0%7133.9%-50.1%0.560.810.28164.55$7,738−$4,35618.6%25727.9%-64.2%0.630.910.29334.00$7,448−$5,461
10012.5%4588.3%-52.3%0.510.720.24163.27$6,468−$5,69615.3%10250.8%-77.1%0.510.730.20332.99$6,216−$6,452

Moving Average — SMA Slope

SMA period grid 30→70 step 3, then 70→120 step 5. Exit/reverse when the SMA slope flips.

SMAA: CAGRA: Total ReturnA: Max DDA: SharpeA: SortinoA: CalmarA: TradesA: Profit FactorA: Avg TradeA: Avg LossB: CAGRB: Total ReturnB: Max DDB: SharpeB: SortinoB: CalmarB: TradesB: Profit FactorB: Avg TradeB: Avg Loss
306.8%764.7%-65.5%0.290.410.102921.25$182−$1,1781.9%85.4%-82.5%0.060.090.025841.21$179−$1,262
3311.1%2954.8%-60.9%0.470.680.182731.72$414−$98410.2%2249.4%-66.3%0.330.470.155461.57$411−$1,131
3610.6%2567.3%-60.1%0.450.640.182581.75$450−$1,0359.8%2020.0%-62.4%0.320.450.165161.63$447−$1,102
399.7%1942.1%-61.9%0.400.580.162361.59$437−$1,2698.5%1318.8%-74.7%0.270.390.114721.54$434−$1,265
428.9%1491.7%-60.4%0.370.520.152451.69$450−$1,1036.4%660.6%-70.6%0.210.290.094901.60$447−$1,162
4511.5%3376.3%-50.7%0.490.720.232102.12$652−$92711.8%3702.1%-67.6%0.380.560.174201.90$649−$1,125
4810.1%2235.0%-58.1%0.420.600.172041.68$506−$1,2427.8%1059.7%-72.6%0.250.350.114081.59$503−$1,302
5110.7%2679.3%-48.5%0.460.670.222061.78$560−$1,1459.6%1885.7%-84.0%0.310.450.114121.68$558−$1,240
549.7%1931.8%-60.9%0.400.560.161921.69$529−$1,2338.2%1195.9%-75.0%0.270.370.113841.61$528−$1,325
577.7%1020.6%-57.5%0.320.440.131811.45$394−$1,3684.6%332.6%-92.1%0.150.210.053621.42$392−$1,369
6010.4%2424.5%-49.1%0.440.640.211851.61$515−$1,35510.5%2526.1%-83.3%0.340.500.133701.62$513−$1,240
6310.8%2708.9%-49.1%0.450.660.221751.66$540−$1,18211.5%3432.8%-83.8%0.370.560.143501.64$538−$1,215
6612.9%5126.5%-48.4%0.540.790.271541.95$736−$1,21715.6%11092.9%-69.1%0.500.760.233081.90$735−$1,273
6911.2%3084.5%-58.0%0.470.690.191521.63$581−$1,38612.1%4055.5%-86.1%0.390.590.143041.60$580−$1,454
7010.1%2183.8%-54.3%0.420.620.191661.49$454−$1,45210.3%2322.1%-80.3%0.330.500.133321.48$454−$1,452
7512.6%4646.0%-49.3%0.530.780.251411.98$814−$1,35315.1%9728.9%-80.1%0.490.740.192821.94$814−$1,416
809.3%1712.0%-59.7%0.380.540.161421.49$473−$1,4898.0%1146.7%-78.0%0.270.380.102841.43$472−$1,619
857.7%1012.4%-67.8%0.310.440.111621.20$217−$1,7315.2%423.2%-82.9%0.170.240.063241.20$219−$1,659
9010.9%2838.6%-56.0%0.440.640.201511.59$538−$1,37912.0%3971.5%-67.3%0.400.580.183021.56$539−$1,463
9511.6%3500.6%-56.9%0.470.680.201391.64$618−$1,56913.7%6554.0%-76.6%0.460.660.182781.64$620−$1,514
10013.4%5946.1%-50.4%0.540.780.271241.94$840−$1,38817.4%18415.1%-65.1%0.580.840.272481.94$840−$1,405
10511.8%3668.5%-60.8%0.480.680.191181.54$631−$1,89514.4%7942.0%-75.2%0.490.700.192361.54$631−$1,770
11010.5%2514.8%-58.1%0.430.610.181131.66$715−$1,69012.3%4269.9%-69.8%0.410.590.182261.69$715−$1,525
11510.5%2518.6%-53.6%0.430.610.201281.79$752−$1,52412.1%4095.1%-79.5%0.410.570.152561.79$751−$1,495
1209.3%1735.9%-53.9%0.380.540.171171.87$810−$1,42610.2%2252.8%-79.4%0.340.480.132341.89$809−$1,389

2b. EMA-170 Direction Filter On The Donchian Breakout

Client 2026-07-30. The same Donchian channel and N grid as section 2, with one extra precondition: a long may only open while the 170-period EMA is rising, a short only while it is falling. The band break is still required on top, so the filter only removes trades. Exits are untouched. The unfiltered Donchian table in section 2 is the baseline — read them side by side.

Donchian gated by the EMA-170 direction

Same lookback grid as section 2. Compare row for row against the unfiltered Donchian table above.

NA: CAGRA: Total ReturnA: Max DDA: SharpeA: SortinoA: CalmarA: TradesA: Profit FactorA: Avg TradeA: Avg LossB: CAGRB: Total ReturnB: Max DDB: SharpeB: SortinoB: CalmarB: TradesB: Profit FactorB: Avg TradeB: Avg Loss
2010.4%2434.4%-52.3%0.520.760.20771.99$1,217−$2,6918.9%1518.3%-77.9%0.310.470.111461.74$1,236−$3,007
2310.6%2545.3%-50.8%0.520.760.21672.13$1,487−$2,9297.1%851.3%-80.6%0.250.370.091311.71$1,326−$3,359
2611.0%2876.2%-48.9%0.540.790.22622.31$1,698−$2,9859.0%1553.9%-75.6%0.310.460.121201.85$1,582−$3,529
2910.1%2216.8%-50.4%0.490.720.20572.07$1,628−$3,2206.3%630.2%-83.3%0.210.310.081141.69$1,440−$3,777
329.5%1805.5%-53.5%0.440.630.18541.83$1,441−$3,5884.5%317.4%-90.1%0.150.220.051101.53$1,232−$4,093
359.6%1884.2%-53.9%0.440.630.18491.89$1,661−$3,8036.3%644.0%-86.9%0.210.310.07991.65$1,532−$4,306
388.4%1271.5%-55.8%0.380.540.15481.65$1,347−$4,1164.3%294.9%-88.9%0.140.210.05971.51$1,285−$4,448
418.0%1143.7%-57.7%0.360.520.14461.73$1,433−$3,7794.2%287.2%-90.5%0.140.200.05931.57$1,404−$4,296
448.5%1315.0%-59.2%0.380.550.14431.78$1,653−$4,1446.3%623.8%-91.7%0.200.300.07861.68$1,695−$4,593
479.8%1984.3%-50.3%0.440.630.19382.11$2,237−$3,6467.5%957.7%-87.6%0.240.350.09781.87$2,131−$4,250
5010.6%2593.7%-50.3%0.470.670.21362.01$2,408−$4,3128.0%1120.5%-83.4%0.260.370.10751.78$2,110−$4,638
5310.5%2463.6%-50.3%0.460.660.21352.11$2,459−$4,06610.4%2405.6%-80.9%0.340.500.13721.91$2,299−$4,451
5611.2%3125.9%-51.9%0.490.700.22323.02$3,433−$3,63112.1%4016.9%-83.7%0.400.590.14662.56$3,181−$3,848
5910.9%2844.4%-46.8%0.480.690.23312.99$3,388−$3,52611.6%3525.3%-79.6%0.380.560.15642.51$3,140−$3,903
6210.7%2679.0%-46.8%0.470.680.23302.82$3,285−$3,61311.2%3131.0%-81.5%0.370.540.14622.39$3,024−$4,100
6510.3%2319.4%-49.3%0.450.650.21302.42$2,911−$3,83210.1%2223.4%-83.7%0.330.490.12622.11$2,663−$4,236
6811.6%3476.1%-49.4%0.470.670.23262.87$3,829−$3,80113.0%5358.1%-59.9%0.430.610.22542.50$3,525−$3,958
7111.1%2953.5%-49.4%0.450.640.22262.49$3,390−$4,22612.1%4052.3%-62.3%0.400.570.19542.20$3,090−$4,328
7411.1%2997.2%-49.4%0.450.640.22252.67$3,665−$4,22112.6%4680.5%-62.3%0.420.590.20512.37$3,472−$4,454
7712.4%4464.3%-49.4%0.510.720.25223.07$4,615−$3,77116.1%13018.9%-63.5%0.540.770.25452.78$4,410−$4,296
8012.1%4104.1%-50.1%0.490.710.24213.28$4,910−$3,23115.5%10937.6%-63.5%0.510.740.24432.92$4,690−$4,037
8512.0%3892.7%-50.1%0.490.690.24203.34$5,196−$3,41815.1%9671.4%-60.8%0.500.710.25412.96$4,915−$4,294
9011.7%3565.5%-50.1%0.470.680.23193.12$5,256−$3,92013.7%6463.1%-64.2%0.460.650.21392.81$5,184−$4,856
9513.8%6668.0%-50.1%0.550.790.28164.19$7,471−$4,16718.3%24064.7%-64.2%0.620.900.29333.86$7,319−$5,286
10012.3%4286.4%-53.0%0.500.710.23163.06$6,201−$5,35815.1%9584.2%-77.1%0.510.720.20332.90$6,087−$6,228

3. Equity Curve Explorer

Pick a period, direction and ATR profit target (or Base) to see its month-end cumulative return, starting at 0%.

Every ATR profit target is overlaid against the base system.

Loading equity curves…

4. Profit Factor Sweep

An ATR profit target swept 1.5 → 10.0 (step 0.5) for every variant. Target = entry ± PF × ATR₂₀, frozen at entry. The swept multiple is labelled ATR Target below, so it is not confused with the Profit Factor column (gross profit ÷ gross loss).

Loading atr target grid…

5. Volatility-Adjusted Profit Target (Dynamic)

The same sweep as section 4, but the target is recomputed each day from the current ATR instead of frozen at entry, so it breathes with volatility while staying anchored to the entry price. Click an ATR target under the charts to take it off them and let the axis rescale to the rest.

Loading atr target grid…

6. Stop Loss Sweep

A protective ATR stop swept 1.5 → 10.0 (step 0.5). Stop = entry ∓ SL × ATR₂₀, no take-profit; the position still reverses on the opposite SMA-slope signal if the stop is not hit first.

Loading stop loss factor grid…

7. ATR Trailing Stop Sweep

A trailing ATR stop, distinct from section 6: stop = best price reached since entry ∓ f × ATR₂₀, recomputed daily. It ratchets in the trade's favour and retreats when volatility rises. Swept 1.0 → 10.0 (step 0.5).

Loading trailing factor grid…

8. Stop Loss + Time Stop — Equity Curves

The full strategy: SMA entry, ATR stop loss, and a time stop that exits a trade still not in profit 5/10/15/20/30/40 days after entry. Split into one file per SMA period so this loads in a fraction of the Corn page's payload.

Loading equity curves…

9. Time Stop Only — Equity Curves

The time stop judged on its own, with no ATR stop, against the plain SMA baseline. Each line exits a trade still underwater 5/10/15/20/30/40 days after entry.

Loading equity curves…

10. Volatility Filter Sweep

Volatility is the annualized standard deviation of daily returns — the standard deviation of the last 20 daily returns × √252. The factor is a maximum: a new position opens only on a day at or below it, so the strategy stands aside in turbulence. An open trade is never closed by the filter.

Loading volatility factor grid…

11. Volatility Filter + ATR Trailing Stop

The first combined risk layer: the section-10 filter and the section-7 trailing stop in one strategy, swept together across every combination. The last column is section 7 on its own, so you can read left to right whether adding the filter helps.

Loading the volatility × trailing-stop grid…

12. Volatility Regime Switch

The same threshold as section 10, but acting as a regime switch: above it the open position is closed at that day's close, nothing opens while volatility stays high, and the position re-opens on the first calm day the SMA slope still points the right way — no fresh signal required.

Loading volatility factor grid…

Source: Norgate Data continuous futures, Panama (difference) back-adjusted, rolled one business day before last trade or first notice; percentages over the real contract price (daily OHLC), truncated at 2015-12-31 — nothing after that date was read by any calculation on this page. Generated 2026-10-06 13:33:41 UTC.