Cinco anos atrás, uma idéia me ocorreu. Decidi simular o máximo da economia global para saber exatamente qual dinâmica esperar de ações, títulos, taxas de câmbio etc. Havia apenas um pequeno problema, o modelo de tudo isso não existe. E pior, economistas argumentam há décadas qual dos seus modelos econométricos mais longos descreve esses processos complexos pelo menos aproximadamente corretamente. Portanto, em vez de tentar puxar um modelo fictício (e, é claro, insanamente simplificado) para uma realidade multifacetada, iniciei um caminho conceitualmente diferente - agentes de modelagem no nível micro, para que, na exaustiva luta pela sobrevivência, por tentativa e erro, eles chegassem a um estado de equilíbrio, que no nível macro é expresso em a dinâmica de preços, taxas, etc.
O resultado da minha pesquisa é descrito abaixo. Para visualização, gravei o movimento de agentes e cada pixel deste vídeo oculta uma rede neural, ou seja, o cérebro de um agente lutando para sobreviver em competição com sua própria espécie no mundo cruel de lucro e limpeza.
Por que isso deveria ser facilmente entendido, por exemplo, nas disputas atuais em torno das "guerras comerciais". Alguns (principalmente economistas profissionais) dizem que as tarifas prejudicam a economia como um todo. Outros pensam que o país se beneficiará.
Não há nada para verificar e provar os fatos, porque ninguém pode fazer um experimento, sendo todos os demais iguais, na mesma economia. Enquanto o método descrito abaixo permite controlar as condições e obter evidências da presença ou ausência dos benefícios de uma solução.
Conteúdo:
- Descrição geral do conceito
- Descrição da implementação do protótipo (PoC)
- Direção de desenvolvimento
1. Descrição geral do conceito
Apesar de ter sido alcançado um entendimento bastante bom dos princípios básicos do funcionamento da economia, existem grandes dificuldades na aplicação do conhecimento na prática.
Por exemplo, existem os seguintes modelos (teorias) sobre os princípios da formação da taxa de câmbio:
- Modelo Obstfeld-Rogoff
- Modelo Dornbusch
- Modelo Monetário Frenkel-Mousse
E esta não é uma lista completa. Além disso, os mesmos fatores, por exemplo, o crescente déficit em diferentes modelos, dão a direção oposta em termos de impacto na taxa de câmbio. Parece que seria mais fácil do que olhar para a dinâmica do déficit orçamentário e compará-lo com a taxa de câmbio?
Na prática, as dificuldades dessa abordagem estão associadas ao problema da “explosão combinatória”, quando centenas de fatores multidirecionais estão em vigor e, embora a ação de cada um deles individualmente ainda possa ser compreendida de alguma forma, é quase impossível calcular sua resultante. A situação é complicada pelo fato de que na vida real é impossível realizar um experimento controlado, fixando todos os parâmetros, exceto um.
Você pode pensar que a taxa de câmbio é uma coisa muito complicada, mas diz respeito aos conceitos mais básicos e importantes, como inflação. Este é o principal parâmetro, que quase todos os bancos centrais do mundo são chamados a regular. Parece que milhares de cientistas e praticantes teóricos tiveram que entender o mecanismo desse fenômeno há muito tempo. No entanto, Daniel Tanullo, membro do conselho de administração do Federal Reserve System (Banco Central dos EUA), escreve em 2017: "
Ainda não temos uma teoria da dinâmica inflacionária que seja eficaz em tempo real ".
Enquanto isso, a inflação é um dos principais motivos para as decisões do Fed de aumentar ou diminuir a taxa básica de juros, o que tem um efeito poderoso nos muitos mercados de ações e títulos de trilhões de dólares em todo o mundo.
Assim, a compreensão dos princípios do funcionamento macroeconômico torna possível aplicar os modelos corretos e, como resultado, prever efetivamente o desenvolvimento da situação.
Para alcançar esse entendimento, é necessário implementar um modelo de economia em larga escala, que inclua todos os principais fatores e indústrias existentes na vida real. A principal diferença entre esse modelo e o existente está em abandonar as tentativas de fazer previsões de resultados obviamente "corretos". Em vez disso, neste artigo, usamos a abordagem da luta evolucionária de agentes no nível micro, quando decisões incorretas levam à eliminação de agentes do pool genético e as decisões que levam a um resultado financeiro positivo são salvas e distribuídas com sucesso usando o algoritmo genético.
Em outras palavras, assim como uma economia de mercado real se desenvolve, o método proposto implementa os princípios da concorrência e do desenvolvimento contínuo, rejeita aqueles que tomam decisões ineficazes. E já olhando para o que os agentes chegaram nessa luta, poderemos julgar o que é um estado de equilíbrio sob determinadas condições.
2. Descrição do protótipo disponível
Para testar a operacionalidade do conceito, ou seja, evidência de que agentes, agindo no nível micro, em princípio, são capazes de alcançar estados de equilíbrio com apenas um objetivo - sobreviver, um modelo muito simplificado (comparado à economia real) foi desenvolvido, descrito abaixo.
Este é um mundo habitado por agentes - ou seja, residentes, cada um dos quais representa uma rede neural separada, que analisa a realidade circundante e toma certas decisões. No momento do início do programa, as redes neurais são inicializadas com valores aleatórios e somente aqueles que, por acaso, “descobrem” como obter recursos e multiplicar transmitem seus genes aos seus descendentes, semelhante ao que acontece em nossa maravilhosa realidade objetiva.

