Portfólio de estratégias no Bitcoin
Nove estratégias sistemáticas operando em conjunto no futuro de Bitcoin (BIT), gráfico de 10 minutos. 3.808 operações simuladas em 2,4 anos, com um período separado de validação fora da amostra.
Histórico e validação
O histórico serviu para construir o portfólio. O período fora da amostra começa depois da data de corte e não influenciou nenhuma escolha.
Histórico (in-sample)
1.710.395 pts
- Trades
- 3194
- Drawdown máx.
- 100.071 pts
- Resultado / DD
- 17,1x
- Acerto
- 70%
23/04/2024 a 06/05/2026
Fora da amostra (OOS)
323.411 pts
- Trades
- 614
- Drawdown máx.
- 57.927 pts
- Resultado / DD
- 5,6x
- Acerto
- 73%
07/05/2026 a 18/09/2026, sem ajuste após o corte
Carteira contra o Bitcoin
Resultado acumulado em pontos da carteira, com um contrato por setup (9 contratos no total), contra a série bruta do futuro de Bitcoin (BIT contínuo, sem ajuste) multiplicada por 9 para ter a mesma exposição.
Performance por setup
Resultado acumulado de cada uma das nove estratégias. A linha tracejada marca o início do período fora da amostra. Clique em um setup para destacá-lo.
Estatísticas por setup
Mesmo período e mesma ordem do gráfico acima, histórico e fora da amostra somados.
| Setup | Lado | Trades | Resultado (pts) | Drawdown máx. (pts) | Resultado / DD | Fator de lucro | Acerto | Média por trade (pts) |
|---|---|---|---|---|---|---|---|---|
| Setup 01 | Venda | 603 | 350.017 | 30.525 | 11,5x | 1,51 | 76% | 580 |
| Setup 02 | Venda | 600 | 306.141 | 36.831 | 8,3x | 1,44 | 56% | 510 |
| Setup 03 | Venda | 603 | 292.453 | 24.222 | 12,1x | 1,42 | 71% | 485 |
| Setup 04 | Venda | 330 | 230.577 | 30.324 | 7,6x | 1,58 | 55% | 699 |
| Setup 05 | Venda | 235 | 213.040 | 22.033 | 9,7x | 1,73 | 69% | 907 |
| Setup 06 | Venda | 602 | 198.755 | 17.417 | 11,4x | 1,65 | 76% | 330 |
| Setup 07 | Venda | 330 | 191.412 | 16.711 | 11,5x | 2,24 | 92% | 580 |
| Setup 08 | Venda | 235 | 164.112 | 16.961 | 9,7x | 1,83 | 72% | 698 |
| Setup 09 | Venda | 270 | 87.299 | 6.530 | 13,4x | 1,85 | 69% | 323 |
Resultado por ano
Em pontos, com todas as estratégias somadas.
| Ano | Trades | Resultado (pts) | Drawdown máx. (pts) | Acerto |
|---|---|---|---|---|
| 2024 | 1080 | 387.707 | 96.573 | 70% |
| 2025 | 1547 | 1.042.270 | 100.071 | 69% |
| 2026* | 1181 | 603.830 | 64.391 | 72% |
* ano em andamento
Resultado trimestre a trimestre
10 de 10 trimestres fecharam positivos.
Resultado mês a mês
27 de 30 meses fecharam positivos. Passe o mouse sobre uma barra para ver o valor.
Mapa mensal
Em milhares de pontos. Verde é mês positivo, vermelho é negativo.
| Jan | Fev | Mar | Abr | Mai | Jun | Jul | Ago | Set | Out | Nov | Dez | Ano | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024 | 21,2 | 50,8 | -9,6 | 79,6 | 82,9 | 32,7 | 45,5 | 67,0 | 17,7 | 387,7 | |||
| 2025 | 59,7 | 97,8 | 122,7 | -20,7 | 48,8 | 136,7 | 157,0 | 32,0 | 113,4 | 75,4 | 183,6 | 35,9 | 1042,3 |
| 2026 | 104,5 | 77,0 | 19,1 | 61,7 | 139,2 | 50,2 | 91,9 | -10,3 | 70,7 | 603,8 |
Resultado por operação
Média de 534 pts por trade, cerca de 1.584 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 nove acima. É Python puro, sem bibliotecas, e roda sobre qualquer CSV de barras de 10 minutos do BIT. Cada operação da lista pode ser conferida contra os seus dados.
Histórico
- Operações
- 349
- Maior queda
- 67.081 pts
- Operações positivas
- 53%
Fora da amostra
- Operações
- 66
- Maior queda
- 41.753 pts
- Operações positivas
- 52%
# python bit.py (CSV: datetime,open,high,low,close,roll)
F="BIT_M10.csv"
a,b,c,d,e=.025,.0175,50,60,1050
L=open(F).read().splitlines()
H=L[0].split(",")
I=[H.index(k) for k in("datetime","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]]
u=max(q[3] for q in P);v=min(q[4] for q in P)
if u<=v:continue
for i in range(len(T)-1):
t,m,_,_,_,x,z=T[i]
if z or m>=e or not(x-v)/(u-v)*100<c:continue
g=x*(1-a);s=x*(1+b);w=T[i+1][5]
for j in range(i+1,len(T)):
_,m,_,h,l,y,_=T[j]
if l<=g and h>=s:raise SystemExit(T[j][0])
if l<=g:w=g;break
if h>=s:w=s;break
w=y
if j-i>=d or m>=e or j==len(T)-1:break
print("%s;%.1f;%.1f;%.1f"%(t,x,w,x-w))
n+=1;S+=x-w
break
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 nove estratégias seguem confidenciais.
Quer conversar?
Apresento o trabalho em detalhes para quem tiver interesse.
Contato