Um mercado, alguns temas e uma cauda longa
Padronize cada coluna de retornos (média 0, desvio padrão 1) e chame de Z o resultado, com n dias e p ativos. A matriz de correlação é C=ZᵀZ/n. Uma componente principal é um autovetor vⱼ de C: a direção do espaço de ativos em que os retornos padronizados mais variam, depois mais entre as direções perpendiculares à primeira, e assim por diante. Seu autovalor λⱼ é a variância ao longo dessa direção, os autovalores somam p (a variância total de p colunas padronizadas) e λⱼ/p é a razão de variância explicada. O escore Z vⱼ é a série temporal dessa componente. numpy.linalg.eigh devolve os autovalores em ordem crescente, então ordene-os do maior ao menor; o sinal de um autovetor é arbitrário, então fixe uma convenção (por exemplo a maior componente positiva) antes de comparar com qualquer coisa.
Manter só as k primeiras componentes reconstrói os dados como Ẑ=Z VₖVₖᵀ. O erro quadrático médio da reconstrução é a variância descartada dividida por p: 1/pΣ_(j>k)λⱼ. Nos últimos 2.500 dias de negociação de 61 ações e ETFs, a primeira componente carrega 37,4 % da variância e as quatro seguintes 7,3 %, 6,2 %, 3,3 % e 2,8 %. O primeiro escore tem correlação de 0,998 com o retorno médio igualmente ponderado: é o mercado, achado sem que se diga. As componentes seguintes são temas setoriais e de estilo. Mesmo assim a cauda é pesada: 3 componentes dão metade da variância, mas são necessárias 22 para 80 % e 34 para 90 %, e o erro de reconstrução é 0,626 com uma componente, 0,430 com cinco e 0,213 com vinte. O PCA comprime a parte comum do mercado; não faz 61 ativos parecerem três.
- Padronize e depois diagonalize a matriz de correlação; os autovalores somam o número de ativos.
- Sinais são arbitrários: fixe uma convenção e compare vetores pelo cosseno absoluto.
- A primeira componente dos retornos de ações é o mercado; a cauda de pequenas componentes ainda importa.
Lab: o que é avaliado
- Padronizar10 pts
- A decomposição em autovalores20 pts
- Variância explicada10 pts
- Verificação contra o scikit-learn15 pts
- Quantas componentes10 pts
- Erro de reconstrução15 pts
- O estudo20 pts