O skfolio é uma biblioteca Python para otimização de portfólio, projetada sobre a base do scikit-learn. Ela oferece uma interface e ferramentas unificadas, compatíveis com o scikit-learn, para ajudar os usuários a construir, ajustar e validar cruzadamente modelos de portfólio. Este guia apresenta sua estrutura central, arquivos-chave e métodos de utilização básicos.
1. Estrutura de Diretórios
O projeto skfolio adota uma organização clara para facilitar a localização de módulos. A estrutura típica é a seguinte:
- src/skfolio: Contém o código-fonte principal, incluindo todos os algoritmos de otimização de portfólio e módulos relacionados.
- tests: Código para testes unitários, garantindo a correção das funcionalidades.
- examples: Fornece scripts de exemplo ou notebooks Jupyter para demonstrar o uso do skfolio.
- docs: Documentação que inclui referência da API e guias do usuário.
- LICENSE: Arquivo de licença indicando o projeto sob a licença aberta BSD-3-Clause.
- setup.py, pyproject.toml, requirements.txt: Arquivos para construção do projeto, gerenciamento de dependências e configuração de ambiente.
- README.rst: Arquivo principal de descrição do projeto com informações iniciais.
- CODE_OF_CONDUCT.md, CONTRIBUTING.md: Códigos de conduta e diretrizes para contribuidores.
2. Iniciando o Uso
Como uma biblioteca, o skfolio não possui um arquivo de inicialização tradicional. O uso tipicamente começa importando os módulos necessários em um script Python ou ambiente interativo:
import skfolio
# Alternativamente, importe módulos específicos conforme necessário
from skfolio import MeuModuloEspecifico
Antes da primeira execução, é necessário instalar a biblioteca via pip:
pip install -U skfolio
3. Gerenciamento de Configurações
O skfolio não enfatiza o uso de arquivos de configuração externos (como .ini ou .yaml). A configuração é realizada principalmente através de parâmetros de funções ou na inicialização de classes. Por exemplo, detahles como medida de risco e objetivo da otimização são definidos no código:
from skfolio.optimization import ModeloDeRisco
from skfolio._base import FuncaoObjetivo, MedidaDeRisco
# Configurando o modelo diretamente no código
configuracao_personalizada = ModeloDeRisco(
funcao_objetivo=FuncaoObjetivo.MAXIMIZAR_RETORNO,
medida_risco=MedidaDeRisco.VARIANCIA_SEMIVARIANCIA,
hiperparametro_alpha=0.05
)
Na prática, a gestão de configuração pode ser indiretamente realizada através de variáveis em scripts Python ou variáveis de ambiente, especialmente para ambeintes complexos ou específicos.