Universidade Federal de Santa Maria

Ci. e Nat., Santa Maria, v. 43, e21, 2021

DOI: 10.5902/2179460X40010

ISSN 2179460X

Recebido: 14/09/2019 • Aceito: 03/03/2020 • Publicado: 26/03/2021

Estatística

Simulação de mercado financeiro com compra e venda otimizadas por Enxame de Partículas

Simulation of Financial Market with Buying and Selling Optimized by Particle Swarm

Kerolly Kedma Felix do NascimentoI

Jader da Silva JaleII

Tiago Alessandro Espínola FerreiraIII

I Mestra em Biometria e Estatística Aplicada, Universidade Federal Rural de Pernambuco, Recife, PE, Brasil

https://orcid.org/0000-0001-7360-0961 - kerollyfn@gmail.com

II Mestre e Doutor em Biometria e Estatística Aplicada e Pós-Doutor em Ciência da Computação, Universidade Federal Rural de Pernambuco, Recife, PE, Brasil

https://orcid.org/0000-0001-7414-1154 - jsj_ce@yahoo.com.br

III Mestre em Física, Doutor em Ciências da Computação, Universidade Federal Rural de Pernambuco, Recife, PE, Brasil

https://orcid.org/0000-0002-2131-9825 - tiago.espinola@ufrpe.br

Resumo

Tem sido de grande interesse, tanto por parte de pesquisadores quanto de investidores, definir regras de negociação que permitam capturar a dinâmica dos mercados financeiros. Este artigo apresenta um modelo de negociação entre agentes financeiros, baseado no processo de compra e venda de ações, que forma um mercado financeiro. Para a adaptação de agentes econômicos ao mercado, foi implementado o algoritmo Particle Swarm Optimization (PSO) para otimizar as regras de negociação entre agentes, visando maximizar os ganhos no mercado. As séries temporais de mercados artificiais e o mercado brasileiro real da Bovespa, descrito pelo índice Bovespa, foram utilizados nas simulações computacionais. Através das simulações foi explorada a dinâmica da interação de compra e venda entre agentes financeiros. Os resultados revelam que existe uma dependência dos ganhos dos agentes nos mercados em alta em relação às estratégias de negociação adotadas. Em contrapartida, nos mercados em baixa essa dependência não foi observada, uma vez que não foram encontradas diferenças estatisticamente significativas para a quantidade de riqueza acumulada entre os participantes dos mercados. Para o mercado Bovespa, a partir dos limiares de venda e de compra das negociações realizadas foram identificados os agentes que possuem as melhores estratégias nas negociações.

Palavras-chave: Mercado financeiro; Otimização; Otimização por enxame de partículas; Simulação computacional; Sistemas dinâmicos

Abstract

It has been of great interest, both on the part of researchers and investors, to define negotiation rules that make it possible to capture the dynamics of the financial markets. This article presents a negotiation model among financial agents, based on the stock buying and selling process, that form a financial market. For the adaptation of economic agents to the market, a Particle Swarm Optimization (PSO) algorithm was implemented to optimize trading rules between agents aiming at maximizing gains in the market. Times series of artificial markets and real Bovespa brazillian market, descripted by the index Bovespa, were used in the computational simulations. Through the simulations, the dynamics of the interaction of buying and selling between financial agents was explored. The results show that there is a dependence on the gains of the agents in the markets in relation to the trading strategies adopted. On the other hand, in the low markets this dependence was not observed, since no statistically significant differences were found for the amount of wealth accumulated among the market participants. For the Bovespa market, from the sell and purchase thresholds of the trades carried out, the agents that have the best strategies in the negotiations were identified.

Keywords: Financial market; Optimization; Particle swarm optimization; Computational simulation; Dynamics systems

1 Introdução

Em um mercado financeiro são realizadas negociações de compra e venda de ativos, que são todos os valores e/ou direitos a serem recebidos de uma entidade, como: ações, dinheiro, títulos ou commodities, por exemplo. Em princípio, os preços de compras e vendas são definidos pelos participantes do mercado a partir da observação do comportamento de cada um destes agentes (Ramos e Neto, 2015).

Atualmente, diversas áreas como a matemática, a estatística, a ciência da computação e a física têm se dedicado ao estudo da dinâmica dos mercados financeiros, com destaque para o uso de séries temporais como ferramenta de análise e modelagem. Em particular, um novo ramo científico, chamado Econofísica (Stanley et al., 1999), tem recebido grande destaque na literatura científica e o mesmo resulta da união entre a física e a economia, buscando aplicar os conceitos físicos na investigação das questões econômicas e financeiras (Miramontes e Volke, 2013; de Lima et al., 2018; Jale et al., 2019), em que as séries temporais de índices de mercados e de valores de ações e produtos negociados são comumente utilizadas como fonte de dados para as análises.

As séries temporais econômicas são geradas a partir de sistemas complexos, formados por elementos interdependentes podendo sofrer influências de fatores internos e externos ao seu meio ambiente. Em geral, tais séries temporais econômicas apresentam um comportamento não linear, dificultando a determinação do seu processo gerador (Kwapien e Dro´zd˙z, 2012). A complexidade da construção de um modelo de previsão adequado está relacionada principalmente a não-estacionariedade da série dos dados e sua volatilidade, empregando numerosos esforços na tentativa de realizar previsões precisas das séries temporais financeiras (Karazmodeh et al., 2013).

Em geral, utilizam-se as séries dos retornos para a análise do comportamento financeiro dos mercados. Estas séries temporais dos retornos, ou simplesmente retornos, são dadas pela diferença entre pontos consecutivos da série temporal em análise. A partir destas se observam características tais como: correlação, assimetria e curtose, bem como análises gráficas (Cont, 2001). Tais características são chamadas de fatos estilizados, sendo utilizadas no auxílio da compreensão do comportamento dos mercados.

Dados os fatos estilizados de um certo mercado e a observação de sua série histórica de preços ou índices, uma forma de modelá-lo a partir de primeiros princípios é através das interações individuais dos agentes financeiros. Tais interações individuais

