Portfólio de estratégias no Micro E-mini Russell 2000
Quatro estratégias sistemáticas operando em conjunto no M2K, gráfico de 10 minutos. 3.316 operações simuladas em 7,4 anos, com posição zerada no fim da semana.
Carteira contra o M2K
Resultado acumulado em pontos da carteira, com um contrato por setup (4 contratos no total), contra a série bruta do M2K contínuo (sem ajuste) multiplicada por 4 para ter a mesma exposição.
Performance por setup
Resultado acumulado de cada uma das quatro estratégias. Clique em um setup para destacá-lo.
Estatísticas por setup
Mesmo período e mesma ordem do gráfico acima.
| Setup | Lado | Trades | Resultado (pts) | Drawdown máx. (pts) | Resultado / DD | Fator de lucro | Acerto | Média por trade (pts) |
|---|---|---|---|---|---|---|---|---|
| Setup 01 | Compra | 748 | 900 | 103 | 8,8x | 1,49 | 77% | 1,2 |
| Setup 02 | Compra | 1514 | 2.589 | 421 | 6,1x | 1,20 | 54% | 1,7 |
| Setup 03 | Compra | 524 | 1.838 | 208 | 8,8x | 1,56 | 57% | 3,5 |
| Setup 04 | Compra | 530 | 1.783 | 216 | 8,2x | 1,54 | 58% | 3,4 |
Resultado por ano
Em pontos de índice, com todas as estratégias somadas.
| Ano | Trades | Resultado (pts) | Drawdown máx. (pts) | Acerto |
|---|---|---|---|---|
| 2019 | 238 | 155 | 174 | 60% |
| 2020 | 434 | 1.364 | 232 | 65% |
| 2021 | 491 | 1.382 | 395 | 64% |
| 2022 | 523 | 655 | 317 | 60% |
| 2023 | 455 | 303 | 541 | 54% |
| 2024 | 468 | 829 | 343 | 59% |
| 2025 | 434 | 1.097 | 368 | 60% |
| 2026* | 273 | 1.326 | 192 | 60% |
* ano em andamento
Resultado trimestre a trimestre
26 de 30 trimestres fecharam positivos.
Resultado mês a mês
65 de 89 meses fecharam positivos. Passe o mouse sobre uma barra para ver o valor.
Mapa mensal
Em pontos. Verde é mês positivo, vermelho é negativo.
| Jan | Fev | Mar | Abr | Mai | Jun | Jul | Ago | Set | Out | Nov | Dez | Ano | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2019 | -17 | 51 | 33 | -75 | 113 | -28 | 48 | 31 | 155 | ||||
| 2020 | 75 | -160 | 295 | 332 | 68 | 24 | 28 | 41 | 134 | 32 | 219 | 276 | 1.364 |
| 2021 | 371 | 283 | 297 | -134 | 119 | 251 | 89 | -11 | 85 | 108 | -49 | -27 | 1.382 |
| 2022 | -131 | 307 | 106 | -78 | 299 | -191 | 124 | -42 | 126 | 222 | 124 | -210 | 655 |
| 2023 | 174 | -98 | -145 | -12 | 100 | 206 | 162 | 20 | -217 | -248 | 144 | 218 | 303 |
| 2024 | 21 | 191 | 75 | -69 | 104 | 55 | 105 | 36 | 14 | -21 | 243 | 76 | 829 |
| 2025 | 210 | 86 | -80 | 206 | 142 | 133 | 13 | 194 | 216 | 1 | 97 | -120 | 1.097 |
| 2026 | 130 | 269 | 256 | 365 | 273 | 107 | -6 | 38 | -105 | 1.326 |
Resultado por operação
Média de 2,1 pts por trade, cerca de 447 trades por ano.
Código-fonte de uma estratégia
Um exemplo para auditoria técnica: uma estratégia de pesquisa, fora do portfólio e com desempenho mais modesto que o das quatro acima. É Python puro, sem bibliotecas, e roda sobre qualquer CSV de barras de 10 minutos do M2K. Cada operação da lista pode ser conferida contra os seus dados.
05/2019 a 01/2023
- Operações
- 326
- Maior queda
- 568 pts
- Operações positivas
- 43%
01/2023 a 09/2026
- Operações
- 274
- Maior queda
- 348 pts
- Operações positivas
- 44%
# python m2k.py (CSV: time,open,high,low,close,contract,roll)
F="M2K_M10.csv"
a,b,c,d=.03,.015,90,768
L=open(F).read().splitlines()
H=L[0].split(",")
I=[H.index(k) for k in("time","high","low","close","contract","roll")]
B=[]
for s in L[1:]:
r=s.split(",")
t,h,l,x,k,z=[r[i] for i in I]
B.append((t,float(h),float(l),float(x),k,z=="True"))
N=len(B)
def q(t):
y,m,e=int(t[:4]),int(t[5:7]),int(t[8:10])
if m<3:y-=1
return (y+y//4-y//100+y//400+[0,3,2,5,0,3,5,1,4,6,2,4][m-1]+e)%7+1
G={};R={}
for x in B:
e=x[0][:10]
u=G.setdefault(e,[0,1e18])
u[0]=max(u[0],x[1]);u[1]=min(u[1],x[2])
R[e]=R.get(e,False) or x[5]
K=list(G)
Y={K[i]:G[K[i-1]] for i in range(1,len(K))}
W=[q(x[0]) for x in B]
V=[0]*N
for i in range(1,N):
V[i]=V[i-1]+(W[i]<W[i-1] or B[i][4]!=B[i-1][4])
n=S=0;z=-1;i=0
while i<N-1:
t,h,l,x,k,_=B[i]
m=int(t[11:13])*60+int(t[14:16])
p=(W[i]-1)*1440+m
f=i==N-1 or V[i+1]!=V[i]
if t[:10] not in Y or R[t[:10]] or p>=8400 or p<1380 or f or(W[i]==6 and m+10>=1170)or t[:10]==z:i+=1;continue
u,v=Y[t[:10]][0],Y[t[:10]][1]
if u<=v or not(x-v)/(u-v)*100>c or int(t[11:13])>=12:i+=1;continue
z=t[:10];g=x*(1-a);s=x*(1+b);j=i+1;w=B[j][3]
while j<N:
if V[j]!=V[i]:j-=1;w=B[j][3];break
T=B[j]
if T[2]<=g and T[1]>=s:raise SystemExit(T[0])
if T[2]<=g:w=g;break
if T[1]>=s:w=s;break
w=T[3]
if j==N-1 or V[j+1]!=V[j] or(W[j]==6 and int(T[0][11:13])*60+int(T[0][14:16])+10>=1170)or j-i>=d:break
j+=1
print("%s;%.1f;%.1f;%.1f"%(t,x,w,x-w))
n+=1;S+=x-w;i=j
print(n,round(S))
Resultado em pontos, 1 contrato, antes de custos. A simulação das estratégias do portfólio segue a mesma mecânica de entrada, alvo, stop e saída; algumas têm variações (como stop móvel) que não aparecem neste exemplo. As regras e os parâmetros das quatro estratégias seguem confidenciais.
Quer conversar?
Apresento o trabalho em detalhes para quem tiver interesse.
Contato