MAC-499 - Trabalho de Formatura Supervisionado
 

Fabio Silva Dias

Orientador: Prof. Ernesto G. Birgin

   
   

 

Programação Quadrática Aplicada à Teoria Moderna de Finanças

 

 

 

 

 

Monografia apresentada ao Departamento de Ciência da Computação do Instituto de Matemática e Estatística da Universidade de São Paulo como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação

 

 

 
 


Objetivo

O meu trabalho de formatura trata de uma atividade inicialmente motivada por um estágio que venho fazendo desde abril de 2000 até os dias de hoje em uma renomada empresa de consultoria para investimentos financeiros (atualmente consultora da Secretaria de Previdência Complementar – Governo Federal), a PPS Portfolio Performance. Após conversa com o meu orientador, em abril de 2001, resolvemos estender tudo o que foi feito no estágio por meio de um projeto de Iniciação Científica no qual a teoria se encontrava com a prática. Este trabalho, que foi submetido em novembro de 2001 ao 9º Siicusp e foi premiado com uma menção honrosa, é bem completo, iniciando com definições básicas de otimização em finanças, mostrando a evolução do pensamento humano na teoria de finanças e culminando na explicação de um algoritmo de Programação Não Linear consagrado com o Prêmio Nobel em 1990, além de mostrar seu vasto campo de aplicações.

Para concluir o trabalho, fizemos uma breve digressão sobre as limitações do modelo estudado e mostramos uma possível extensão, que é atualmente tema de estudos e pesquisas recentes.

 

Estrutura do Trabalho

            O trabalho possui um pouqinho mais do que 5.000 palavras e está dividido na seguinte estrutura de tópicos:

Ø      Definições Básicas

o       O Problema Clássico de Finanças

o       Estendendo o Problema

Ø      Métodos para Resolver o Problema Quadrático

o       Formulação de um Modelo Quadrático

o       O Método de Wolfe

o       A Versão Paramétrica

o       Um estudo de caso.

o       Aplicações do Modelo Quadrático

o       Limitações do Modelo Quadrático

Ø      Assimetria de Portfolios

o       Formulação do Modelo

o       Possíveis Temas para Pesquisas Futuras

Ø      Referências Bibliográficas

Uma versão html do trabalho pode ser encontrada aqui. Também há disponível para download versões PostScript e Adobe PDF. An English version is also avaiable in PS or Adobe PDF, submitted for publication in the Citeseer - The NECI Scientific Literature Digital Library. Também desenvolvemos um programa didático, o M.A.R.R.E.Q.O. (Master Advanced Research in a Routine of Efficient Quadratic Optimization), que funciona em ambiente Windows e no qual é possível submeter um problema quadrático qualquer e obter a solução passo a passo, enxergando todas as mudanças de base do Simplex. Para fazer o download, clique aqui.

 

