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: ei060119@fe.up.pt Diogo Samuel Teixeira da Rocha: ei06109@fe.up.pt Eduardo Jorge Silva Leite de Oliveira: ei06023@fe.up.pt 2 de Novembro de 2009
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
Í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
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
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). %k = 100 Pre ço Corrente Mínimo Máximo Mínimo 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
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: MME actual = Preço corrente MME anterior 2 Período + 1 + MME anterior 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: RSI = 100 100 1 RS 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: RS = S 13 +Subida /14 ( D 13 +Descida )/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
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
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
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
Especificação Identificação e caracterização dos agentes (arquitectura, comportamento, estratégias) 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
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 BCP faz MME Accao tem Inv estidor RSI Mercado 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
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
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
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
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