Software Investor

Strategy portfolio on the Micro E-mini S&P 500

Three systematic strategies trading together on the MES, 10-minute chart. 2,906 simulated trades over 7.4 years, with the position closed at the end of the week.

10,580 ptsHistory
2k4k6k8k10k2020202120222023202420252026
10,580 ptsCumulative result
2,906Trades
11,0xResult / max. drawdown
960 ptsMaximum drawdown
1.29Profit factor
55%Winning trades
74%Positive months
18Longest losing streak

Portfolio vs. MES

Cumulative portfolio result in points, with one contract per setup (3 contracts in total), versus the raw continuous MES series (unadjusted) multiplied by 3 to have the same exposure.

Portfolio 10,580 pts · max. DD 960 ptsMES ×3 14,498 pts · max. DD 3,723 pts
2020202120222023202420252026-5,0005,00010,00015,000

Performance by setup

Cumulative result of each of the three strategies. Click a setup to highlight it.

2020202120222023202420252026Setup 01 · Long: 3,916 ptsSetup 02 · Long: 3,896 ptsSetup 03 · Long: 2,768 pts-1,0001,0002,0003,0004,0005,0006,000

Statistics by setup

Same period and same order as the chart above.

SetupSideTradesResult (pts)Max. drawdown (pts)Result / DDProfit factorWin rateAverage per trade (pts)
Setup 01Long10243,9164668.4x1.2951%3.8
Setup 02Long9063,8965906.6x1.2757%4.3
Setup 03Long9762,76825310.9x1.3457%2.8

Result by year

In index points, all strategies combined.

YearTradesResult (pts)Max. drawdown (pts)Win rate
201921539521956%
20204591,96463958%
20213911,22443260%
202243456094348%
202337671350253%
20243731,77172957%
20253872,25396056%
2026*2711,70056654%

* year in progress

Quarter-by-quarter result

26 of 30 quarters closed positive.

Q2/19: 37 ptsQ3/19: 263 ptsQ4/19: 94 ptsQ1/20: 208 ptsQ2/20: 647 ptsQ3/20: 671 ptsQ4/20: 438 ptsQ1/21: 172 ptsQ2/21: 519 ptsQ3/21: 183 ptsQ4/21: 349 ptsQ1/22: 363 ptsQ2/22: -525 ptsQ3/22: 452 ptsQ4/22: 272 ptsQ1/23: 402 ptsQ2/23: 219 ptsQ3/23: -261 ptsQ4/23: 352 ptsQ1/24: 408 ptsQ2/24: 820 ptsQ3/24: 145 ptsQ4/24: 398 ptsQ1/25: -200 ptsQ2/25: 1,024 ptsQ3/25: 800 ptsQ4/25: 630 ptsQ1/26: 670 ptsQ2/26: 1,076 ptsQ3/26: -47 ptsQ2/19Q2/20Q2/21Q2/22Q2/23Q2/24Q2/25Q2/26

Month-by-month result

66 of 89 months closed positive. Hover over a bar to see the value.

