Faculdade de Engenharia da Universidade do Porto
Mestrado Integrado em Engenharia Informática e Computação
Simulação de uma Bolsa de Valores Virtual
com agentes BDI
Relatório Intermédio de Agentes e Inteligência Artificial Distribuída
2009/2010
Elementos do Grupo (Turma 1):
David Manuel Rodrigues de Magalhães: [email protected]
Diogo Samuel Teixeira da Rocha: [email protected]
Eduardo Jorge Silva Leite de Oliveira: [email protected]
2 de Novembro de 2009
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Resumo
Este relatório pretende descrever o estado actual de desenvolvimento de um projecto
que consiste em construir um sistema multi-agente para fazer a simulação de uma bolsa de
valores virtual com agentes BDI. Pretende-se que os agentes desempenhem o papel de
investidores na bolsa de valores cujo objectivo é, através de compra e venda de acções,
maximizar o rendimento de cada investidor.
Nesta fase do projecto, ainda não existe qualquer tipo de implementação. Neste
relatório apenas é descrito a arquitectura do sistema multi-agente a implementar, assim como
a plataforma a usar, que é a ferramenta BRAHMS. São também explicadas as abordagens
usadas pelos agentes investidores para analisar a bolsa.
1
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Índice
Introdução ....................................................................................................................................3
Descrição do Problema ................................................................................................................4
Descrição do cenário ................................................................................................................4
Objectivos do trabalho .............................................................................................................6
Resultados esperados e forma de avaliação ............................................................................6
A plataforma BRAHMS .................................................................................................................7
Descrição das características principais ...................................................................................7
Realce das funcionalidades relevantes para o trabalho ...........................................................7
Especificação ................................................................................................................................9
Identificação e caracterização dos agentes (arquitectura, comportamento, estratégias) .......9

Grupo Investidor ..........................................................................................................9

Grupo Estocastico (membro de grupo Investidor) .......................................................9

Grupo MME (membro do grupo Investidor) .................................................................9

Grupo MACD (membro do grupo Investidor) ...............................................................9

Grupo RSI (membro do grupo Investidor) ....................................................................9

Grupo Combinado (membro do grupo Investidor) .......................................................9

Grupo Naive (membro de grupo Investidor) ................................................................9

Agente Mercado ...........................................................................................................9

Classe Accao .................................................................................................................9

Classe AccaoCompra...................................................................................................10

Classe AccaoVenda .....................................................................................................10
Protocolos de interacção ........................................................................................................11
Faseamento do projecto ........................................................................................................12
Conclusão ...................................................................................................................................13
Bibliografia .................................................................................................................................14
2
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Introdução
Este projecto tem como objectivo a simulação de um ambiente virtual de uma bolsa de
valores com agentes BDI usando informação real dos mercados, relativa a cotações, volumes
transaccionados, variações de cotação, etc. Através deste conjunto de informações iniciais, um
conjunto de agentes investidores devem decidir quando comprar ou vender de forma a
maximizar o seu rendimento.
Desta forma, este trabalho representa a primeira abordagem a um problema de
agentes, que uma importante vertente da Inteligência Artificial.
A realização deste trabalho insere-se no âmbito da cadeira de Agentes e Inteligência
Artificial Distribuída leccionada no 4º ano do Mestrado Integrado em Engenharia Informática e
Computação da Faculdade de Engenharia da Universidade do Porto.
Perante uma série de opções, a escolha do grupo recaiu sobre este trabalho por causa
do interesse e curiosidade que o funcionamento do mercado de valores suscita, pois, nos dias
que correm, muito se fala deste assunto e da influência que tem na economia global.
A plataforma escolhida para a realização deste trabalho foi o sistema de multi-agente
BRAHMS (Business Redesign Agent-based Holistic Modeling System), BRAHMS é um ambiente
usado com o propósito de simulação bem como soluções de software que requerem agentes
com inteligência artificial, possibilitando o uso de crenças, desejos e intenções (BDI: beliefdesire-and-intention).
Este documento é escrito numa fase intermédia do projecto com o objectivo de
fornecer uma descrição e análise do problema e descrever a solução projectada e suas
funcionalidades principais e restrições. Assim, no presente relatório são expostos os seguintes
temas, por esta ordem: análise e descrição do problema e dos objectivos do trabalho; análise
da plataforma sobre a qual se irá desenvolver este projecto, identificação e caracterização dos
agentes e outras entidades a utilizar e os protocolos de interacção entre eles. Finalmente é
demonstrado o plano a seguir e são tiradas conclusões relativamente à realização deste
trabalho.
3
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Descrição do Problema
Descrição do cenário
O cenário do trabalho consiste numa bolsa de valores, onde serão aplicados agentes
investidores.
A bolsa de valores é um local onde as acções são transaccionadas pelos investidores.
Essas acções passam de investidor para investidor a um determinado preço de compra/venda
o que poderá aumentar ou diminuir o índice do valor da empresa.
As acções são títulos de uma empresa, que podem estar em grande número (cada
empresa tem um conjunto de acções). Essas acções podem ser transaccionadas a um
determinado preço o que deverá reflectir o estado da empresa.
Os investidores fazem variar o preço das acções de uma empresa conforme a procura
e venda de acções e são os que no final de uma transacção poderão obter lucro ou perdas com
as vendas das mesmas, que é o objectivo final.
Hoje em dia a bolsa de valores é um dos principais locais onde se poderá ter uma ideia do
valor de uma empresa, apesar do índice anunciado do valor da empresa na bolsa possa não
corresponder ao exacto valor da mesma, mas dá para perceber o valor duma empresa em
relação a outras.