A Iniciação Científica

             Como já dito anteriormente, a idéia de fazer uma iniciação científica surgiu do que eu faço no meu estágio. Pensamos em estender o que era feito e criar uma implementação de um modelo mais sofisticado. Mais adiante irei fazer uma descrição mais detalhada do meu estágio, no entanto, neste momento irei ater-me somente à Iniciação Científica.

             Sem dúvida o primeiro desafio que enfrentei foi começar o projeto. Tomamos como ponto de partida o modelo que eu estava usando no estágio. Mas professor Ernesto é um tanto exigente e quando eu fui apresentar o que eu fazia, ele não aceitou uma palavra enquanto eu não provasse formalmente que tudo o que era feito estava correto. Na verdade nem eu sabia se tudo o que era feito estava correto ou não. E muito menos sabia provar que tudo estava correto. Apenas li o livro, implementei, o chefe ficou contente e começamos a usar para os clientes. E para demonstrar tudo, tive que ler mais do que o livro, pois ele pulava algumas demonstrações. Isso iniciou minha capacidade de pesquisa. Demorei mais ou menos uns dois meses para terminar a primeira parte.

             Foi um alívio descobrir que tudo realmente estava correto.

             O modelo que eu tinha implementado no estágio realmente tinha muitas limitações, aliás tinha mais limitações do que aplicações, mas foi implementado por ser o mais fácil de se entender e fazer. Eu já estava ciente de tais limitações. E estava ciente de que o professor Júlio Stern havia implementado um modelo bem completo, o mais conhecido no mundo de finanças devido à sua aplicabilidade e resultados e o menos entendido devido à sua complicação. Então, juntamente com o professor Ernesto, o objetivo da iniciação foi lançado: entender este modelo, explica-lo, implementa-lo, usa-lo com dados reais e tirar conclusões.

             Uma frustração encontrada neste trabalho foi a falta de companheiros de grupo para dividir as tarefas. Se poucas pessoas se interessam por programação linear, para programação não linear então devem ter dois ou três alunos por turma que se interessem! O trabalho teve que ser tocado individualmente, ou melhor, em conjunto somente com o orientador. Só houve uma pequena reunião com a Cibele, uma ex-aluna de mestrado do professor Júlio, onde discutimos aplicações de otimização no ramo de finanças, incluindo a dissertação de mestrado dela e o seu atual projeto de tese de doutorado. Esta reunião foi muito importante e produtiva. Dela surgiu a idéia de incluir no trabalho limitações do modelo e temas para pesquisas futuras.

             Como eu já havia dito, o meu orientador é bem exigente. Os relatórios e transparências para as reuniões exigidos por ele tinham que ser bem detalhados e nenhuma das conclusões que eu tirasse era considerada válida enquanto uma prova formal não fosse esboçada. Isto foi um grande desafio, todavia foi muito proveitoso porque me incentivou a pesquisar e eu acabei até entendendo mais do assunto.

             Algumas disciplinas tiveram uma aplicação direta com o projeto, as quais mencionarei depois, mas posso ressaltar que a formação matemática oferecida pelo BCC foi extremamente importante. Apenas as partes mais técnicas do curso, como Sistemas Operacionais e Programação Concorrente, não foram aplicadas no decorrer do projeto. Os conceitos estudados durante a graduação e principalmente a "imposição" por parte de alguns professores de que devemos demonstrar tudo matematicamente teve uma forte aplicação no projeto. Isto não significa que eu goste disso. Até hoje me encontro discutindo com meu ex-professor de Programação Linear, o professor Leonidas, e eu consistentemente falo que não é de tanta importância ter que ser tão correto formalmente. Ele argumenta que só assim o aluno compreende mais. Às vezes, quando olho para alguns problemas a resolver e vejo que me falta alguma base, eu concordo com a opinião do professor. Mas em outras ocasiões, minha opinião continua a mesma - de que não é necessário ter que demonstrar tanto as coisas.

             Pretendo continuar estudando um tema correlato durante o mestrado. Atualmente estou inscrito para o mestrado em Estatística aqui no IME. Com base na experiência durante a iniciação, vejo que para aprimorar minha capacidade de pesquisa, eu tenho que ouvir mais o meu orientador, afinal a experiência dele é bem maior que a minha. Também tenho certeza que se eu quiser me aprofundar neste tipo de atividade, minha opinião sobre as demonstrações vai ter que mudar mais um pouco. No começo da graduação eu achava que demonstrar as coisas era totalmente inútil. Agora, já acho que é útil mas nem tanto. Creio que estou em um dos estados da evolução. Acho que com o tempo e a experiência adquirida no mestrado, minha opinião vai mudar mais um pouco.

 

Cronograma das Atividades Desenvolvidas

 

Ø      Março: definição do orientador e do tema a ser seguido no trabalho.

Ø      Abril e Maio: apresentação de um modelo inicial e demonstração de que ele é correto.

Ø      Junho: apresentação de um modelo quadrático para solução de uma instância do problema em particular.

Ø      Julho: apresentação de um modelo quadrático paramétrico para obtenção da solução geral.

Ø      Agosto: discussão de limitações do modelo, extensões para pesquisas futuras e início da elaboração da parte técnica da monografia.

Ø      Setembro: implementação do algoritmo e criação do M.A.R.R.E.Q.O.

Ø      Outubro: elaboração do estudo de caso e término da parte técnica da monografia.

Ø      Novembro: apresentação do trabalho à comunidade científica.

 

O IME na Elaboração do Trabalho

            Ao contrário do que a maioria absoluta dos alunos diz, foi a sólida formação matemática oferecida pelo BCC que me ajudou a desenvolver tanto as atividades do meu estágio quanto as atividades da Iniciação Científica com a maior segurança possível. Disciplinas como Banco de Dados, Engenharia de Software, Sistemas Operacionais e Programação Concorrente tiveram uma importância quase nula nas minhas atividades – o que não significa que elas são inúteis, mas sim que elas têm pouca relação com a área de Otimização Discreta, Contínua ou Combinatória, na qual pretendo me especializar em um Mestrado ou Doutorado e, principalmente, que EU NÃO GOSTO NEM UM POUCO DELAS.

            Excetuando-se as disciplinas fora de área, que não fazem parte do BCC e foram cursadas por minha opção, as disciplinas que cursei e tiveram maior importância no meu trabalho foram as seguintes:

Ø      Programação Linear