determinam as características das microestruturas, que são passíveis de adaptação, gerando os comportamentos macroscópicos do sistema, no caso, dos mercados. No trabalho de Abar et al. (2017) encontram-se uma variedade de ferramentas de modelagem e simulação baseada em agentes e seus perfis básicos. Enquanto em Macal e North (2005), os agentes de um mercado de eletricidade usam regras de decisão para inferir estratégias que levem a adaptações de suas ações.

Desta forma, a ideia aqui aplicada é a modelagem de um mercado financeiro por meio da definição da interação de compra e venda entre agentes financeiros (processo microscópico), e a partir desta dinâmica verificar o comportamento macroscópico do mercado por meio de simulações computacionais. Para tanto, é buscada a condição sobre as interações de compra e venda que gere o maior desempenho financeiro possível ao agente. Tal busca é realizada por meio de um algoritmo de enxame, mais especificamente o algoritmo Otimização por Enxame de Partículas, ou do inglês, Particle Swarm Optimization (PSO) (Eberhart e Kennedy, 1995). Outros algoritmos de otimização poderiam ser utilizados, como, por exemplo, os Algoritmos Genéticos (Mitchell, 1996), Colônia de Formigas (Dorigo e Gambardella, 1997), Enxame de Abelhas (Serapião, 2009), dentre outros. Contudo, a escolha do PSO vem devido a sua grande aplicabilidade em diversos problemas da atualidade (Delice et al., 2017; Koad et al., 2017; Chatterjee et al., 2017; Rao et al., 2017) e simples implementação computacional.

O algoritmo PSO é encontrado em vários trabalhos na literatura aplicado à modelagem de mercados financeiros. Em Nenortaite e Simutis (2004) e Nenortaite e Simutis (2005) é proposta uma estratégia para tomada de decisão, combinando o algoritmo baseado em enxames de partículas e redes neurais artificiais. É feito um estudo comparativo entre cinco diferentes algoritmos em Hegazy et al. (2015), para previsão dos preços das ações no mercado S&P500. Em Wang et al. (2012) podem ser encontrados resultados obtidos com a estratégia Weight Reward Strategy (WRS), otimizada com PSO, ao problema de previsão, sendo alcançados resultados mais eficientes quando comparado a modelagem com Moving Average (MA) e Trading Range Break-out (TRB).

Neste cenário, o objetivo deste trabalho é propor uma forma de definição paramétrica das interações de compra e venda entre agentes financeiros em um mercado. No intuito de simular a busca constante de cada agente neste mercado pelo maior desempenho financeiro, um algoritmo do tipo PSO é utilizado para definir os melhores valores possíveis para tais parâmetros. Através da análise das flutuações do mercado de ações, utilizando uma série de retornos tanto artificial como real (série de retornos do Ibovespa), são analisados os comportamentos dos agentes financeiros com o propósito de se determinar quais as estratégias vencedoras.

A metodologia é proposta com base na suposição que o mercado de ações é constituído por partículas (agentes) que interagem entre si e, a partir disso, é observada a dinâmica de compra e venda das ações pelos agentes no mercado simulado.

O restante deste artigo está estruturado como segue. Na Seção 2 apresenta-se a descrição da meta-heurística de otimização PSO. Na Seção 3 há uma breve explanação sobre os mercados acionários. Na Seção 4 são abordadas algumas questões estatísticas. Na Seção 5 a descrição da metodologia proposta é apresentada. Na Seção 6 os resultados das simulações computacionais são discutidos. E, por fim, na Seção 7 encontram-se as conclusões deste trabalho.

2 Otimização por Enxame de Partículas (PSO)

O algoritmo Particle Swarm Optimization (PSO), ou em português Otimização por Enxame de Partículas, foi proposto originalmente em 1995 por Kennedy e Eberhart (Eberhart e Kennedy, 1995) e desde então tem sido aplicado a uma variedade de problemas da atualidade (Delice et al., 2017; Koad et al., 2017; Chatterjee et al., 2017; Rao et al., 2017; Goez et al., 2016). Este é um algoritmo de inteligência de enxame (Swarm Intelligence), campo da inteligência computacional fundamentado na inteligência coletiva, como por exemplo, o comportamento social de bandos de aves ou cardumes de peixes em busca de alimento ou abrigo.

O PSO tem como propósito otimizar uma população de soluções aleatórias conhecidas como partículas (Damasceno e Gabriel Filho, 2017), que se movimentam pelo espaço de busca, multidimensional, em busca da melhor solução para o problema. Cada partícula utiliza sua própria experiência e a experiência da sua vizinhança para definir a movimentação a partir da função fitness ou função de adaptação (Eberhart e Kennedy, 1995; Clerc, 2010; Shi e Eberhart, 1999).

O algoritmo PSO pode ser descrito como:

1 Inicializar as partículas aleatoriamente no espaço de busca.

2 Calcular a função de adaptação (fitness) para cada partícula.

3 Calcular pbest e gbest que representam as posições do melhor local (melhor solução encontrada pela partícula) e do melhor global (melhor solução encontrada pelo enxame), respectivamente.

4 Atualizar o peso inercial w de acordo com a iteração atual (detalhada adiante).

5 Atualizar a posição e a velocidade das partículas utilizando as Equações 1 e 2.

(1)

(2)

Em que i = 1, 2, ..., n representa o número de partículas e j = 1, 2, ..., d a dimensão do espaço de busca, c1 e c2 pertencentes aos reais são os coeficientes cognitivo e social, respectivamente, e r1 e r2 são números aleatórios uniformes em [0,1]. Esses componentes aleatórios produzem influência estocástica sobre a atualização da velocidade. w é chamado peso inercial e seu objetivo é controlar a velocidade das partículas no espaço de busca, influenciando a exploração local e global. Um peso de inércia grande favorece uma busca global, enquanto um peso pequeno favorece uma busca local. Neste trabalho foi considerado que o peso inercial decai linearmente segundo a fórmula:

(3)

Em que wk representa a inércia na k-ésima iteração, wmax o valor máximo de w, wmin o valor mínimo e itermax o número máximo de iterações. O processo se repete até que algum critério de parada seja alcançado, como, por exemplo, obter erro mínimo ou um número máximo de iterações.

3 Mercados de Ações