Análise técnica
A análise técnica permite avaliar uma determinada empresa com base em indicadores.
Existem vários indicadores que se baseiam no histórico das cotações para obter informações
acerca das tendências que um determinado título deverá seguir no futuro. Um ou mais
indicadores podem servir de base à decisão de compra e venda de títulos com o objectivo de
tentar maximizar os ganhos. Irão ser abordados os seguintes indicadores (informações
retiradas de [1]):
Indicador Estotástico
Este indicador usa o valor máximo e mínimo da cotação para um período de N dias. De
modo a se poderem efectuar análises com este indicador são necessárias duas linhas, a
primeira linha é o conceito em si (denominada %k) e a segunda linha é uma média móvel do
indicador (denominada %d).
%𝑘 = 100 ×
𝑃𝑟𝑒 ç𝑜 𝐶𝑜𝑟𝑟𝑒𝑛𝑡𝑒 ×𝑀í𝑛𝑖𝑚𝑜
𝑀á𝑥𝑖𝑚𝑜 −𝑀í𝑛𝑖𝑚𝑜
Em que Mínimo é o valor mínimo da cotação num período N e Máximo é o valor
máximo de cotação no mesmo período.
%d corresponde simplesmente ao cálculo da média de três valores de %k calculados
para períodos de dias diferentes (por exemplo, 5, 11 e 14) [2].
O agente que segue este indicador decide vender quando a linha %k passa abaixo da
linha %d. Quando a linha %k passa acima da linha %d, o agente investidor decide comprar.
4
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Indicador MME
A média móvel exponencial (MME) é um indicador muito utilizado e fiável para análise
bolsista.
O seu cálculo assenta numa média pesada de valores históricos das cotações de um
determinado título, tal como o indicador anterior que abordamos também neste temos que
escolher um intervalo que iremos ter em conta.
A sua fórmula de cálculo é a seguinte:
𝑀𝑀𝐸 𝑎𝑐𝑡𝑢𝑎𝑙 = 𝑃𝑟𝑒ç𝑜 𝑐𝑜𝑟𝑟𝑒𝑛𝑡𝑒 − 𝑀𝑀𝐸 𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟 ×
2
+ 𝑀𝑀𝐸 𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟
𝑃𝑒𝑟í𝑜𝑑𝑜 + 1
O agente investidor decide comprar acções de um determinado título em bolsa
quando o valor da MME cruza a linha das cotações de um título para um valor superior, caso
contrário decide vender.
Indicador RSI
O Índice de Força Relativa (Relative Strength Index: RSI) é um indicador que permite
determinar qual a força do valor actual da acção de um título face a valores passados.
A sua fórmula de cálculo é a seguinte:
𝑅𝑆𝐼 = 100 −
100
1− 𝑅𝑆
Sendo RS = S/D, de um determinado título, S representa a média de fecho das cotações
dos últimos N dias em que este subiu, e D representa a média de fecho das cotações dos
últimos N dias em que este desceu. Fazendo este cálculo obtém-se o valor inicial do RSI para os
seguintes cálculos é necessário obter o novo RS através da seguinte fórmula:
𝑅𝑆 =
𝑆×13 +𝑆𝑢𝑏𝑖𝑑𝑎 /14
( 𝐷×13 +𝐷𝑒𝑠𝑐𝑖𝑑𝑎 )/14
A Subida e Descida representam a diferença que o novo valor da acção sofreu
relativamente ao anterior.
O valor do RSI pode variar entre 0 e 100 de modo que o agente que segue este
indicador compra quanto este indicador desce abaixo de 30 e vende quando sobe acima dos
70.
Indicador MACD
O Moving Average Convergence/Divergence (MACD) é um indicador de tendência que
mostra a relação entre duas médias móveis. É calculado subtraindo à média móvel exponencial
de 26 dias a média móvel exponencial de 12 dias.
O gráfico que daí se obtém é comparado com o gráfico da média móvel exponencial de
9 dias denominada de linha de sinal.
Intersecções dos gráficos: uma regra do MACD é vender sempre que o seu gráfico
passe para baixo do gráfico da sua linha de sinal. Da mesma forma, um sinal de compra é
emitido sempre que o seu gráfico passa para cima da sua linha de sinal.
5
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Os indicadores aqui apresentados servirão de base para implementar as estratégias de
compra e venda dos agentes a criar.
Objectivos do trabalho