May/19: -127 ptsJun/19: 163 ptsJul/19: 43 ptsAug/19: 145 ptsSep/19: 75 ptsOct/19: 61 ptsNov/19: 89 ptsDec/19: -55 ptsJan/20: 214 ptsFeb/20: -336 ptsMar/20: 330 ptsApr/20: 50 ptsMay/20: 294 ptsJun/20: 303 ptsJul/20: 308 ptsAug/20: 257 ptsSep/20: 106 ptsOct/20: 137 ptsNov/20: 111 ptsDec/20: 190 ptsJan/21: -57 ptsFeb/21: 195 ptsMar/21: 34 ptsApr/21: 407 ptsMay/21: -190 ptsJun/21: 302 ptsJul/21: 23 ptsAug/21: 344 ptsSep/21: -184 ptsOct/21: 297 ptsNov/21: -344 ptsDec/21: 396 ptsJan/22: -237 ptsFeb/22: 164 ptsMar/22: 435 ptsApr/22: 151 ptsMay/22: -123 ptsJun/22: -553 ptsJul/22: 57 ptsAug/22: 300 ptsSep/22: 94 ptsOct/22: 336 ptsNov/22: 89 ptsDec/22: -153 ptsJan/23: 215 ptsFeb/23: -54 ptsMar/23: 241 ptsApr/23: 69 ptsMay/23: -118 ptsJun/23: 267 ptsJul/23: 11 ptsAug/23: 75 ptsSep/23: -346 ptsOct/23: -92 ptsNov/23: 350 ptsDec/23: 93 ptsJan/24: 23 ptsFeb/24: 131 ptsMar/24: 254 ptsApr/24: 147 ptsMay/24: 402 ptsJun/24: 270 ptsJul/24: 147 ptsAug/24: 68 ptsSep/24: -70 ptsOct/24: 83 ptsNov/24: 440 ptsDec/24: -125 ptsJan/25: 104 ptsFeb/25: -39 ptsMar/25: -265 ptsApr/25: 369 ptsMay/25: 577 ptsJun/25: 78 ptsJul/25: 335 ptsAug/25: 283 ptsSep/25: 182 ptsOct/25: 439 ptsNov/25: 194 ptsDec/25: -4 ptsJan/26: -3 ptsFeb/26: 290 ptsMar/26: 383 ptsApr/26: 608 ptsMay/26: 206 ptsJun/26: 262 ptsJul/26: 16 ptsAug/26: -14 ptsSep/26: -48 ptsMay/19May/20May/21May/22May/23May/24May/25May/26

Monthly map

In points. Green is a positive month, red is a negative one.

JanFevMarAbrMaiJunJulAgoSetOutNovDezYear
2019-12716343145756189-55395
2020214-336330502943033082571061371111901,964
2021-5719534407-19030223344-184297-3443961,224
2022-237164435151-123-553573009433689-153560
2023215-5424169-1182671175-346-9235093713
20242313125414740227014768-7083440-1251,771
2025104-39-26536957778335283182439194-42,253
2026-329038360820626216-14-481,700

Result per trade

Average of 3.6 pts per trade, about 393 trades per year.

0-81 pts+91 pts

Source code of a strategy

An example for technical audit: a research strategy, outside the portfolio and with more modest performance than the three above. It is plain Python, with no libraries, and runs on any CSV of 10-minute bars of the MES. Each trade in the list can be checked against your own data.

05/2019 a 01/2023

379 pts
Trades
333
Largest drop
197 pts
Winning trades
56%

01/2023 a 09/2026

401 pts
Trades
334
Largest drop
184 pts
Winning trades
57%
# python mes.py   (CSV: time,open,high,low,close,roll)
F="MES_M10.csv"
a,b,c,d,e=.01,.015,40,48,1050
L=open(F).read().splitlines()
H=L[0].split(",")
I=[H.index(k) for k in("time","open","high","low","close","roll")]
D={}
for s in L[1:]:
    r=s.split(",")
    t,o,h,l,x,z=[r[i] for i in I]
    D.setdefault(t[:10],[]).append((t,int(t[11:13])*60+int(t[14:16])+10,float(o),float(h),float(l),float(x),z=="True"))
K=list(D)
n=S=0
for k in range(1,len(K)):
    P,T=D[K[k-1]],D[K[k]]
    if any(q[6] for q in T):continue
    u=max(q[3] for q in P);v=min(q[4] for q in P)
    if u<=v or len(T)<20 or not(T[0][2]-v)/(u-v)*100<c:continue
    p=T[0][5];g=p*(1+a);s=p*(1-b);w=T[1][5]
    for j in range(1,len(T)):
        _,m,_,h,l,x,_=T[j]
        if h>=g and l<=s:raise SystemExit(T[j][0])
        if h>=g:w=g;break
        if l<=s:w=s;break
        w=x
        if j>=d or m>=e or j==len(T)-1:break
    print("%s;%.1f;%.1f;%.1f"%(T[0][0],p,w,w-p))
    n+=1;S+=w-p
print(n,round(S))

Result in points, 1 contract, before costs. The simulation of the portfolio strategies follows the same entry, target, stop and exit mechanics; some have variations (such as a trailing stop and end-of-week exit) that do not appear in this example. The rules and parameters of the three strategies remain confidential.

Want to talk?

I present the work in detail to anyone who is interested.

Contact