Cada um desses residentes recebe uma certa quantia em dinheiro. O agente também é residente de um dos dois países: o condicional "EUA" ou "Zona do Euro". Cada país tem sua própria moeda: "dólar" e "euro". Os agentes têm a capacidade de produzir um dos dois tipos de mercadorias: "queijo" e "vinho".
Em cada país, ~ 50% dos agentes são "meninas" e sabem produzir bem queijo. Eles fazem isso especialmente bem se tiverem vinho. Eles mesmos também sabem produzir vinho, mas isso acaba mal para eles. I.e. cada unidade de mercadorias tem uma medida - qualidade (de 0 a 100%) e se as meninas fazem queijo, mas não têm vinho, a qualidade é de 10%, mas com um vinil tudo é 100%.
A segunda metade dos agentes são meninos e eles
ficam bem
no sofá fazendo vinho. Especialmente se o queijo for comido antes. E eles fazem mal o queijo, em geral, tudo sobre eles é simétrico em relação às meninas.
Os produtos tendem a deteriorar-se com o tempo, ou seja, todos os dias a qualidade dos produtos está caindo. Para toda a vida e para uma propagação bem-sucedida, cada agente deve consumir um produto que não sabe produzir. I.e. se o agente produz bem o queijo, é mais eficaz vender queijo e comprar vinho. Se você projeta o modelo na vida real, podemos dizer que o padeiro produz bons pães e os vende com sucesso, mas, para a felicidade, ele precisa de vodka, arenque e garagem, porque alguns pães não podem fazer.
Além disso, os agentes podem negociar moeda. Por exemplo, um agente da Europa pode vender o queijo produzido (ou mesmo comprado anteriormente) por dólares, depois trocá-los por euros e comprar comida para eles. Todas as negociações são realizadas através da apresentação de pedidos de leilões. O aplicativo indica qual produto o agente deseja vender (ou comprar), o preço, a qualidade e o delta desejados que ele está pronto para seguir em frente. Os agentes tomam todas essas decisões com base em comandos das redes neurais. I.e. informações sobre o mundo ao redor, como:
- taxas de câmbio atuais para o dia atual (ou seja, não o histórico de alterações, mas qual taxa foi definida durante a última sessão realizada);
- o número de mercadorias vendidas em todo o mundo, o preço médio de um produto e a idade média.
E o agente recebe informações sobre sua própria condição:
- quanta moeda ele tem (e a que preço ele comprou)
- quanto custa o produto, a qualidade do produto, seu custo, etc.
- própria saúde
A rede neural processa todas as informações de entrada e envia decisões, como: quanto produzir, qual preço e por qual moeda vender, a que taxa trocar uma moeda por outra etc.
Se o agente age com eficiência, ou seja, é capaz de produzir um produto que não pode produzir e o consome, recebe "vitalidade". A manutenção de qualquer atividade requer essa vitalidade, incluindo a capacidade de se reproduzir requer especialmente muita energia. Se houver dois agentes de sexos diferentes, eles podem tomar uma decisão (remover as crianças das telas) para fazer sexo e dar à luz outro agente.
A cada dia que passa, fica mais difícil viver (é preciso mais vitalidade) e, quando o suprimento acaba, o agente morre e transfere o suprimento acumulado de dinheiro para o herdeiro.
O fato principal deste experimento é que o número de dólares e euros no sistema é estritamente limitado e a proporção do número total de moedas é de 1 a 3. Os próprios agentes não sabem disso. Eles têm apenas uma certa quantia em mãos e não têm idéia de quanto dinheiro está circulando por toda a economia. I.e. não são informados a que taxa o dinheiro deve ser mudado e, de fato, eles mesmos estabelecem todos os preços. A capacidade dos agentes de chegar a um curso de equilíbrio, que sabemos, possuindo toda a informação, é de 3 para 1, é uma prova do conceito da possibilidade de encontrar uma solução eficaz sem um professor.
Em outras palavras, se os agentes encontrarem uma taxa de equilíbrio como resultado da seleção natural em um modelo simplificado (dois países, duas moedas, dois bens), é provável que eles possam fazer o mesmo em um modelo mais próximo do mundo real.
Na imagem abaixo, vemos quanto o euro está andando dentro da zona do euro e quanto o euro está saindo (ou seja, neste caso nos EUA). Sabemos a mesma coisa sobre o dólar.