Os objectivos deste trabalho são:
Desenvolvimento de um sistema inicial de Bolsa através da obtenção de informações
reais dos mercados, relativas a cotações, volumes transaccionados, variações de
cotação, etc., retiradas de serviços on-line;
Desenvolvimento de um conjunto de agentes investidores que através da análise de
indicadores procuram maximizar os ganhos através de compra e venda de acções;
Implementação de diferentes estratégias através do uso de diferentes indicadores
para procurar maximizar os ganhos dos investidores;
Desenvolvimento de interface gráfica que permita de forma “user friendly” visualizar a
actividade de cada investidor e tirar ilações;
Aprendizagem da ferramenta BRAHMS e dos conceitos fundamentais de agentes,
crenças, desejos e intenções.
Resultados esperados e forma de avaliação
Espera-se que os agentes consigam determinar o comportamento da bolsa, tentando
prever qual a tendência da mesma. Para isso serão criados diferentes tipos de agentes com
estratégias diferentes de modo a simular a realidade o mais possível, na tentativa de que cada
agente tente maximizar o seu resultado.
Para avaliar os resultados pretende-se fazer uma estatística dos resultados obtidos
pelos diferentes tipos de agentes, de forma a se concluir qual é que obtém melhores
resultados.
6
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
A plataforma BRAHMS
A ferramenta a utilizar será o software de agentes BRAHMS (Business Redesign Agentbased Holistic Modeling System). Este software permite a simulação de um ambiente com
agentes que simulam o comportamento humano e as interacções entre humanos e máquinas
[3].
O BRAHMS surgiu como teste de doutoramento de Maarten Sierhuis em Ciências
Sociais e Informáticas, na universidade de Amesterdão, Holanda [4]. Esta ferramenta foi
desenvolvida com o objectivo de analisar e modelar organizações humanas e processos de
trabalho [3].
Actualmente o Doutor Maaten Sierhuis é investigador no NASA Ames Research Center,
no estado da Califórnia, E.U.A. [5], sendo que a ferramenta BRAHMS é agora uma marca
registada da NASA (National Aeronautics and Space Administration) [6].
Descrição das características principais
O BRAHMS possui uma linguagem de programação orientada a agentes, baseada no
modelo BDI (belief, desire, intention). Esta linguagem é baseada em regras e é estruturada em
conceitos como agentes, objectos, crenças, factos ou actividades, entre outros. Existe um
estado do mundo que é composto por factos. Cada agente ou objecto possui crenças e regem
os seus comportamentos (actividades) pelas suas crenças, pelo estado do mundo e pelas
informações obtidas dos outros agentes e objectos.
Esta linguagem tem ainda um sistema geográfico que permite criar uma área com
vários locais de modo a saber a localização dos agentes/objectos.
Os agentes têm a possibilidade de transmitir as suas crenças a outros agentes e de
alterar as suas crenças e visão do estado do mundo, mediante as regras de raciocínio
estabelecidas.
Um componente importante do BRAHMS é a virtual machine. Esta permite simular o
ambiente multi-agente, de forma automática, bastando especificar o tempo de simulação,
entre outras coisas. A simulação consiste num programa Java, em que cada agente e cada
objecto corresponde a um thread. É também por isto que o BRAHMS permite especificar
actividades ou mesmo agentes em linguagem Java, o que dá uma muito maior flexibilidade
para especificar comportamentos.
A simulação é guardada em ficheiro, que depois é possível de visualizar no BRAHMS: é
possível ver a comunicação entre os agentes e objectos e o tempo de duração das actividades,
através do Agent Viewer.
Realce das funcionalidades relevantes para o trabalho
O objectivo deste trabalho é ter vários agentes investidores que façam compras e
vendas de acções entre si. O facto da linguagem do BRAHMS ser orientada a agentes facilita o
seu desenvolvimento, até porque esta segue o modelo BDI que é o que é pretendido para este
trabalho.
7
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Por outro lado a referida virtual machine permite fazer uma simulação
automaticamente, enquanto que doutra forma teria-se que construir uma simulação
integralmente.
8
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Especificação
Identificação e caracterização
comportamento, estratégias)
dos
agentes
(arquitectura,
No BRAHMS existem os conceitos grupo e classe. Os grupos são constituídos por
agentes e as classes que são constituídas por objectos. Os agentes do mesmo grupo partilham
características comuns ao grupo.

Grupo Investidor
Existem vários tipos de agentes investidores, cada um com a sua estratégia de analisar
o mercado. Cada agente deste grupo tem como atributos as acções que possui, bem como as
acções de compra a venda que lançou.

Grupo Estocastico (membro de grupo Investidor)
O grupo Estocastico é membro do grupo Investidor. Os agentes deste grupo são por
isso investidores e utilizam o indicador estocástico para avaliar a bolsa.

Grupo MME (membro do grupo Investidor)
O grupo MME também é membro do grupo Investidor. Estes agentes utilizam o
indicador média móvel exponencial (MME) para avaliar a bolsa.

Grupo MACD (membro do grupo Investidor)
O grupo MACD também é membro do grupo Investidor. Estes agentes utilizam o
indicador MACD (que se baseia em três MME) para avaliar a bolsa.

Grupo RSI (membro do grupo Investidor)
O grupo RSI também é membro do grupo Investidor. Estes agentes utilizam o indicador
Relative Strength Index (RSI) para avaliar a bolsa.

Grupo Combinado (membro do grupo Investidor)
O grupo Combinado também é membro do grupo Investidor. Estes agentes utilizam
vários indicadores, dos referidos anteriormente, para avaliar a bolsa.

Grupo Naive (membro de grupo Investidor)
O grupo Naive é membro do grupo Investidor. Os agentes deste grupo são por isso
investidores e utilizam um método de compra ou venda muito simples: se as acções estiverem
acima de uma determinada cotação, compra; se estiverem abaixo, vende.

Agente Mercado
Só existe um agente deste tipo, por isso é que não se criou um grupo. O agente
Mercado guarda as acções de compra e de venda feita pelos investidores e verifica se existem
propostas de compra que satisfaçam propostas de venda, de modo a se proceder a
transacções de acções [7].

Classe Accao
Cada objecto que herda da classe Accao representa todas as acções de uma empresa.
Assim cada objecto desta classe tem um nome identificador da empresa, o valor da cotação
9
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
actual das acções e o número de acções desse tipo que existem. Cada objecto Accao terá ainda
um histórico do valor do fecho das acções da empresa durante um período a definir.

Classe AccaoCompra
Cada objecto da classe AccaoCompra representa uma acção de compra de acções de
uma empresa por parte de um investidor. Por isso esta classe tem como atributos o número de
acções a comprar, o preço que o investidor oferece e o tipo de acções a comprar.

Classe AccaoVenda
Esta classe tem estrutura e função análoga à classe AccaoCompra, a diferença é que
esta classe representa acções de venda, em vez de acções de compra.
A figura 1 mostra como estes componentes estão ligados no sistema.
class Class Model
analisa
BPI
AccaoCompra
Estocastico
faz
MME
BCP
Accao
Inv estidor
Mercado
tem
RSI
SONAECOM
faz
MACD
AccaoVenda
...
Combinado
Naiv e
analisa
Figura 1: Relações existentes entre os componentes do ambiente multi-agente.
Pela figura 1 pode-se ver que os agentes do tipo Estocastico, MME, RSI, MACD,
Combinado e Naive pertencem ao grupo Investidor. Cada elemento deste grupo tem
10
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
elementos da classe Accao. Esses elementos podem ser acções BPI, BCP, etc. Por outro lado
cada elemento do grupo Investidor faz acções de compra ou venda (classe AccaoCompra e
classe AccaoVenda) sobre acções de uma empresa (classe Accao).
De referir ainda que o mercado bolsista a utilizar é composto pelas empresas que
constituem o índice PSI-20, que é o principal índice da bolsa de valores de Lisboa [8]. Daí que
apareçam no diagrama da figura 1 as entidades BPI, BCP e SONAECOM que são objectos
membros do grupo Accao, pois são acções de empresas que constituem este índice.
Protocolos de interacção
Os agentes investidores necessitam de analisar as acções existentes no mercado para
decidir se devem comprar ou vender acções. A figura 2 mostra o processo de comunicação
existente entre as várias entidades para que um agente investidor compre acções.
sd Use Case View
Agente Mercado
Agente Investidor
Comprador
Objectos Accao
Objectos
AccaoVenda
Agente Investidor
Vendedor
analisaAccoes()
fazAccaoDeCompra()
AccaoCompra
enviaAccaoCompra()
amalisaProposta()
existeAccaoVenda()
propostaAceite()
compraAccao()
enviaDinheiro()
Figura 2: Diagrama de sequência da compra de acções de uma empresa, por parte de um agente
investidor.
O agente Investidor analisa todos os objectos da classe Accao que existem no
mercado. Mediante a estratégia de avaliação das acções, ele pode decidir comprar acções de
uma empresa. Se decide comprar então ele tem que criar um objecto da classe AccaoCompra.
O agente Mercado, depois de receber a AccaoCompra, verifica se existe um objecto
AccaoVenda que representa uma acção de venda que satisfaça a acção de compra. Se existir,
então dá-se a compra de acções. O agente Mercado informa a classe AccaoCompra, sendo que
11
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
esta informa o agente investidor comprador, descontando-lhe o dinheiro que é enviado para o
agente vendedor pelo mercado.
O processo de venda de acções é análogo a este, sendo que só trocam os agentes
comprador e vendedor de posição no diagrama.
Faseamento do projecto
Até à entrega deste relatório fez-se o estudo do funcionamento da bolsa de valores e
da ferramenta BRAHMS. Também já existe algum código feito, mas ainda não testado.
A partir de agora pretende-se colocar a bolsa a funcionar com agentes naíve e só
depois começar a introduzir métodos de análise da bolsa mais complexos, que provavelmente
envolverão a criação de actividades na linguagem Java. Isto tem que ser feito, naturalmente,
de forma gradual, pois primeiro começa-se com poucos agentes, e vai-se aumentando o
número destes para ver como interagem.
Depois de atingir uma combinação estável, o objectivo é fazer uma estatística dos
resultados obtidos por cada tipo de agente, a fim de verificar a influência que cada indicador
tem no desempenho do respectivo investidor.
Numa primeira fase pretende-se utilizar o Agent Viewer do BRAHMS para testar.
Depois tentar-se-á criar uma interface gráfica para facilitar a percepção do que se passa na
simulação.
12
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Conclusão
Neste relatório foi apresentado um modelo a utilizar para montar um sistema multiagente que simule o funcionamento de uma bolsa de valores. Por ainda não se ter testado este
modelo, ainda não se podem tirar conclusões sobre a sua funcionalidade e sobre as diferenças
existentes entre os indicadores da análise técnica referidos. No entanto, com as entidades
descritas neste relatório, espera-se implementar com sucesso este sistema.
Naturalmente que os agentes e objectos aqui descritos podem vir a sofrer alterações
na versão final, devido ao facto de ainda não terem sido testados e de se tratar da primeira
experiência com a ferramenta BRAHMS.
13
Simulação de uma Bolsa de Valores Virtual com agentes BDI
AIAD 09/10
Bibliografia








[1] Pacheco, J.C.S.; Pacheco, P.J.D; Silva, T.M.G.; Relatório Final: Agentes para um Bolsa
de
Valores
Virtual;
FEUP,
disponível
em
http://paginas.fe.up.pt/~eol/AIAD/TRABALHOS_ANT/BolsaV_0506.pdf; Dezembro de
2005;
[2]
Stochastic
Oscillator
–
Wikipedia,
disponível
em
http://en.wikipedia.org/wiki/Stochastic_oscillator, consultado em 30 de Outubro de
2009;
[3] Agent iSolutions, disponível em www.agentisolutions.com, consultado em 30 de
Outubro de 2009;
[4]
Maarten
Sierhuis'
Home
Page,
disponível
em
http://homepage.mac.com/msierhuis/Menu8.html, consultado em 30 de Outubro de
2009;
[5]
NASA
–
Ames
Home,
disponível
em
http://www.nasa.gov/centers/ames/home/index.html, consultado em 30 de Outubro
de 2009;
[6] NASA – Wikipedia, disponível em http://en.wikipedia.org/wiki/NASA, consultado
em 30 de Outubro de 2009;
[7] Pereira, C.C.; Mauri, A.; Tettamanzi, A.G.B; Cognitive-Agent-Based Modeling of a
Financial Market; 2009 IEEE/WIC/ACM International Joint Conference on Web
Intelligence and Intelligent Agent Technology;
[8] PSI20.NET, disponível em http://www.psi20.net/, consultado em 30 de Outubro de
2009;
14
Download

Simulação de uma Bolsa de Valores Virtual com