Software Investor

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.

2.033.806 ptsHistóricoFora da amostra
1 mi2 mi3 mi20252026
2.033.806 ptsResultado acumulado
3.808Trades
20,3xResultado / drawdown máx.
100.071 ptsDrawdown máximo
1,57Fator de lucro
70%Trades vencedores
90%Meses positivos
20Maior sequência de perdas

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.

Carteira 2.033.806 pts · DD máx. 100.071 ptsBitcoin ×9 722.520 pts · DD máx. 3.323.160 pts
20252026Bitcoin ×9: 722.520 ptsCarteira: 2.033.806 pts-500 mil500 mil1 mi1,5 mi2 mi2,5 mi3 mi3,5 mi

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.

20252026Setup 01 · Venda: 350.017 ptsSetup 02 · Venda: 306.141 ptsSetup 03 · Venda: 292.453 ptsSetup 04 · Venda: 230.577 ptsSetup 05 · Venda: 213.040 ptsSetup 06 · Venda: 198.755 ptsSetup 07 · Venda: 191.412 ptsSetup 08 · Venda: 164.112 ptsSetup 09 · Venda: 87.299 pts-100 mil100 mil200 mil300 mil400 mil

Estatísticas por setup

Mesmo período e mesma ordem do gráfico acima, histórico e fora da amostra somados.

SetupLadoTradesResultado (pts)Drawdown máx. (pts)Resultado / DDFator de lucroAcertoMédia por trade (pts)
Setup 01Venda603350.01730.52511,5x1,5176%580
Setup 02Venda600306.14136.8318,3x1,4456%510
Setup 03Venda603292.45324.22212,1x1,4271%485
Setup 04Venda330230.57730.3247,6x1,5855%699
Setup 05Venda235213.04022.0339,7x1,7369%907
Setup 06Venda602198.75517.41711,4x1,6576%330
Setup 07Venda330191.41216.71111,5x2,2492%580
Setup 08Venda235164.11216.9619,7x1,8372%698
Setup 09Venda27087.2996.53013,4x1,8569%323

Resultado por ano

Em pontos, com todas as estratégias somadas.

AnoTradesResultado (pts)Drawdown máx. (pts)Acerto
20241080387.70796.57370%
202515471.042.270100.07169%
2026*1181603.83064.39172%

* ano em andamento

Resultado trimestre a trimestre

10 de 10 trimestres fecharam positivos.

200 milT2/24: 62.325 ptsT3/24: 195.128 ptsT4/24: 130.253 ptsT1/25: 280.151 ptsT2/25: 164.863 ptsT3/25: 302.359 ptsT4/25: 294.897 ptsT1/26: 200.541 ptsT2/26: 251.079 ptsT3/26: 152.210 ptsT2/24T4/24T2/25T4/25T2/26

Resultado mês a mês

27 de 30 meses fecharam positivos. Passe o mouse sobre uma barra para ver o valor.

50 mil100 mil150 milAbr/24: 21.197 ptsMai/24: 50.772 ptsJun/24: -9.643 ptsJul/24: 79.577 ptsAgo/24: 82.884 ptsSet/24: 32.667 ptsOut/24: 45.494 ptsNov/24: 67.037 ptsDez/24: 17.722 ptsJan/25: 59.687 ptsFev/25: 97.803 ptsMar/25: 122.661 ptsAbr/25: -20.668 ptsMai/25: 48.848 ptsJun/25: 136.683 ptsJul/25: 156.953 ptsAgo/25: 32.008 ptsSet/25: 113.398 ptsOut/25: 75.387 ptsNov/25: 183.599 ptsDez/25: 35.910 ptsJan/26: 104.459 ptsFev/26: 77.021 ptsMar/26: 19.061 ptsAbr/26: 61.706 ptsMai/26: 139.187 ptsJun/26: 50.186 ptsJul/26: 91.859 ptsAgo/26: -10.347 ptsSet/26: 70.699 pts202420252026

Mapa mensal

Em milhares de pontos. Verde é mês positivo, vermelho é negativo.

JanFevMarAbrMaiJunJulAgoSetOutNovDezAno
202421,250,8-9,679,682,932,745,567,017,7387,7
202559,797,8122,7-20,748,8136,7157,032,0113,475,4183,635,91042,3
2026104,577,019,161,7139,250,291,9-10,370,7603,8

Resultado por operação

Média de 534 pts por trade, cerca de 1.584 trades por ano.

-10.860 a -10.113 pts: 6 trades-10.113 a -9.366 pts: 7 trades-9.366 a -8.619 pts: 17 trades-8.619 a -7.872 pts: 16 trades-7.872 a -7.125 pts: 22 trades-7.125 a -6.378 pts: 33 trades-6.378 a -5.631 pts: 60 trades-5.631 a -4.884 pts: 90 trades-4.884 a -4.137 pts: 97 trades-4.137 a -3.390 pts: 111 trades-3.390 a -2.643 pts: 135 trades-2.643 a -1.896 pts: 120 trades-1.896 a -1.149 pts: 133 trades-1.149 a -402 pts: 190 trades-402 a 345 pts: 161 trades345 a 1.092 pts: 586 trades1.092 a 1.839 pts: 861 trades1.839 a 2.586 pts: 448 trades2.586 a 3.333 pts: 445 trades3.333 a 4.080 pts: 76 trades4.080 a 4.827 pts: 66 trades4.827 a 5.574 pts: 38 trades5.574 a 6.321 pts: 32 trades6.321 a 7.068 pts: 12 trades7.068 a 7.815 pts: 13 trades7.815 a 8.562 pts: 10 trades8.562 a 9.309 pts: 8 trades9.309 a 10.056 pts: 2 trades10.056 a 10.803 pts: 6 trades10.803 a 11.550 pts: 7 trades0-10.860 pts+11.550 ptsPerdasGanhos

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

270.159 pts
Operações
349
Maior queda
67.081 pts
Operações positivas
53%

Fora da amostra

17.171 pts
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