Ações são as menores parcelas do capital social de uma empresa. Elas possibilitam que os investidores, conhecidos como acionistas, ganhem regularmente dinheiro de acordo com o crescimento da empresa (Antunes e Procianoy, 2003). Dessa forma, os acionistas de uma empresa assumem o risco de obter sucesso ou fracasso no investimento, ao adquirir uma ação.

As ações das empresas podem ser negociadas na bolsa de valores, que pode ser um local físico ou eletrônico. No mercado acionário brasileiro, a bolsa de valores é a Bovespa, fundada em agosto de 1890. A qual em maio de 2008, foi integrada a bolsa BM&F e passou a se chamar BM&FBovespa. O Índice Bovespa (Ibovespa) serve como parâmetro para avaliar o desempenho deste mercado (B3, 2016).

A variação de preços nas ações constitui um fator de risco primordial, não sendo possível determinar exatamente qual será o retorno do investidor nas negociações, em que tais retornos são diretamente dependentes da lei de mercado da procura e oferta. Portanto, faz-se necessário buscar métodos de análise adequados para os mercados de ações, almejando ter o mínimo de risco envolvido no processo com a determinação de perfis de investimentos versus um dado comportamento do mercado, e mutuamente a compreensão dos fatores ligados às atitudes dos participantes do mercado e suas consequências.

4 Questões Estatísticas

Considerando uma série temporal {Zt|t = 1, 2 , …, N} e assumindo que ela possui média e desvio padrão μ, então podemos dizer que o r-ésimo momento central de Zt com μ2= σ², é , em que z corresponde a cada observação da amostra considerada. Assim, para uma função densidade de probabilidade f(x) temos que o momento central μr é dado por . A partir disso, pode ser definido, respectivamente, o coeficiente de assimetria e o de curtose, como (Bai e Ng, 2005; Engle, 2011):

(4)

(5)

A curtose informa sobre o comportamento da cauda da função densidade de probabilidade (fdp) do processo em estudo, enquanto a assimetria indica a distorção da distribuição quanto a sua simetria em relação ao eixo da ordenada. A distribuição Gaussiana possui a3 = 0 (simétrica) e a4 = 3. Quando a4 > 3, é dito que a distribuição de Zt tem caudas pesadas. Como apontado por Mandelbrot (1963), a distribuição marginal dos retornos de ativos tem cauda pesada.

A função de autocorrelação é usada para analisar a estacionariedade da série de dados e testar sua previsibilidade (Gujarati, 2006). Quando há ausência de autocorrelação, significa que a série segue um passeio aleatório. Desse modo, não é possível construir um modelo que infira seu comportamento futuro.

Neste trabalho, buscou-se identificar com o mercado simulado, as principais características estatísticas das flutuações observadas da série histórica financeira dos ativos em um mercado financeiro específico.

5 Método Proposto

Nesta seção serão explicadas quais considerações foram feitas no algoritmo PSO para contextualização do problema abordado. Com o objetivo de garantir a estabilidade da evolução do PSO, evitando-se o aumento das velocidades das partículas de forma descontrolada, é observado o fator de constrição dado por φ = c1+c2. Segundo Clerc e Kennedy (Clerc e Kennedy, 2002) a estabilidade do PSO quanto ao controle do crescimento das velocidades das partículas é garantida quando φ > 4. Desta forma, seguindo tal orientação, foi escolhido o valor de 2,1 para ambos c1 e c2. A razão de se utilizar valores iguais vem da intenção de se gerar a mesma importância tanto para a busca local como para a busca global.

