Uma árvore de decisão para encaixar a sua ideia num tipo, e quais regras o código bloqueia de verdade.
É «um símbolo, um intervalo fixo, uma posição (comprado / vendido / zerado)»? Sim → Tipo A (de sinal).
É «uma cesta de símbolos, cada um com um peso, girando e repesando a cada ciclo»? Sim → Tipo C (de portfólio).
O resto (screeners, grid, arbitragem, execuções pontuais, bots de alerta) → Tipo B.
Quando A e C se misturam, veja duas coisas valendo ao mesmo tempo: quantos símbolos (um ou vários) e a forma da posição (uma posição simples comprada/vendida/zerada contra um conjunto de pesos). Rotação entre vários símbolos e rebalanceamento de portfólio são Tipo C, não Tipo B.
| Item | Tipo A de sinal | Tipo C de portfólio | Tipo B o resto |
|---|---|---|---|
| Símbolos | 1 | N | Sem limite |
| Forma da posição | Uma posição, pode ser fracionária | Vetor de pesos, por desenho soma ≤ 1 | Sem forma fixa |
| Template | Sim | Sim | Nenhum, escrito do zero |
| Backtest | O agente sempre roda um antes | O agente sempre roda um antes | Não roda |
| Trading automático | Suportado | Alocar valor ainda não suportado | Você escreve a lógica de ordens |
| Relatório de backtest | Completo, com Sortino, Omega e valor-p do MCPT | Mais enxuto: sem Sortino / Omega, sem MCPT automático | Nenhum |
Porque ele não existe. Os três tipos são uma classificação na hora de escrever a estratégia, não um estado que o sistema acompanhe.
Do lado da máquina, o tipo vem do que a função de sinal devolve: devolveu uma série, segue o caminho do Tipo A; devolveu uma matriz de pesos, segue o do Tipo C — nenhuma constante de tipo é lida em lugar nenhum. Do lado da plataforma o tipo é deduzido de volta pela forma do resultado do backtest, e o único lugar em que um tipo aparece para fora carrega apenas dois valores: «carteira» e «sinal».
Por isso o sistema não separa um Tipo B de um Tipo A que ainda não passou por backtest. Escolher o tipo errado não é bloqueado nem sinalizado: classificar serve para o agente escolher a forma de código e as checagens certas, não para o sistema acompanhar isso por você.
A função de sinal devolve um número a cada candle (a cada período):
| Valor devolvido | Significado |
|---|---|
Positivo (1.0, 0.6…) | Comprado; o número é a fração da posição |
Negativo (-1.0, -0.6…) | Vendido; o número é a fração da posição |
0.0 | Zerar a posição |
nan | Manter a posição atual como está |
O sinal é executado na abertura do candle seguinte; a saída por liquidação de futuros é executada no fechamento daquele mesmo candle.
O número não é cortado: 0.5 é meia posição, 2.0 é alavancagem dobrada, e o código calcula assim mesmo. O volatility targeting produz sinais fracionários por conta própria, e o teto de exposição dele é o valor padrão de um parâmetro, não um limite do sistema.
Um Tipo A que já passou por backtest pode entrar no portfólio de trading automático: você aloca um valor em Configuração de trading e a estratégia escreve o estado da posição; o reconciliador soma os alvos de todas as estratégias e ajusta as posições na exchange (veja Portfólio de trading ao vivo). Uma estratégia sem valor alocado não recebe ordem nenhuma.
A função de sinal devolve uma matriz de pesos (o peso-alvo de cada símbolo em cada instante) mais os dados de preço correspondentes. O rebalanceamento pode ser diário, semanal ou mensal e a própria estratégia implementa isso — os dois exemplos prontos (um z-score de compra líquida estrangeira escolhendo entre 100 ações taiwanesas, e um momentum Top-30) rebalanceiam semanalmente.
Os pesos somarem ≤ 1 é um acordo de desenho, e o código não verifica isso. Uma soma acima de 1 não gera erro; ela entra direto no retorno como alavancagem.
Hoje o Tipo C não suporta alocar capital no portfólio de trading automático. A causa raiz é que o caminho não existe: uma estratégia Tipo C não escreve arquivo de estado de posição, o reconciliador não a enxerga, e o capital alocado também não vira ordem. A área de trabalho deixa o campo de valor do Tipo C travado, mas trate o backtest de um Tipo C como algo para ler e compartilhar, não como algo para financiar.
O Tipo C também não tem MCPT automático: esse teste é uma série de preços contra uma série de posições, uma carteira tem várias, e achatá-las em uma equivale a reamostrar o retorno já realizado. A biblioteca de estratégias marca essa checagem como «não aplicável», o que não é o mesmo que reprovada.
O Tipo B não tem template, é escrito do zero e não roda backtest. E uma estratégia só chega à lista de seleção do trading automático com um resultado de backtest não vazio, então o Tipo B nunca aparece lá.
Ele ainda envia ordens — chamando por conta própria as bibliotecas de ordens prontas, no próprio agendamento. O Blave Agent não é um produto de «só sinal, sem executar»: o Tipo A passa pela reconciliação do trading automático e o Tipo B envia as ordens dele mesmo.
| Item | Comportamento real |
|---|---|
Data final do backtest não devolvida para None | Recusa rodar o backtest |
| Estratégia de futuros TAIEX sem a máscara de liquidação | Recusa rodar o backtest |
| Função de sinal inexistente, ou sem valor de retorno | Recusa rodar o backtest |
| Taxa definida como 0, ou escrita como expressão | Marca como problema e roda assim mesmo |
| Um Tipo A de indicador que não declara a série a desenhar | Lembrete, e roda assim mesmo |
| Pesos do Tipo C somando acima de 1 | Não verifica; conta direto como alavancagem |
As três linhas de baixo são convenções, não portões. O agente lembra você conforme a praxe, mas não há código por trás — é também por isso que as checagens de evitar overfitting acabam dependendo de você decidir fazê-las.
| O que você acha | O que é |
|---|---|
| Rotação entre vários símbolos é Tipo B | Distribuir pesos e rebalancear por ciclo faz disso um Tipo C |
| Um Tipo C que passou no backtest já pode ir para o trading automático | O backtest existe para mostrar desempenho; hoje não há caminho para alocar capital |
| O relatório de backtest traz taxa de acerto | Não há campo de taxa de acerto; você mesmo a calcula a partir do detalhe de entradas e saídas trade a trade, e o relatório de backtest de um Tipo C não traz esse detalhe (veja Como ler um backtest) |
| Se você escolher o tipo errado, o sistema bloqueia | Não acontece: a plataforma não guarda um tipo; escolher errado apenas te dá uma forma de código e checagens que não servem |
Com o tipo definido, o passo seguinte é ver isso rodando. As estratégias oficiais da Biblioteca de estratégias vêm com backtest real e o período de backtest declarado, de graça para ler; escolher uma e colocá-la para rodar diz qual tipo você quer escrever mais rápido do que terminar esta página.