A tão odiada dos alunos do BCC foi a que mais me salvou. Na área financeira a maioria dos problemas são não lineares, em particular quadráticos, mas os métodos de solução são baseados nas condições de Kuhn-Tucker, que, para funções quadráticas e convexas, são vértices de poliedros lineares. Assim, saber bem o Simplex é fundamental. Para se ter uma idéia, o algoritmo que ganhou Premio Nobel em 1990 é simplesmente um Simplex modificado, mas que consegue resolver quase tudo no campo de finanças. Todavia, provar que o Simplex funciona não é nem um pouco importante, e foi isto o que mais foi ensinado quando fiz Prog Lin.

Ø      Métodos Numéricos da Álgebra Linear

Resolver bem sistemas lineares para os diversos casos, saber lidar com matrizes positivas definidas e fazer fatorações QR e LU é fundamental. Méritos para o Prof. Ernesto, que foi o meu professor desta disciplina.

Ø      Métodos de Otimização em Finanças

A disciplina do Prof. Júlio foi muito importante, principalmente a parte introdutória e o material fornecido (apostilas, dissertações e teses de ex-alunos).

Ø      Introdução à Probabilidade e Estatística I e II

Todas as definições estudadas no curso básico de estatística são ampla e diretamente utilizadas nos estudos de otimização financeira.

 

O Estágio

             Se para a Iniciação Científica eu acho que demonstrar o que se aprende não é tão útil assim, para trabalhar com isso tenho quase a certeza de que demonstrar a teoria não é necessário. Pelo menos no meu estágio, tanto eu quanto meus superiores não se preocuparam muito em saber explicar a teoria, limitamo-nos a usa-la.

             Trabalho desde abril de 2000 em uma consultoria financeira, a PPS. A principal especialidade desta empresa é fazer análises de fundos de investimentos. Para isto, são usadas não só técnicas aprendidas em um curso de economia, mas também técnicas aprendidas aqui no BCC, como por exemplo técnicas de classificação de formas são aplicadas para classificação de fundos. Além disso damos consultoria de investimentos em renda variável, gerando conjuntos de investimentos ótimos - tema do meu trabalho de Iniciação Científica. Esta última função é recente, e há um projeto para que a PPS vá além de dar consultoria e passe a administrar fundos de investimento. Além de consultoria, a PPS possui um software financeiro que é vendido para outros investidores em fundos e também é utilizado pelos consultores da PPS durante sua análises. A PPS também executa outros serviços financeiros, apenas citei sucintamente os principais.

            Atualmente, os principais clientes da PPS são:

Ø      Secretaria de Previdência Complementar – Governo Federal;

Ø      Banco Europeu para a América Latina;

Ø      Wolksvagen Previdência Privada;

Ø      Fundação Celos;

Ø      Fundação Previbayer.

             Quando eu fui contratado pela PPS, eu fui contratado para exercer a função de programador. O software da empresa tinha um problema crítico, que era a demasiada demora na rotina de cálculos. Meu primeiro desafio era descobir e solucionar esta demora, uma tarefa que já outros três ou quatro programadores que vieram antes de mim tentaram executar mas fracassaram. Graças a Deus e ao sólido conhecimento de programação obtido nas disciplinas básicas, consegui achar o defeito (era uma falha de programação básica no acesso ao banco de dados de cotas) e isto me abriu uma grande porta na empresa. Além disso, facilitou-me a vida o fato de eu já estar familiarizado com o ramo de investimentos e gostar de otimização. Foi um prato cheio para mim e para a PPS.

             Não tenho reclamações da empresa sobre falta de tempo ou recursos humanos. Os prazos são determinados na maioria das vezes por mim. Melhor dizendo, os chefes solicitam uma determinada implementação e eu faço uma pequena pesquisa do que se deve ser feito e quanto tempo eu acho que demora para executar tudo, apresentando os resultados aos chefes. Na maioria das vezes eles concordam com os prazos estipulados e tudo corre perfeitamente. É claro, já ocorreram situações onde pedi um prazo muito menor do que o necessário ou a minha estimativa de prazo não condizia com a necessidade deles. Aí não tem jeito, tive que trabalhar durante sábado, domingo, madrugada...

             Trabalhar na PPS foi muito bom para a minha carreira acadêmica e profissional porque na PPS eles não querem apenas um implementador. É necessário pesquisar bastante antes de implementar. As implementações em sua maioria são de algoritmos matemáticos, o que demanda muita capacidade de pesquisa. Até mesmo meu desempenho na faculdade melhorou sobremaneira pelo fato de estar trabalhando na PPS. Considero lá apenas uma extensão das atividades de pesquisa feitas na universidade.

             Pretendo continuar atuando na área em que trabalho, provavelmente na mesma empresa.

 