Inicialmente foram geradas séries artificiais a partir de um modelo do tipo caminho aleatório, seguindo distribuições normais com média zero e variâncias σ²=0,01, σ²=0,05, σ²=0,10 (forma funcional do modelo: Zt=Zt-1+ et, em que et ~ N(0,σ²). Além destas séries artificiais, na tentativa de se gerar processos que simulam mercados com tendência de alta e baixa, para cada um dos valores das variâncias citadas, foram adicionadas tendências aos processos de caminhadas aleatórias, modelados pela constante θ = ±0,01; ±0,05; ±0,10, constante esta chamada na economia de drift, nos modelos descritos como:

(6)

Tais valores de drifts caracterizam uma componente de tendência determinística, que será de crescimento se o seu sinal for positivo e de decrescimento se o seu sinal for negativo. Os valores escolhidos para tais drifts caracterizam um baixo, médio e alto nível de tendência.

Desta forma, foram criados 18 diferentes cenários artificiais, dos quais nove simularam o mercado com comportamento em alta e nove o mercado com comportamento em baixa. Para cada cenário, foram realizadas 30 simulações de 20.000 iterações do PSO, em que cada iteração representa um dia de negociação no mercado. Para análise dos resultados, foi extraído o comportamento médio de cada configuração.

O PSO foi implementado na linguagem C, o qual foi desenvolvido e compilado em Linux, processador Intel® Xeon® CPU, E5410 2.33GHz (4 CPUs), Memória: 16434,58MB. O Algoritmo 1 apresenta o pseudocódigo do PSO implementado. Foram realizadas 30 simulações com cada um dos cenários gerados artificialmente, totalizando 540 simulações.

Algoritmo 1: Pseudocódigo do algoritmo PSO para o mercado simulado

/*Inicialização do espaço de busca e das partículas*/

2: for i=1 até Nparticulas do

δ[i] <- U(0,1) /*Limiar de Venda*/

4: λ[i] <- U(0,1) /*Limiar de Compra*/

capital[i] <- 1000

6: end for

/*Simulações do PSO (s)*/

8: for s = 1 até NPSO do

if s = 1 then

10: preco[s] <- 1

else

12: preco[s] <- preco[s - 1]+N(μ,σ²)

end if

14: /*Para as negociações (l)*/

for l = 1 até Nneg do

16: Sorteio dos agentes vendedores e dos agentes compradores

Atualização dos preços de venda e de compra de cada agente ()

18: Preco_Venda[i]=preco[s]+(1+δ[i])

Preco_Compra[i]=preco[s]+(1+λ[i])

20: end for

if Preco_Venda[i] ≤ Preco_Compra[i] then

22: Agente comprador (ac) compra a ação negociada e transfere o capital para o agente vendedor (av)

Agente vendedor recebe capital do comprador e transfere a ação para ele

24: end if

preco_mercado[s] <- Preco_Medio_Negociado()

26: /*Usando o PSO para maximizar a riqueza dos agentes*/

for i = 1 até Nparticulas do

28: fitness[i] <- capital[i]+preco_mercado[s]*acoes[i]

end for

30: for i = 1 até Nparticulas do

A partir de novos números aleatórios para os limiares, atualiza as coordenadas das partículas xi=(δ[i],λ[i])

32: end for

end for

34: return Informações da melhor e da pior partícula para cada s-iteração

Cada partícula da população do PSO representa um agente financeiro que atua no mercado comprando e/ou vendendo ações. Cada um destes agentes é modelado com a ideia que, dado o valor de mercado de uma ação (gerado pelos cenários artificiais simulados), eles têm um limiar de compra (λ) e de venda (δ) que podem ser adicionados ao valor de mercado da ação, os quais definem as respectivas estratégias de possibilidade de compra e venda do agente, de tal forma que

(i) O agente aceita comprar uma ação até o valor limite de

pt+ pt λt = pt (1 + λti)

(7)

(ii) O agente i aceita vender uma ação até o valor limite de

pt + pt δt =pt (1+δti)

(8)

em que pt é o preço de mercado da ação no instante t e δti e λti são valores no intervalo (0,1) que representam os limiares de tolerâncias de venda e compra no tempo t do agente i.

Desta forma, cada partícula i é representada por (δi, λi) e seu capital. No início do procedimento são sorteados para cada partícula os seus valores δ e λ seguindo uma distribuição uniforme U(0,1) e um capital constante de 1000 unidades monetárias (linhas 4 a 6 no Algoritmo 1).

Nos experimentos foi utilizada uma população com Nparticulas = 1000 partículas, em que para cada iteração s do PSO (s = 1, 2, ..., Npso) são sorteados 50% da população como possíveis compradores e 50% como possíveis vendedores. As partículas chamadas de compradores são aquelas que irão simular os agentes financeiros com a intenção de compra e as partículas vendedoras simularão os agentes com intenção de venda.

A dinâmica da negociação dos papeis no mercado simulado é estocástica, sendo uma partícula do conjunto de vendedoras escolhida aleatoriamente e uma partícula do conjunto de compradoras também escolhida de forma aleatória. O agente comprador tem a prerrogativa de decidir se haverá ou não a negociação entre as partículas selecionadas. Haverá negociação se o valor oferecido pelo vendedor for menor ou igual ao valor de limiar de compra do comprador, ou seja,

pt (1+δtvendedor) ≤ pt (1 + λtcomprador)

(9)

como apresentado nas linhas 7 a 24 do Algoritmo 1.

Caso a expressão 3 seja falsa, não haverá negociação entre as partículas.

Havendo negociação, é negociada a quantidade de uma ação. O comprador recebe uma ação e é retido o valor da negociação do seu capital, e complementarmente o vendedor tem uma ação retirada de sua carteira e recebe o valor da negociação da venda em seu capital. Ao final da negociação as duas partículas retornam aos seus respectivos conjuntos de compradores e vendedores. Para cada iteração do PSO são realizadas Nneg=1000 negociações entre vendedores e compradores (podendo ou não ser efetivadas).

Ao final de cada iteração do PSO, é analisado qual é o fitness de cada partícula. A função fitness é dada pelo somatório da quantidade de capital e a quantidade de ações vezes o seu preço, conforme mostrado na Equação 4. O objetivo do PSO é ajustar os limiares de compra e de venda em relação ao preço do mercado e então encontrar as estratégias vencedoras e perdedoras, dada a dinâmica do mercado.

fitness[i] = capital[i] + precomercado[i] * acoes[i]

(10)

Após o fim da iteração do PSO, todos os dados sobre os agentes, negociação comercial, retornos dos preços das ações e posições das coordenadas (δ[i], λ[i]) para toda partícula i e para todas as iterações do PSO são analisados.

Após a utilização dos cenários artificiais, também foi utilizada a série do índice Ibovespa real, no período de 27 de abril de 1993 a 01 de agosto de 2016, totalizando 5777 dias, e buscados os comportamentos de sucesso e fracasso de investidores na Bovespa.

6 Resultados

Foram realizadas 30 simulações do algoritmo, obtendo-se os valores de média, desvio-padrão, assimetria e curtose dos retornos dos preços das ações para cada constante de tendência (drift) θ = ± 0,01; ± 0,05; ± 0,10. A Tabela 1 exibe os resultados acima mencionados, em que os valores entre parênteses representam o desvio-padrão.

Tabela 1 – Valores médios para a média, desvio-padrão, assimetria e curtose das séries de retornos para as 30 simulações

NN(μ,σ²)

μretorno

σretorno

α3

α4

N(-0.01, 0.01)

0 (0)

0 (0)

-0.023273 (0.017124)

3.053963 (0.043891)

N(-0.01, 0.05)

0 (0)

0.0001 (0)

-0.005433 (0.014983)

3.042947 (0.036958)

N(-0.01, 0.10)

0 (0)

0.0001 (0)

-0.004927 (0.016004)

3.056173 (0.03427)

N(-0.05, 0.01)

-0.000423 (0.000107)

0.0133 (0.017147)

-34.54065 (22.723252)

2624.837603 (2890.698898)

N(-0.05, 0.05)

-0.00035 (0.000122)

0.01997 (0.034505)

-17.15872 (13.038384)

972.66495 (1346.987133)

N(-0.05, 0.10)

-0.000367 (0.000149)

0.047077 (0.051158)

-8.779197 (7.004211)

610.720257 (795.54359)

N(-0.10, 0.01)

-0.000513 (0.000082)

0.739857 (0.011428)

-3.468323 (0.0262)

28.18458 (2.152878)

N(-0.10, 0.05)

-0.000507 (0.000052)

0.6071 (0.016447)

-3.11873 (0.063103)

31.33113 (2.411986)

N(-0.10, 0.10)

-0.00049 (0.000048)

0.615777 (0.013336)

-2.329087 (0.103785)

27.62651 (3.005577)

N(0.01, 0.01)

0 (0)

0 (0)

0.01606 (0.020393)

3.023317 (0.031296)

N(0.01, 0.05)

0 (0)

0 (0)

0.00398 (0.014293)

3.029647 (0.031532)

N(0.01, 0.10)

0 (0)

0.0001 (0)

0.003877 (0.012265)

3.03843 (0.03365)

N(0.05, 0.01)

0 (0)

0 (0)

0.6079 (0.015137)

3.26096 (0.047776)

N(0.05, 0.05)

0 (0)

0 (0)

0.227003 (0.018448)

3.513487 (0.05928)

N(0.05, 0.10)

0 (0)

0.0001 (0)

0.111793 (0.024244)

3.502167 (0.056135)

N(0.10, 0.01)

0.0001 (0)

0 (0)

0.853257 (0.007234)

2.966987 (0.021025)

N(0.10, 0.05)

0.0001 (0)

0 (0)

0.862083 (0.021705)

4.377707 (0.101223)

N(0.10, 0.10)

0.0001 (0)

0.0001 (0)

0.557333 (0.040889)

4.42545 (0.130567)

Fonte: Autores (2019)

De acordo com a Tabela 1, pode-se observar que μretorno encontra-se próximo de zero para todos os drifts, sendo isso uma consequência direta da forma como os preços foram gerados: a partir de uma distribuição gaussiana. Para os drifts negativos, isto é, aqueles gerados das constantes com tendências negativas (representando mercados com tendência de baixa), observa-se desvalorização nos preços das ações e apenas nos casos N(-0.10,0.01), N(-0.10,0.05) e N(-0.10,0.10) foram observados retornos diferentes de zero. A Figura 1(a) exibe os preços das ações para o drift N(-0.10,0.10), mostrando que em torno da simulação 10000, os preços encontram-se muito próximos de zero. Com isso, o algoritmo incrementa pequenos ruídos positivos para evitar que o preço da ação se torne negativo. A Figura 1(b) exibe os preços das ações para o drift N(-0.01,0.10), não sendo observado nenhum valor próximo a zero e, portanto, não havendo necessidade de intervenção nos preços das ações através do incremento de ruídos positivos.

Figura 1 Preços das ações: (a) drift N(-0.10,0.10), e (b) drift N(-0.01,0.10)

Fonte: Autores (2020)

Embora os resultados obtidos para todos os drifts analisados possam ser visualizados na Tabela 1, a Figura 2 apresenta um exemplo de histograma dos retornos, com o ajuste de uma distribuição N(0.000055,0.00006) aos dados. A curva em vermelho representa o comportamento da distribuição normal ajustada. Os parâmetros de assimetria e curtose indicam que os retornos têm distribuição assimétrica à direita e excesso de curtose, sugerindo que a distribuição dos retornos apresenta caudas mais pesadas que a distribuição normal, ou seja, os eventos extremos no mercado são mais frequentes do que os esperados por um sistema regido por uma distribuição normal.

Figura 2Retornos dos preços das ações com drift

Fonte: Autores (2020)

Ainda observando a Tabela 1, encontram-se, em média, algumas séries com excesso de curtose nos drifts: N(-0.05,0.01), N(-0.05,0.05), N(-0.05,0.10), N(-0.10,0.01), N(-0.10,0.05), N(-0.10,0.10). Isso se deve ao fato de que estas séries temporais de preços são compostas por drifts negativos, indicando comportamento de baixa nos preços do mercado financeiro artificial, indicando também que os eventos extremos têm maior probabilidade de ocorrência em mercados com tendência de baixa (possível crise) do que em mercados em alta (crescimento econômico).

Em relação à assimetria, os drifts negativos apresentaram assimetria negativa. Por outro lado, os drifts positivos apresentam assimetria positiva. Isso indica que os retornos dos preços com assimetria positiva têm maior probabilidade de ocorrerem na cauda direita da distribuição. Em contrapartida, os preços dos retornos que apresentaram assimetria negativa, apresentaram maior probabilidade de ocorrer na cauda esquerda da distribuição. Desta forma, dado que a cauda da esquerda se encontra antes do valor médio da distribuição, os mercados em baixa apontam para um maior risco de perda, como esperado, e de forma análoga a assimetria à direita irá apontar para uma maior probabilidade de ganho.

Para exemplificar os resultados encontrados com as funções de autocorrelação dos preços das ações, a Figura 3 ilustra a função de autocorrelação dos preços das ações com drift N(-0.10,0.10). As linhas tracejadas indicam o intervalo onde a autocorrelação é não significativa (intervalo de confiança a 95% contendo o valor zero). Uma lenta queda (ou ausência de queda) observada na função de autocorrelação da série caracteriza a falta de estacionariedade (Box et al., 2008), observada em todas as séries de preços das ações geradas.

Figura 3 Função de autocorrelação dos preços das ações com drift

Fonte: Autores (2020)

A Figura 4 exibe a função de autocorrelação dos retornos dos preços das ações com drift N(0.10,0.10), em que o intervalo no qual a autocorrelação é não significativa encontra-se indicado pelas linhas tracejadas (intervalo de confiança a 95% contendo o valor zero). Esse comportamento indica que os retornos apresentam uma fraca dependência (principalmente quando comparado a dependência entre os preços), pois a autocorrelação da série de retornos encontra-se acima de 0.0, porém, abaixo de 0.1. Isso ocorre porque o preço atual depende do preço anterior acrescido de um ruído com distribuição N(0.10,0.10). Portanto, enquanto a função de autocorrelação dos preços das ações com drift N(0.10,0.10) exibe falta de estacionariedade, indicando que seus valores não são constantes ao longo do tempo, a função de autocorrelação dos retornos desses preços exibe estacionariedade fraca, refletindo suave capacidade de previsibilidade linear da série no tempo.

Figura 4 Função de autocorrelação dos retornos dos preços das ações com drift N(0.10,0.10)

Fonte: Autores (2020)

Foram realizados testes de hipóteses (teste t-Student), ao nível de significância de 5%, para comparação de médias entre os limiares de venda δ e de compra λ dos melhores agentes para cada drift das 30 simulações realizadas. As hipóteses testadas foram as seguintes: H0 : δ = λ vs H1 : δ ≠ λ. Na Tabela 2 são apresentados os resultados dos testes aplicados, em que para cada melhor partícula são exibidos os valores do intervalo de confiança para δ e λ. É possível verificar que apenas a melhor partícula da situação N(-0.05,0.01) apresentou seu limiar de venda igual (estatisticamente) ao seu limiar de compra. Em todas as outras situações, as melhores partículas apresentaram estratégias de posicionamento no mercado com limiares de compra diferentes dos limiares de venda. Em todos os casos em que foi observada esta diferença entre os limiares de compra e venda, os limiares de venda se apresentaram superiores aos limiares de compra (conforme estabelecido pela regra de negociação entre os agentes financeiros e descrito na Equação 3).

Tabela 2 Teste t-Student ao nível de significância de 5% e intervalo de confiança de 95% para limiares de venda e de compra dos melhores agentes financeiros artificiais em 30 simulações.

N(μ,σ²)

p-valor

IC (δ,95%)

IC(λ,95%)

N(-0.01, 0.01)

0.003445*

0.6151

0.7024

0.3816

0.5971

N(-0.01, 0.05)

0.00001*

0.5684

0.661

0.2608

0.4506

N(-0.01, 0.10)

0.000982*

0.5702

0.6517

0.3591

0.5352

N(-0.05, 0.01)

0.079736

0.5804

0.6808

0.4496

0.6487

N(-0.05, 0.05)

0.002193*

0.5595

0.6377

0.31

0.5281

N(-0.05, 0.10)

0.000077*

0.5966

0.6773

0.2998

0.5036

N(-0.10, 0.01)

0.01919*

0.6076

0.7061

0.4118

0.6352

N(-0.10, 0.05)

0.00158*

0.633

0.7411

0.4034

0.6055

N(-0.10, 0.10)

0.000129*

0.575

0.684

0.2852

0.4946

N(0.01, 0.01)

0*

0.5421

0.5821

0.1923

0.2308

N(0.01, 0.05)

0*

0.5294

0.564

0.1725

0.1989

N(0.01, 0.10)

0*

0.5029

0.5539

0.1792

0.2284

N(0.05, 0.01)

0*

0.6905

0.7451

0.3535

0.4845

N(0.05, 0.05)

0*

0.684

0.7305

0.3313

0.4013

N(0.05, 0.10)

0*

0.6827

0.725

0.346

0.4361

N(0.10, 0.01)

0*

0.7657

0.8089

0.4499

0.5172

N(0.10, 0.05)

0*

0.7516

0.7786

0.4012

0.4686

N(0.10, 0.10)

0*

0.7475

0.7823

0.4264

0.4943

Fonte: Autores (2020)

Pode-se observar na Figura 5 o comportamento dos preços das ações quando utiliza-se um drift N(-0.05,0.01), simulando um mercado em queda.

Figura 5 Preços das ações no mercado em queda usando drift

Fonte: Autores (2020)

A Figura 6 apresenta a comparação entre o fitness (riqueza) dos melhores e piores agentes ao longo das iterações do nosso algoritmo com drift N(-0.05,0.01). Como exibido na Tabela 2, este foi o único drift que não apresentou diferença significativa, ao nível de significância de 5%, entre os limiares de venda (δ) e de compra (λ) dos melhores agentes, demonstrando que não foi possível encontrar uma estratégia de destaque no mercado.

Figura 6 Fitness (riqueza) do melhor e do pior agente com mercado em queda usando drift N(-0.05,0.01)

Fonte: Autores (2020)

De forma típica, as simulações apresentaram situações nas quais foi possível distinguir uma boa estratégia de uma má estratégia de posicionamento no mercado. Por exemplo, a Figura 7 apresenta o cálculo do fitness para o drift N(0.05,0.01), indicando mercado em alta. É notória a diferença de fitness entre o melhor (linha preta) e o pior agente (linha vermelha).

Enquanto o fitness do melhor agente cresce de forma linear (seguindo o crescimento do mercado para o drift N(0.05,0.01)), o fitness do pior agente cresce a uma taxa bem inferior, tendendo a um valor de estabilidade próximo ao fim das 20000 iterações do PSO. Para essa simulação com drift N(0.05,0.01), foram encontrados os limiares de venda e de compra do melhor agente δ=0.6651 e λ=0.511 respectivamente. Enquanto os limiares de venda e compra do pior agente são: δ=0.1393 e λ=0.028. A Tabela 3 apresenta os valores de δ e λ para todas as melhores e piores partículas encontradas nas simulações.

Figura 7Fitness (riqueza) do melhor e do pior agente com mercado em alta usando drift N(0.05,0.01)

Fonte: Autores (2020)

Tabela 3Valores para os limiares de venda e de compra para as melhores e piores partículas na última iteração das simulações

N(μ,σ²)

Melhor

Pior

δ

λ

δ

λ

N(-0.01, 0.01)

0.6588

0.4893

0.0063

0.946

N(-0.01, 0.05)

0.6147

0.3557

0.0082

0.9456

N(-0.01, 0.10)

0.611

0.4472

0.0061

0.9378

N(-0.05, 0.01)

0.6306

0.5491

0.0241

0.9137

N(-0.05, 0.05)

0.5986

0.419

0.0221

0.9

N(-0.05, 0.10)

0.637

0.4017

0.0179

0.887

N(-0.10, 0.01)

0.6569

0.5235

0.0087

0.5837

N(-0.10, 0.05)

0.6871

0.5045

0.0092

0.5845

N(-0.10, 0.10)

0.6295

0.3899

0.0063

0.6556

N(0.01, 0.01)

0.5937

0.2116

0.0234

0.0155

N(0.01, 0.05)

0.5467

0.1857

0.0299

0.0133

N(0.01, 0.10)

0.5284

0.2038

0.0368

0.0142

N(0.05, 0.01)

0.7178

0.419

0.0372

0.0127

N(0.05, 0.05)

0.7073

0.3663

0.0289

0.014

N(0.05, 0.10)

0.7038

0.3911

0.0319

0.0143

N(0.10, 0.01)

0.7873

0.4836

0.0284

0.0106

N(0.10, 0.05)

0.7651

0.4349

0.0319

0.0151

N(0.10, 0.10)

0.7649

0.4603

0.0362

0.0128

Fonte: Autores (20200

A Figura 8(a) apresenta uma evolução típica dos valores de limiares de compra (linha vermelha) e venda (linha preta) do melhor agente (mais rico). A Figura 8(b) exibe os limiares de venda e de compra do pior agente (mais pobre). É interessante notar que este agente apresenta um perfil mais conservador, pois embora queira comprar barato (λ=0,02), também se dispõe a vender barato (δ=0,03). Ao contrário do perfil (mais agressivo) do melhor agente, que está disposto tanto a comprar mais caro como vender mais caro que o pior agente.

Figura 8 Limiares de venda e de compra para o melhor agente (a) com mercado em alta usando drift N(0.05,0.01) e para o pior agente (b).

Fonte: Autores (2020)

Pode-se observar na Figura 9 o espaço de busca e = (δ, λ, fitness) com a trajetória descrita pela melhor partícula durante a execução do PSO, em que os pontos inicial e final estão indicados. Nesta simulação em particular utilizou-se drift N(0.01,0.01).

Figura 9Espaço de busca do algoritmo ilustrando a movimentação da melhor partícula em 20000 iterações, em que δ representa o limiar de venda e λ o limiar de compra para o melhor agente com mercado em alta usando drift N(0.01,0.10)

Fonte: Autores (2020)

O mesmo procedimento também foi aplicado à série diária de fechamento de preço das ações da BOVESPA no período de 27/04/1993 a 01/08/2016, totalizando 5777 dias. Para o melhor agente, foram encontrados os limiares de venda, compra e fitness, respectivamente: δ = 0.3659, λ = 0.3154 e fitness = 29608144. A Figura 10 apresenta os limiares de venda e de compra do melhor agente para a série de preços de fechamento diário da Ibovespa.

Figura 10 Limiares de venda δ e de compra λ para o melhor agente da série de fechamento de preço do Ibovespa

Fonte: Autores (2020)

Como mostra na Figura 10, corroborada pela evolução da melhor partícula mostrada na Figura 11, o melhor agente obteve valores de limiares de compra e venda muito próximos, indicando que limiares com valores mais equilibrados (limiar de venda aproximadamente 13% menor do que o limiar de compra) tendem a ter maior fitness para o caso do mercado da BOVESPA.

Figura 11 Espaço de busca do algoritmo ilustrando a movimentação da melhor partícula para a série Ibovespa, em que δ representa o limiar de venda e λ o limiar de compra para o melhor agente

Fonte: Autores (2020)

7 Conclusões

Nosso estudo teve como objetivo simular um mercado financeiro em duas situações gerais. A primeira simula mercado em baixa, quando há desvalorização nos preços das ações seguindo um drift com distribuição Normal de média negativa. A segunda situação simula mercado em alta, em que ocorre valorização nos preços das ações de acordo com um drift seguindo distribuição Normal de média positiva. Neste trabalho foram simulados 18 drifts em 30 simulações de 20000 iterações, em que a cada iteração o PSO atualiza os valores dos limiares de venda e compra a cada 1000 negociações entre 1000 agentes financeiros artificiais. Assim, foram calculados os limiares de venda e de compra de cada partícula, para investigar os melhores e piores agentes de acordo com seus valores de fitness, os quais representam a riqueza adquirida por cada agente após cada iteração do algoritmo.

As investigações experimentais nos levam a concluir que quando se tem mercado em baixa, pode haver casos em que não há diferença estatística significativa de ganhos entre os agentes, independente da estratégia adotada nas negociações. Para os mercados em alta, há diferença significativa entre os ganhos obtidos pelos melhores e piores agentes, demonstrando a existência de estratégias vencedoras. No caso do mercado financeiro real da série Ibovespa, o algoritmo foi capaz de obter informação sobre os melhores e piores agentes de acordo com a estratégia adotada na escolha dos limiares de venda e de compra. Levando-se em consideração esses aspectos, a ferramenta desenvolvida para a geração do mercado de ações artificial é de ampla aplicabilidade no estudo e melhor compreensão do mercado acionário.

Como trabalhos futuros, é possível propor a criação de perfis aos agentes financeiros, como por exemplo, agentes com perfil conservador e agentes com perfil agressivo, de tal forma que seja possível gerar uma análise referente aos comportamentos pré-definidos com estes dois grupos. Neste novo cenário, será possível verificar as características que melhor se adéquem ao comportamento do mercado, gerando uma melhor tomada de decisão para o processo de compra e venda de ações. Além disto, podem ser incluídos outros mercados secundários, tais como mercado a termo, opções, dentre outros.

Referências

Abar, S., Theodoropoulos, G. K., Lemarinier, P., O’Hare, G. M. (2017). Agent based modelling and simulation tools: A review of the state-of-art software. Computer Science Review, 24, 13–33.

Antunes, M. A., Procianoy, J. L. (2003). Os efeitos das decisões de investimentos das empresas sobre os preços de suas ações no mercado de capitais. Revista de Administração da Universidade de São Paulo, 38(1), 5–14.

B3 (2016). Perfil e histórico. URL http://ri.bmfbovespa.com.br/static/ptb/perfil-historico.asp?idioma=ptb.

Bai, J., Ng, S. (2005). Tests for skewness, kurtosis, and normality for time series data. Journal of Business & Economic Statistics, 23(1), 49–60.

Box, G. E., Jenkins, G. M., Reinsel, G. C. (2008). Time Series Analysis: Forecasting and Control, 4. ed. John Wiley and Sons.

Chatterjee, S., Sarkar, S., Hore, S., Dey, N., Ashour, A. S., Balas, V. E. (2017). Particle swarm optimization trained neural network for structural failure prediction of multistoried rc buildings. Neural Computing and Applications, 28(8), 2005–2016.

Clerc, M. (2010). Particle swarm optimization, vol 93. John Wiley & Sons.

Clerc, M., Kennedy, J. (2002). The particle swarm-explosion, stability, and convergence in a multidimensional complex space. IEEE transactions on Evolutionary Computation, 6(1), 58–73.

Cont, R. (2001). Empirical properties of asset returns: stylized facts and statistical issues. quantitative finance, 1, 223–236.

Damasceno, N. C., Gabriel Filho, O. (2017). Pi controller optimization for a heat exchanger through metaheuristic bat algorithm, particle swarm optimization, flower pollination algorithm and cuckoo search algorithm. IEEE Latin America Transactions, 15(9), 1801–1807.

Delice, Y., Aydogan, E. K., Özcan, U., ˘˙Ilkay, M. S. (2017). A modified particle swarm optimization algorithm to mixed-model two-sided assembly line balancing. Journal of Intelligent Manufacturing, 28(1), 23–36.

Dorigo, M., Gambardella, L. M. (1997). Ant colony system: a cooperative learning approach to the traveling salesman problem. IEEE Transactions on evolutionary computation, 1(1), 53–66.

Eberhart, R., Kennedy, J. (1995). Particle swarm optimization. Em: Proceedings of the IEEE international conference on neural networks, Citeseer, vol 4, pp. 1942–1948.

Engle, R. F. (2011). Long-term skewness and systemic risk. Journal of Financial Econometrics, 9(3), 437–468.

Goez, G. D., Velasquez, R. A., Botero, J. S. (2016). On-line route planning of uav using particle swarm optimization on microcontrollers. IEEE Latin America Transactions, 14(4), 1705–1710.

Gujarati, D. N. (2006). Econometria Basica. Elsevier Brasil.

Hegazy, O., Soliman, O. S., Salam, M. A. (2015). Comparative study between fpa, ba, mcs, abc, and pso algorithms in training and optimizing of ls-svm for stock market prediction. International Journal of Advanced Computer Research, 5(18), 35–45.

Jale, J. S., Júnior, S. F., Stošic, T., Stoši ´ c, B., Ferreira, T. A. (2019). Information flow between ibovespa and constituent companies. ´Physica A: Statistical Mechanics and its Applications, 516(C), 233–239, URL

https://EconPapers.repec.org/RePEc:eee:phsmap:v:516:y:2019:i:c:p:233-239.

Karazmodeh, M., Nasiri, S., Hashemi, S. M. (2013). Stock price forecasting using support vector machines and improved particle swarm optimization. Journal of Automation and Control Engineering, 1(2), 173–176.

Koad, R., Zobaa, A. F., El-Shahat, A. (2017). A novel mppt algorithm based on particle swarm optimization for photovoltaic systems. IEEE Transactions on Sustainable Energy, 8(2), 468–476.

Kwapien, J., Dro ´ zd˙ z, S. (٢٠١٢). Physical approach to complex systems. ˙ Physics Reports, 515(3-4), 115–226. de Lima, N. F., Fernandes, L. H., Jale, J. S., de Mattos Neto, P. S., Stošic, T., Stoši ´ c, B., Ferreira, T. A. (2018). Long-term ´correlations and cross-correlations in ibovespa and constituent companies. Physica A: Statistical Mechanics and its Applications, 492(C), 1431–1438, URL https://ideas.repec.org/a/eee/phsmap/v492y2018icp1431-1438.html.

Macal, C. M., North, M. J. (2005). Tutorial on agent-based modeling and simulation. Em: Proceedings of the Winter Simulation Conference, 2005., IEEE, pp. 14–pp.

Mandelbrot, B. (1963). The variation of certain speculative prices. The Journal of Business, 36(4), 394–419.

Miramontes, O., Volke, K. (2013). Fronteras de la física en el siglo XXI. CopIt-arXives.

Mitchell, M. (1996). An introduction to genetic algorithms. 9780585030944, MIT press.

Nenortaite, J., Simutis, R. (2004). Stocks’ trading system based on the particle swarm optimization algorithm. Em: International Conference on Computational Science, Springer, pp. 843–850.

Nenortaite, J., Simutis, R. (2005). Adapting particle swarm optimization to stock markets. Em: 5th International Conference on Intelligent Systems Design and Applications (ISDA’05), IEEE, pp. 520–525.

Ramos, W. V., Neto, C. R. (2015). A utilização da modelagem de sistemas complexos na construção de um mercado de ações artificial. Revista Eletrônica do Departamento de Ciências Contábeis & Departamento de Atuária e Métodos Quantitativos (REDECA), 2(1), 101–115.

Rao, P. S., Jana, P. K., Banka, H. (2017). A particle swarm optimization based energy efficient cluster head selection algorithm for wireless sensor networks. Wireless networks, 23(7), 2005–2020.

Serapião, A. B. d. S. (2009). Fundamentos de otimização por inteligência de enxames: uma visão geral. Sba: Controle & Automação Sociedade Brasileira de Automatica, 20(3), 271–304.

Shi, Y., Eberhart, R. C. (1999). Empirical study of particle swarm optimization. Em: Proceedings of the 1999 Congress on Evolutionary Computation-CEC99 (Cat. No. 99TH8406), IEEE, vol 3, pp. 1945–1950.

Stanley, H. E., Amaral, L. A. N., Canning, D., Gopikrishnan, P., Lee, Y., Liu, Y. (1999). Econophysics: Can physicists contribute to the science of economics? Physica A: Statistical Mechanics and its Applications, 269(1), 156–169.

Wang, F., Philip, L., Cheung, D. W. (2012). Complex stock trading strategy based on particle swarm optimization. Em: 2012 IEEE Conference on Computational Intelligence for Financial Engineering & Economics (CIFEr), IEEE, pp. 1–6.

Contribuições de Autoria

1 – Kerolly Kedma Felix do Nascimento

Contribuição: Conceituação, Análise Formal, Curadoria de Dados, Investigação,

Metodologia, Validação, Visualização, Escrita - rascunho original.

2 – Jader da Silva Jale

Contribuição: Conceituação, Análise Formal, Curadoria de Dados, Investigação,

Metodologia, Software, Validação, Visualização, Escrita - rascunho original.

3 – Tiago Alessandro Espínola Ferreira

Contribuição: Conceituação, Investigação, Metodologia, Administração do Projeto, Supervisão, Visualização, Escrita - revisão e edição.