A dinâmica rápida no início está ligada à peculiaridade da implementação (era mais fácil assim) e não desempenha um papel. Neste momento, os agentes estão apenas aprendendo a andar e a se reproduzir pelo menos de alguma forma. Na figura abaixo, vemos a proporção real da oferta monetária das duas moedas (linha vermelha) e a taxa de câmbio média (com base nos resultados de todas as transações do dia) que os agentes formaram.

Pode-se observar que a taxa média de transações após algumas perambulações atingiu o nível alvo. O nível alvo é a linha vermelha, ou seja, a proporção real do volume de moedas e essas informações não estão disponíveis para os agentes.
No entanto, até agora não temos confiança de que isso não seja um acidente. Altere as condições do experimento, deixe a proporção da quantia em dinheiro ser de aproximadamente 1 a 4,3 e veja o que acontece neste caso:

E, novamente, os agentes atingem um valor de equilíbrio. Agora, olhando os gráficos, pode parecer que tudo isso é óbvio, mas, na realidade, vários anos foram gastos para fazer o processo começar a convergir. Em particular, descobriu-se que o número de agentes desempenha um papel crítico, quando há relativamente poucos deles, o processo acaba sendo muito menos estável e, para resolver o problema, tivemos que escrever um aplicativo distribuído em execução em três PCs ao mesmo tempo.
A principal dificuldade era que simplesmente aumentar o número de agentes não é suficiente, o principal componente do sucesso era a necessidade de cluster. Em outras palavras, acabou sendo eficaz não desenvolver 100 (número condicional) agentes em um espaço comum, mas quando eles são divididos em 10 “cidades” de 10 peças cada. I.e. os pregões permanecem globais e qualquer agente pode negociar com qualquer outro, mas o código genético evolui dentro de seu grupo. Somente sob essa condição, o curso começou a convergir para o equilíbrio.
Aqui estão alguns dos parâmetros mais importantes da versão de trabalho:
- 60 cidades
- 5.000 habitantes na cidade
- 4 blocos de redes neurais (reprodução, produção, comércio de mercadorias, troca de moeda)
- as redes neurais são diretas, de duas camadas, com regularização (há uma suspeita de que o LSTM funcione melhor)
3. A direção do desenvolvimento
Se ainda não está claro por que tudo isso é necessário, tente responder à seguinte pergunta - como a taxa de eur / usd será alterada se:

E agora vamos levar em conta que existe a influência da China, Canadá, Japão, etc. Obviamente, podemos contar isso na forma de regressões VAR (o que é feito apenas sem muito sucesso, veja o comentário de Tarullo); no entanto, em primeiro lugar, isso é uma simplificação sem fim de processos reais e, em segundo lugar, o número de combinações conhecidas é de magnitude menor que as possíveis. Então você pode imaginar a qualidade desse modelo.
Uma alternativa para isso é a simulação de processos reais no nível micro, com apenas mais poder de computação. Se os resultados de muitos lançamentos convergirem para a mesma solução e isso for confirmado por observações na prática, será uma ferramenta inefavelmente poderosa para investidores e reguladores do banco central.
Obviamente, para a moderação de um sistema macroeconômico próximo da realidade, são necessários muito mais módulos. É necessário desenvolver uma arquitetura de aplicativo que possa ser executada em um modo distribuído pelo cluster (simultaneamente em todos os nós) e implementar a seguinte funcionalidade:
- Agentes são indivíduos. Eles podem aprender, isto é, aumentar sua produtividade. Eles podem conseguir um emprego com agentes: empresas, bancos ou o aparato estatal. Eles podem fazer compras, adoecer, se aposentar, fazer depósitos ou tomar empréstimos. Eles podem comprar uma participação em firmas (empresas), ou seja, tornar-se acionistas.
- Agentes - empresas (empresas) que contratam indivíduos e pagam seus salários. O produto fabricado é comercializado. Eles podem fazer depósitos ou tomar empréstimos. Capaz de pagar impostos e evitá-los. As empresas podem produzir bens e serviços, tais como: alimentos, roupas, transporte, habitação, petróleo, bens de capital, entretenimento, medicina privada.
- Agentes - bancos, oferecem depósitos e empréstimos. Empregar funcionários (agentes de pessoas físicas), interagir com o Banco Central.
- O Ministério das Finanças - é gerenciado diretamente (ou seja, não através da modelagem por redes neurais). Define regras tributárias (IVA, imposto de renda pessoal, impostos sociais, imposto de renda corporativo, direitos de exportação / importação etc.). Determinar o nível de gastos nas esferas da saúde, educação, defesa e provisão de pensões. Emite títulos do governo. Todos esses valores são publicados por agências governamentais e introduzidos exogenamente no modelo.
- Banco Central - também parâmetros exógenos, como operações para gerar e esterilizar a oferta de moeda. Gerenciamento de lances principais.
- O aparato estatal é um conjunto de agentes específicos de indivíduos que implementam serviços públicos (saúde, educação, defesa, aplicação da lei).
- O sistema judicial é o grau de caos no modelo. É um conjunto de coeficientes que aumentam ou diminuem os riscos para os negócios. Por exemplo, um coeficiente de 0,1 significa 10% de chance de perder a empresa como resultado de uma aquisição de invasor. Ou avaliação fiscal injusta, etc.
- Locais para transações com moeda, ações, títulos, mercadorias, vagas, serviços financeiros (empréstimos / depósitos).
- Parâmetros exógenos auxiliares: reservas de petróleo, facilidade de fazer negócios, tempo médio de vida, etc.
Esse conjunto de funções precisará ser implementado para várias das maiores economias (EUA, China, Zona do Euro etc.). As proporções no número de agentes, parâmetros-chave, proporções etc. devem ser ajustadas de acordo com os resultados de estudos internacionais (FMI, ONU, etc.).
Dificuldade principal: implementar algoritmos rápidos e confiáveis para transações e operações distribuídas. Se você fizer tudo sequencialmente, nenhum recurso será suficiente para que toda a funcionalidade descrita funcione em um tempo aceitável. É necessário fornecer alta escalabilidade, o que permite conectar poder de computação adicional "on the fly", bem como a adição mais simples possível de funcionalidade durante o progresso do desenvolvimento.
E tudo isso, é claro, requer a tecnologia BigData. O protótipo foi escrito em C #, mas hoje escolheria o SpringBootYarn + HBase facilmente escalável. Na verdade, acho que a principal razão pela qual isso ainda não foi realizado é que exige uma enorme quantidade de recursos, no sentido de hardware + boa experiência em tecnologias baratas como o Hadoop. Bem, a ideia em si também não é trivial. Pelo menos nunca vi nada assim em nenhum lugar. Aproveitando esta oportunidade, peço à mente coletiva que elimine links se alguém estiver familiarizado com o trabalho nessa direção.
Naturalmente, se até agora isso foi mantido com entusiasmo, no seu tempo livre, para garantir que o conceito funcionasse, um desenvolvimento adicional requer investimentos financeiros em tempo integral e grandes. Honestamente, não acredito no investimento multimilionário necessário para passar do PoC para um modelo completo. Quando comecei, pensei que exigiria uma ordem de magnitude menos recursos. No entanto, estou convencido de que algum dia essa idéia certamente encontrará sua personificação. Pelo menos, quando o ferro necessário para esses volumes de cálculos for muito mais barato e ficará disponível não apenas para gigantes financeiros (e lentos), mas também para entusiastas como eu.
Conclusão lírica:
É claro que o dinheiro é ótimo, mas há um prazer especial em ficar sentado nas longas noites de inverno, observando o enxame dessas pequenas criaturas da minha vontade. Há algo de agradável nisso, desde a sensação de ser um criador, embora uma vida tão primitiva, mas ainda assim. , , , . , - , , …