O IME na Execução do Estágio

             As mesmas disciplinas que usei para fazer o trabalho de Iniciação Científica foram usadas durante a execução do estágio. Todavia, o estágio engloba mais coisas do que o projeto feito com o professor Ernesto.

             Recentemente resolvemos implementar coisas novas para a consultoria, e dentre elas resolvemos implementar algum tipo de classificação não supervisionada de fundos de investimento, da mesma maneira que se faz para formas. Para implementar tais algoritmos, outras duas disciplinas foram muito utilizadas e eu não gostaria de deixá-las fora do meu relatório:

Ø      Algoritmos em Grafos

Eu achei muito interessante ter conseguido aplicar grafos em finanças. Mais precisamente, precisei implementar um algoritmo de detecção de componentes em grafos não dirigidos. Durante a implementação, montamos um grafo de distâncias, onde cada nó do grafo é um fundo de investimento e cada aresta contém uma distância (medida de diversas formas por meio de características peculiares dos fundos de investimento) entre dois fundos. Dois fundos só estão ligados por tal aresta se ela a distância a ela associada for menor do que um determinado limiar. O que queremos são os componentes deste grafo, que são as classes de fundos de investimento.

Durante o curso de grafos aqui no BCC não aprendi algoritmos que lidassem com grafos que tivessem um número alto de vértices (o número de fundos de investimento do mercado: aproximadamente 10000) e muito mais alto de arestas. Todavia parabenizo o professor Paulo Feofiloff por ter instigado nos alunos um senso de pesquisa, que foi suficiente para me fazer pesquisar e descobrir algoritmos melhores para rotular componentes de grafos. Além disso, parabenizo o mesmo professor por ter um site tão bem documentado. Também fiz MAC-122 com ele e até os dias de hoje quando tenho alguma dúvida sobre partes básicas da matéria vou consultar o seu site. Ele é um excelente professor, é uma pena que quando eu tenha feito o curso não tenha aproveitado ao máximo.

Ø      Análise e Reconhecimento de Formas

Os algoritmos apresentados pelo professor Roberto Marcondes foram muito utilizados quando fui implementar um algoritmo de classificação não supervisionada de fundos de investimento. Depois eu pude estender o que era feito e implementar uma classificação supervisionada com base no conjunto de treinamento obtido na análise de clusters inicial. Outros conceitos que ele passou durante o semestre também foram utilizados.

 

Conclusões

            Pude aprender muito durante o estágio, que já havia começado desde antes do início do trabalho de formatura. A experiência com o estágio em si já havia sido muito boa, devido ao incentivo que é dado pela empresa à pesquisa. Imagino que isto se deve principalmente ao fato de ambos os sócios serem professores, um deles da FEA.

            Todavia o trabalho de formatura me propiciou uma experiência incomensurável, instigando-me mais a pesquisar e me amadurecendo a capacidade de fazer demonstrações matemáticas. Fiquei muito mais satisfeito por ter feito um trabalho numa área que eu gosto e podendo aplicar de forma tão contundente a teoria à prática. Sem dúvida, a formação matemática que o BCC dá a seus alunos é muito importante, pois não só lhes fortalece o pensamento lógico e matemático como os prepara para qualquer dificuldade inerente à profissão que possa aparecer.

 

Agradecimentos

            Não poderia deixar de agradecer quem me ajudou durante todo este percurso. Sem sombra de dúvidas, a primeira a que devo agradecimentos é a minha esposa, a Keila, que me ajudou durante todo o BCC das mais diversas maneiras, até mesmo comparecendo a aulas que não pude vir e tomando nota de todas, aprendendo a lidar com estes editores de texto matemático para digitar equações nos mais diversos trabalhos (por exemplo, nesta monografia), escrevendo as transparências que utilizei durante apresentações do projeto (não foram poucas) e também fazendo a minha comidinha, lavando e passando a roupinha e etc, além de um grande apoio afetivo. Com certeza se eu não tivesse tanta ajuda dela seria impossível estudar, trabalhar tanto em uma empresa externa como aqui na USP e ainda quando surge serviço como free-lancer e além disso me dedicar a um projeto complexo de iniciação científica.

            Um outro personagem de papel importante é o meu chefe, o Everaldo. Além dos vários incentivos durante todo o tempo, despertou o meu interesse e capacidade de pesquisa e estudos.

            Na seqüência dos agradecimentos ficam os meus professores Ernesto e Carlinhos, um por ensinar bem e orientar bem durante todo o trabalho e o outro, com o qual não tive o prazer de ter aulas, por ter me orientado bastante em questões acadêmicas, inclusive na matrícula desta disciplina.

            Por fim, agradeço a Deus por ter me dado vida e saúde, além de ter colocado no meu caminho as quatro pessoas acima.