Módulo 08 AdmTech · Computação · Semana 8 · 01/12/2026
| Bloco | Minutos | Tema | Interação que fecha o bloco |
|---|---|---|---|
| Daily | 15 | O que fiz, o que vou fazer, impedimentos | estado do otimizador e janela de dados usada |
| 1 | 0 a 15 | Resgate da fronteira da Aula 04 | Peer Instruction sobre o Sharpe prometido |
| 2 | 15 a 30 | O otimizador converge para o passado | pergunta disparada sobre o que faltou testar |
| 3 | 30 a 45 | A janela de treino desliza | previsão antes de mover o widget |
| 4 | 45 a 60 | Backtest das duas carteiras ótimas | dupla no notebook, seções 1 a 3 |
| 5 | 60 a 75 | Sensibilidade da fronteira | previsão antes de perturbar a estimativa |
| 6 | 75 a 90 | Estabilidade dos pesos e o ADR | escolha coletiva de recomendações ao comitê |
| 7 | 90 a 105 | Quiz e amarração com a Sprint 4 | quiz de três perguntas |
Horários de relógio a confirmar na Adalove; os blocos contam do fim da daily.
Módulo 08 AdmTech · Aula 05 · Sprint 4
2
A Aula 04 deixou prontas as carteiras de variância mínima e de máximo Sharpe e a fronteira de 50 pontos, calculadas num notebook.
As duas carteiras foram escolhidas olhando só para o passado: retorno médio, covariância e CDI de uma janela de dados que já terminou.
| Otimizador | SLSQP, pesos que somam 1, sem venda a descoberto |
| Entrada | retorno esperado e covariância anualizados por 252 |
| Saída | pesos, retorno, volatilidade e Sharpe esperados |
O comitê do parceiro vai aplicar esses pesos no ano seguinte. O que garante que eles funcionam lá?
Módulo 08 AdmTech · Aula 05 · Sprint 4
3
| Carteira, treino 2023 e 2024 | Retorno esperado | Volatilidade | Sharpe | Maiores pesos |
|---|---|---|---|---|
| Máximo Sharpe | 32,05% | 9,51% | 2,11 | IVVB11 41,51%, GOLD11 21,06%, PETR4 17,40%, BBAS3 16,81% |
| Variância mínima | 20,77% | 7,46% | 1,17 | IVVB11 27,44%, GOLD11 22,58%, EGIE3 16,12%, BBAS3 8,24% |
Cesta de referência de 15 ativos, Adj Close, 499 pregões de treino. CDI de 12,00% ao ano no treino como taxa livre de risco.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [1]
4
A carteira de máximo Sharpe otimizada em 2023 e 2024 promete Sharpe 2,11. Aplicada em 2025, o que ela entrega?
Módulo 08 AdmTech · Aula 05 · Sprint 4
5
| Período | Datas | Pregões | Para que serve |
|---|---|---|---|
| Treino | 02/01/2023 a 30/12/2024 | 499 | estimar retorno e covariância e otimizar os pesos |
| Teste | 02/01/2025 a 30/12/2025 | 250 | aplicar os pesos congelados e medir o realizado |
A divisão é no tempo. Sortear pregões para o teste deixaria o treino enxergar dias posteriores a ele, e o resultado pareceria melhor do que o comitê vai ver.
Amostra (ADR-009). Janela comum dos 15 ativos desde 04/01/2021: 1.412 retornos até 31/08/2026. Em 24/10/2025, BOVA11, IVVB11 e GOLD11 ficaram sem cotação; o preço anterior é repetido, o retorno deles nesse dia é zero, e o pregão seguinte leva a variação dos dois dias.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [1]
7
Antes de tocar: anote em que mês de 2025 cada carteira atinge a maior queda desde um pico, e qual das duas cai mais.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [1] [3]
8
| Carteira | Retorno | Volatilidade | Sharpe | Drawdown máximo |
|---|---|---|---|---|
| Máximo Sharpe, esperado | 32,05% | 9,51% | 2,11 | não medido no treino |
| Máximo Sharpe, realizado | 11,02% | 10,35% | -0,32 | -8,49% em 08/04/2025 |
| Variância mínima, esperado | 20,77% | 7,46% | 1,17 | não medido no treino |
| Variância mínima, realizado | 21,12% | 8,81% | 0,77 | -4,75% em 13/08/2025 |
No máximo Sharpe, a volatilidade foi de 9,51% para 10,35% e o retorno médio anualizado caiu de 32,05% para 11,02%, abaixo do CDI anualizado do teste, de 14,32%. Na variância mínima, o retorno quase acertou e a volatilidade subiu de 7,46% para 8,81%.
Que parte do resultado da Aula 04 o grupo ainda não tinha testado?
Módulo 08 AdmTech · Aula 05 · Sprint 4 · retorno e volatilidade anualizados por 252 · [1] [6]
9
Antes de mover: quanto da carteira de máximo Sharpe troca de ativo quando a janela anda um mês?
Módulo 08 AdmTech · Aula 05 · Sprint 4 · treino de 24 meses, teste nos 12 seguintes · marca coral: peso da janela anterior
10
| Medida nas 33 janelas | Máximo Sharpe | Variância mínima |
|---|---|---|
| Janelas com Sharpe entregue abaixo do prometido | 25 | 14 |
| Janelas que renderam menos que o CDI (Sharpe negativo) | 9 | 5 |
| Sharpe prometido, mediana | 1,35 | 0,21 |
| Sharpe entregue, mediana | 0,53 | 0,70 |
| Carteira trocada de um mês para o seguinte, mediana | 11,91% | 3,23% |
| Carteira trocada de um mês para o seguinte, máximo | 32,32% | 7,88% |
As 33 janelas se sobrepõem. Duas vizinhas compartilham 11 dos 12 meses de teste (91,60% dos pregões, na mediana), e um mesmo pregão entra no teste de até 12 janelas: os 8.231 pregões de teste somados são 915 pregões distintos.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · treinos de 01/2021 a 09/2023, testes até 08/2026 · [1] [5]
11
| Ano de teste | Treino | Máximo Sharpe, prometido | Máximo Sharpe, entregue | Variância mínima, prometido | Variância mínima, entregue |
|---|---|---|---|---|---|
| 2023 | 01/2021 a 12/2022 | 0,67 | 1,59 | -0,70 | 0,41 |
| 2024 | 01/2022 a 12/2023 | 1,39 | -0,25 | -0,29 | 1,09 |
| 2025 | 01/2023 a 12/2024 | 2,11 | -0,32 | 1,17 | 0,77 |
| Abaixo do prometido | 2 de 3 anos | 1 de 3 anos | |||
Por que 33 janelas não equivalem a 33 experimentos. Janelas que dividem 11 meses de teste medem quase o mesmo período, e o resultado de uma praticamente repete o da vizinha. Na base cabem só três anos de teste disjuntos, as janelas 1, 13 e 25, e são eles os experimentos independentes. Nas 12 escolhas possíveis de mês de partida para os blocos, o máximo Sharpe entrega menos que prometeu em pelo menos 2 blocos em todas.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · treino de 24 meses imediatamente antes de cada teste · [1] [5]
12
def realizado(w, retornos_teste, cdi_teste):
diario = retornos_teste.to_numpy() @ w
diario = pd.Series(diario, retornos_teste.index)
retorno = diario.mean() * 252
vol = diario.std() * np.sqrt(252)
rf = (1 + cdi_teste).prod() ** (252 / len(cdi_teste)) - 1
patrimonio = (1 + diario).cumprod()
queda = patrimonio / patrimonio.cummax() - 1
return {"retorno": retorno, "vol": vol,
"sharpe": (retorno - rf) / vol,
"drawdown_max": queda.min()}
treino = retornos.loc["2023":"2024"]
teste = retornos.loc["2025"]
mu, cov = estimar(treino)
w = otimizar(mu, cov, cdi_anual(treino.index), "max_sharpe")
realizado(w, teste, cdi.reindex(teste.index))
| Pesos | vêm só do treino e não mudam durante o teste |
| Patrimônio | começa em 1 e acumula o retorno diário da carteira |
| Drawdown | queda do patrimônio desde o maior valor anterior a cada dia |
| Taxa livre | CDI das datas do próprio teste |
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [3]
13
Checagem aos 6 min: a tabela de esperado contra realizado está na tela e o drawdown foi conferido. Debrief: nos 3 minutos finais, cada dupla relata o problema de desenho que procurou e um número do A4 ainda não testado fora da amostra.
Abrir o notebook da Aula 05 no Colab
Módulo 08 AdmTech · Aula 05 · Sprint 4
14
Antes de clicar: qual mudança mexe mais nos pesos, somar ou tirar 5 p.p. de cada retorno esperado ou trocar a covariância por Ledoit-Wolf?
Módulo 08 AdmTech · Aula 05 · Sprint 4 · treino 2023 e 2024, sinal de cada perturbação sorteado com semente fixa
16
| Carteira trocada em relação à original | Retorno esperado ±5 p.p. | Ledoit-Wolf |
|---|---|---|
| Máximo Sharpe | 19,75% | 1,91% |
| Variância mínima | 0,00% | 1,81% |
O retorno esperado é a estimativa mais frágil. Com dois anos de treino, o erro padrão mediano do retorno anual de um ativo é 17,63%: a perturbação de 5 p.p. cabe folgada dentro dele. A PETR4 sobe de 17% para 27% da carteira. A variância mínima ignora o retorno esperado e fica igual.
Ledoit-Wolf mexe pouco aqui. Com 499 pregões e 15 ativos, o encolhimento ótimo é de 2,41%, e as duas carteiras mudam menos de 2%.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [2] [4] [7]
17
Antes de tocar: o ativo de maior peso na primeira janela continua no topo na última?
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [1]
18
| Carteira | Treino 2021 e 2022 | Treino 2023 e 2024 | Trocado |
|---|---|---|---|
| Máximo Sharpe | PETR4 76,52%, VALE3 23,48% | IVVB11 41,51%, GOLD11 21,06%, PETR4 17,40%, BBAS3 16,81% | 82,60% |
| Variância mínima | GOLD11 35,91%, EGIE3 27,06% e outros | IVVB11 27,44%, GOLD11 22,58%, EGIE3 16,12% e outros | 33,23% |
A variância mínima troca menos porque não usa o retorno esperado, a estimativa mais frágil das duas. Recomendar o máximo Sharpe ao comitê inclui declarar a frequência de revisão dos pesos, com a carteira trocada e o custo que ela gera (slide seguinte).
Carteira trocada = metade da soma, ativo a ativo, da diferença absoluta entre os pesos. Zero é a mesma carteira; 100% é trocar tudo.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · [1]
19
| Máximo Sharpe, reotimização | Reotimizações | Trocado por reotimização, média | Trocado por ano | Custo por ano | Retorno anual bruto | Retorno anual líquido |
|---|---|---|---|---|---|---|
| Mensal | 44 | 13,25% | 156,87% | 0,31 p.p. | 29,39% | 29,08% |
| Trimestral | 15 | 22,69% | 87,50% | 0,18 p.p. | 25,93% | 25,76% |
| Anual | 4 | 58,75% | 48,54% | 0,10 p.p. | 20,77% | 20,68% |
A 0,10% por operação, o custo tira 0,31 p.p. por ano da reotimização mensal, e o Sharpe passa de 0,92 para 0,90. A diferença de retorno bruto entre as três frequências vem de um único caminho de 915 pregões e não basta para recomendar uma delas ao comitê.
Premissa da simulação: custo de 0,10% sobre o valor negociado (compras mais vendas), sem custo na compra inicial; pesos constantes entre reotimizações; treino dos 24 meses anteriores; teste de 02/01/2023 a 31/08/2026.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · trocado = soma de |Δw| / 2 · retorno médio diário vezes 252 · [1]
20
# ADR 0010: Frequência de reotimização
Status: proposto, hipótese a validar
## Contexto
Máximo Sharpe de 2023-2024: prometeu
2,11 e entregou -0,32 em 2025.
## Decisão condicionada
Reotimizar todo mês, treino de 24
meses, se o custo for até 0,10%.
## Impacto numérico (01/2023 a 08/2026)
156,87% da carteira trocada por ano;
retorno anual de 29,39% bruto e
29,08% líquido, num só caminho.
Exercício com a cesta de referência, sem valor de recomendação prática. A decisão depende de duas condições: custo por operação na faixa declarada e a vantagem bruta da reotimização mensal se repetir em outros períodos de teste, o que um único caminho de 915 pregões não garante.
O ADR do grupo cita o resultado fora da amostra, a carteira trocada por ano e o retorno líquido da frequência escolhida, todos medidos nos dados do grupo.
Módulo 08 AdmTech · Aula 05 · Sprint 4 · exemplo com a cesta de referência
21
Checagem aos 4 min: a carteira trocada da carteira da dupla está anotada. Debrief: a escolha coletiva do slide seguinte julga recomendações ao comitê com as duas carteiras.
Módulo 08 AdmTech · Aula 05 · Sprint 4
22
1. O máximo Sharpe entrega Sharpe perto de 2 fora da amostra
2. A variância mínima rendeu mais que o CDI em 2025
3. Os pesos de máximo Sharpe podem ficar um ano sem revisão
4. No máximo Sharpe, a volatilidade prevista errou menos que o retorno previsto
Cada dupla decide antes do clique e defende a resposta com um número da aula.
Módulo 08 AdmTech · Aula 05 · Sprint 4
23
1. Por que as 33 janelas não equivalem a 33 testes?
2. Quanto 5 p.p. no retorno esperado mudam a variância mínima?
3. Drawdown máximo de -8,49% em 2025 quer dizer
Módulo 08 AdmTech · Aula 05 · Sprint 4
24
| Seção | O que entrega |
|---|---|
| 1 e 2 | A cesta desde 2021 e o otimizador da Aula 04 com SLSQP |
| 3 e 4 | O backtest de 2025, as 33 janelas deslizantes e os 3 anos de teste sem sobreposição |
| 5 e 6 | A carteira trocada, o custo da reotimização a 0,10% por operação e a sensibilidade com Ledoit-Wolf |
| 7 | Desafio: reotimizar em três janelas, medir quanto cada peso varia e escrever o que isso significa para o comitê |
Notebook no GitHub · Abrir no Colab
Módulo 08 AdmTech · Aula 05 · Sprint 4
25
| Critério do barema | Peso | O que hoje já adiantou |
|---|---|---|
| Corretude da otimização | 30% | as duas carteiras conferidas fora da amostra |
| Fronteira completa | 15% | a fronteira da Aula 04, agora com a janela de dados declarada |
| Leitura analítica | 10% | tabela das duas carteiras com o resultado fora da amostra |
| Integração | 10% | o backtest consome o otimizador sem copiar código |
| Especificação e documentação | 15% | caso de teste com a janela de treino e a de teste no SPEC.md |
| ADRs, nota individual | 20% | o ADR da janela e do estimador, com o impacto numérico |
A4 vale 3 pontos. Os pesos ótimos mudam com a janela, e o A4 comunica isso ao parceiro. Entrega até sexta, 04/12/2026, 23h59, com review no mesmo dia.
Módulo 08 AdmTech · Aula 05 · Sprint 4
26
| Ponderada 2 | A carteira ótima sobrevive fora da amostra? Individual, 3 pontos, com cesta e perfil de cliente definidos pelo último dígito do RA. Enunciado e barema na Adalove. |
| O que a aula cobre | divisão em treino e teste, backtest das duas carteiras, drawdown, carteira trocada entre janelas |
| O que fica com você | a cesta e o perfil do seu RA, a leitura dos números e a recomendação ao comitê |
| Aula 06, 16/12/2026 | React, FastAPI e interpretação com LLM sobre os números que o A4 calcula |
Leitura complementar: Bodie, Kane e Marcus, capítulo 6, sobre risco de estimação [4].
Módulo 08 AdmTech · Aula 05 · Sprint 4
27
Módulo 08 AdmTech · Aula 05 · Sprint 4
28