Das peças a um otimizador que funciona
Uma carteira de variância mínima no papel não tem regras. Um mandato real é só comprado, totalmente investido e paga para negociar, e a única forma de ver o que essas regras fazem é construir o otimizador você mesmo e testá-lo em dias que ele não viu. Este projeto final usa três ideias da habilidade: a descida do gradiente para o laço, uma projeção para a regra de orçamento só comprado e um limite L1 sobre as negociações. Basta o NumPy e nenhum solver de biblioteca é permitido.
A descida do gradiente projetada dá um passo de gradiente comum na variância wᵀΣw, cujo gradiente é 2Σw, e depois leva o resultado à carteira só comprada e totalmente investida mais próxima com a projeção Π. O passo 1/L, com L=2λₘₐₓ(Σ) o maior autovalor da hessiana, é sempre estável. A projeção sobre {w≥0, Σw=1} tem resposta exata: ordenar o vetor em ordem decrescente, tomar as somas acumuladas menos um, achar a última posição ρ em que o valor ordenado ainda supera sua soma acumulada dividida por k, fixar θ como essa soma acumulada dividida por ρ+1 e devolver max(v-θ,0). Todos os pesos são deslocados da mesma quantidade e os que ficariam negativos são cortados em zero.
O giro é a norma L1 da negociação, ‖w-w₀‖₁. Para mantê-lo abaixo de um limite τ sem deixar de ser viável, anda-se apenas a fração α do caminho entre a carteira atual w₀ e o alvo wₜ do otimizador. Um ponto do segmento entre duas carteiras só compradas e totalmente investidas também é só comprado e totalmente investido, e a norma L1 cresce linearmente ao longo do segmento, então a negociação é exatamente min(folga,τ). Cada rebalanceamento custa então c vezes seu giro, que o backtest subtrai do primeiro dia do bloco de manutenção. Os pesos de um bloco só podem usar os dias anteriores a ele, e o resultado a relatar é a volatilidade e o retorno dos dias fora da amostra, líquidos e concatenados.
- Descida do gradiente projetada: passo de gradiente 2Σw com passo 1/L e depois projeção no simplex.
- Limite de giro: avançar a fração α=min(1,τ/folga) rumo ao alvo; a carteira continua viável.
- Backtest honesto: estimar nos últimos
windowdias, manter porstepdias, subtrair os custos e relatar os números fora da amostra concatenados.
Lab: o que é avaliado
- Projeção no simplex20 pts
- Descida do gradiente projetada25 pts
- Um limite de giro15 pts
- Um backtest móvel com custos25 pts
- Comparar as políticas15 pts