Classificação de títulos de bolsa com Clustering

O seguinte trabalho pretende fazer a Classificação de títulos de bolsa nacionais e internacionais com base no algoritmo K-Means, um problema de classificação não supervisionada (clustering) que agrupa objetos em “k” número de grupos baseados nas suas características.

O intuito deste trabalho é encontrar as melhores ações de bolsa a nível “mundial”, através dos seus indicadores de Retorno e Volatilidade anuais, com  base no histórico dos últimos dois anos. Termino com uma seleção de títulos “apetecíveis” especificando os seus valores atuais em bolsa.

O trabalho passa por diferentes métodos de Data Science e é todo realizado em Python:

  • obtenção de dados da web através de Web Scrapping,
  • tratamento dos mesmos em Pandas,
  • aplicação do modelo de classificação K-means, começando por procurar o melhor do número de clusters (“k”),
  • remoção de outliers,
  • seleção das melhores ações com retorno anual igual ou acima de 10% e volatilidade abaixo de 40% (escolha pessoal!),
  • obtenção dos preços atuais dos títulos da alínea anterior,
  • amostragem final das “melhores” ações em diferentes colorações consoante o seu preço

Elbow curve – escolha do número de clusters para o algoritmo k-means (k=3):Picture5

Classificação de títulos implementando 3 Clusters face ao Retorno e Volatilidade anuais:
Picture1

Remoção de outliers:
Picture2

Títulos com Rentabilidade acima de 10% ao ano e Volatilidade inferior a 40%:Picture3

Seleção de títulos com preços abaixo de 50€:Picture4

O script Python (jupyter) está disponível no GitHub, sendo esta a conclusão final:

  • valor até 5€: o título EGL.LS é o que mostra maior retorno com uma taxa de volatilidade abaixo dos 35%. Logo de seguida o BCP.LS
  • inferior a 10€: o título BBVA.MC tem um retorno acima de 30% e volatilidade abaixo dos 30%
  • inferior a 20€ ou 50€: se optarmos por um título mais estável, abaixo dos 20% de volatilidade, temos a SEM.LS (inf20) e o DTE.DE (inf50)

Acesso ao trabalho completo no GitHub


Introducing the k-means algorithm
The term k-means was first used by MacQueen in 1967, although the idea dates back to Steinhaus in 1957. K-means is an unsupervised classification (clustering) algorithm that groups objects into k groups based on their characteristics.

Clustering is done by minimizing the sum of distances between each object and the centroid of its group or cluster. Quadratic distance is often used. The algorithm consists of three steps:

Initialization: once the number of groups, k, has been chosen, k centroids are established in the data space, for example, choosing them randomly.
Assign objects to centroids: each data object is assigned to its nearest centroid.
Centroid update: the position of the centroid of each group is updated, taking as the new centroid the position of the average of the objects belonging to said group.
Steps 2 and 3 are repeated until the centroids do not move, or move below a threshold distance at each step.

Deixe um comentário