MAC-499

TRABALHO

DE

FORMATURA

SUPERVISIONADO

 
 


MARCELO EIJI MORIOKA    NUSP 2868923
mmorioka@linux.ime.usp.br

SUPERVISOR: PROF. KUNIO OKUDA

kunio@ime.usp.br

RESPONSÁVEL: PROF. CARLOS EDUARDO FERREIRA

cef@ime.usp.br

 
 
 

1. Empresa - Natureza da Organização e da Atividade

2. Equipe - Sistema de Trabalho

3. Projetos - Prazos e Andamento

4. Bibliografia Utilizada

5. Participação em Treinamentos

6. Desafios e Frustrações

7. Ferramentas e Técnicas

8. Disciplinas Mais Relevantes

9. Interação com Membros da Equipe

10. IME x Estágio

11. Forma de Acompanhamento

12. Aprimoramento dos conhecimentos
 
 
 

1. Empresa

    A Prandini, Rabbat & Associates, PR&A, é uma empresa de Consultoria Financeira especializada em soluções para risk-management, precificação e hedging de derivativos, asset allocation e risco de crédito.

    Desenvolve e implementa soluções utilizando sempre o estado-da-arte nas áreas de finanças, otimização, estatística e computação de modo a fazer face às demandas mais atuais do mercado.

    A PR&A e a DMZ Consultores são duas empresas do mesmo grupo, separadas apenas por motivos contábeis. As duas empresas se destacam no mercado financeiro brasileiro por modelar matematicamente os produtos e serviços financeiros dos bancos, fundos de investimento e fundações de previdência privada. A modelagem, geralmente, envolve processos estocásticos e a construção de software para calculá-los.

    Gradativamente, as duas empresas estão também atuando em projetos mais qualitativos ao invés de quantitativos, tais como: construção de sistemas de análise gerencial, auxílio a tomada de decisão, estruturação administrativa de controle de investimento e análise de risco operacional.

    É uma empresa de pequeno porte que vem crescendo a cada dia. Conta com atualmente cerca de 50 funcionários. A empresa é subdividida em seis áreas principais e minha área de atuação é a de Consultoria Financeira.  A grande maioria dos clientes são bancos. No caso da Consultoria Financeira, bancos públicos.

    O objetivo do estágio é preparar para poder entender, analisar, modelar e implementar uma solução computacional que viabilize os produtos e serviços financeiros, ou seja, tornar-se um consultor financeiro e desenvolvedor.
 
 

2. Equipe

    A equipe da área de consultoria financeira é formada por três consultores e três desenvolvedores. Basicamente, os consultores conversam com os clientes e discutem com eles para definir quais funcionalidades terão no sistema. Feito isso, os consultores passam o problema para os desenvolvedores que decidem como o problema será modelado e implementado. Cada desenvolvedor tem autonomia total sobre como fará o programa, mas procuramos manter uma uniformidade e um padrão geral. As implementações dependem muito de quais e como os dados serão fornecidos pelo cliente. Procuramos fazer e usar bibliotecas comuns a todos os programas, pois essas facilitam e muito, já que contém funções básicas que são usadas com muita freqüência.

    Inicialmente, tive a função de revisar, documentar e fazer uma análise de erros nas bibliotecas de manipulação de datas e matriz usadas por todos na empresa. Foi muito válido, pois pude aprender o que era, como criar e usar dll's. Em seguida, passei a fazer parte da equipe de consultoria financeira e comecei a desenvolver programas do zero. Muitas das minhas dificuldades foram resolvidas graças à experiência dos que já trabalhavam e, conseqüentemente, já estavam habituados aos problemas mais comuns.

    No começo, tive muita dificuldade em entender exatamente o que precisava ser feito, pois eram problemas técnicos que exigiam certo conhecimento do mercado financeiro. Dessa forma, eu apenas fazia o que me era pedido, sem entender ao certo o que e para que estava fazendo. Com o passar do tempo, fui me familiarizando e, principalmente, entendendo o linguajar financeiro. Isso foi um passo importantíssimo, pois compreendendo o problema, pude otimizar, implementar e modelar os programas de forma muito mais eficiente.

    A especificação do problema nem sempre era completa e bem definida, o que me obrigava a implementar da forma que me parecia mais certa. Porém, nem sempre a implementação que eu escolhia estava correta. Às vezes, por falta de especificação em determinados pontos, resolvia os problemas com cálculos errôneos, o que acarretava em mudanças no projeto. Muitas vezes, também, a especificação era mudada a pedido do cliente, que exigia outra metodologia ou novos dados para análise.

    A atribuição de responsabilidades é feita em conjunto com todos, onde são ponderadas as tarefas e habilidades de cada desenvolvedor para decidirmos quem terá a responsabilidade de desenvolver o novo problema.

    Atualmente, em algumas ocasiões, já converso diretamente com o cliente para o acerto de alguns detalhes. Por vezes, vou ao cliente para explicar algo, dar suporte e resolver dúvidas, já que em alguns pontos, sei mais do sistema que os consultores e posso dar uma explicação mais detalhada ao cliente.
 

 

3. Projetos

    Listarei a seguir os principais projetos de que fiz parte:

    - Consolidating Bank

    Um grande sistema de gerenciamento de risco que consolida as posições financeiras ativas e passivas tomadas pelo banco no mercado. Identifica e quantifica o risco de mercado inerente às posições acima citadas. Para se atingir esse objetivo, é necessário que se saiba o valor atual da carteira (o seu Mark-to-Market) e a maneira pela qual seu valor se altera com a oscilação dos preços e taxas dos títulos negociados no mercado.

    Para se determinar o valor da carteira é necessário conhecer o fluxo de caixa para os títulos de renda fixa em suas modalidades pré e pós fixada, conhecer o valor a mercado das ações, ouro, dólar, etc.

    O Consolidating Bank é basicamente composto por 11 programas básicos. Um programa Mercado, que podemos inserir os dados de mercado, contruir curvas e verificar taxas dos vários indexadores existentes. Há um programa para cada carteira do banco (Ativas, Crot, Habitação, Judicial, Passivas, Poupança, Rural e Tesouraria) cada qual com sua metodologia.  Os valores gerados são os mesmos para todas as carteiras. Esses valores são usados por outros dois programas, o Consolidador e o VaR.

    Antigamente, esses valores eram gerados em várias planilhas gigantescas ou a mão, o que aumentava a chance de erros e era muito lento, além de dificultar a alimentação dos dados.

    Como é um projeto grande e composto de várias carteiras, cada qual com características diferentes uma das outras, ele foi subdividido em programas menores, cada um representando uma carteira. À medida que os consultores e o cliente definiam a metodologia de uma carteira, ela era passada a um dos desenvolvedores que se encarregava da implementação. Após a implementação feita, os cálculos e os valores gerados são validados pelos consultores e cliente para se ter certeza de que o programa está realizando os cálculos da forma correta.

    Infelizmente, a definição do prazo inicial já foi muito menor do que o necessário. Devido à especificação fraca ou errada, esse prazo inicial se estendeu por muito mais tempo. A demora na definição da metodologia de algumas carteiras também contribuiu no alongamento do projeto. Como, por muitas vezes, a demora era uma conseqüência de uma alteração do cliente, este foi muito paciente em termos de prazo.

    Outro fator importante que contribuiu para a demora na conclusão do projeto foi o fato dos desenvolvedores não terem ainda uma familiaridade com o mercado financeiro. Certamente teríamos feito o projeto muito mais rapidamente hoje, por sabermos exatamente do que se trata o sistema.

    Atualmente, o sistema está em fase final e todos os módulos estão instalados no cliente para que este, em conjunto dos consultores, os validem. Como faltam apenas alguns detalhes, em várias ocasiões o cliente fala diretamente comigo para se solucionar o problema. Também fiz algumas visitas ao cliente para dar suporte e tirar dúvidas.
 

    - SPC

    O projeto SPC é um sistema feito para a Secretaria da Previdência Complementar (SPC) que tinha como objetivo principal analisar as normas que as entidades fechadas de previdência privada terão que cumprir a partir da resolução 2720 emitida pelo Conselho Monetário Nacional (CMN). Cada previdência tem que obedecer às normas para aplicar seu patrimônio.

    É um projeto interessante, que exigiria um banco de dados muito grande para guardar os dados das mais de 400 fundações existentes. Teríamos que analisar cada detalhe da resolução para mostrar às fundações e principalmente à SPC, quais fundações estavam irregulares e em que ponto não estavam obedecendo a resolução.

    Ele armazena no banco de dados as operações financeiras das entidades e verifica se subconjuntos específicos de operações satisfazem as condições de contorno determinadas na resolução 2720.

    Um fator crucial para esse projeto foi a demora na aprovação da resolução 2720 pelo governo. Criou-se um impasse entre a SPC e o Banco Central, que fez com que a votação para a aprovação fosse adiada várias vezes. Apesar de não estar aprovado, começamos a desenvolver para não atrasar o projeto. Ficamos muito tempo travados por não termos uma definição da resolução. Fomos pegos de surpresa quando a resolução foi revogada e muito do que fizemos foi em vão. O projeto está travado agora, esperando uma definição do governo sobre uma nova resolução.
 
 

4. Bibliografia Utilizada

    Os livros que mais consultei foram os que seguem abaixo.

    - Dominando Delphi - Marco Cantú

    - Delphi in 21 days - Reisdorph

    - Using SQL Server - Wynkoop

    - Turbo C++ Completo e Total - Pappas, Murray

    - C - Kernighan & Ritchie
 
 

5. Participação em Treinamentos

    Tive a oportunidade de fazer o curso abaixo:

    - Enterprise DBA -Administração e Arquitetura do Oracle - A8I BP

    Foi uma experiência muito proveitosa, já que eu desconhecia o banco de dados Oracle, que é o mais usado em banco de dados grandes. Esse curso é muito voltado para o Oracle na parte administrativa, próprio para um DBA. Mas no meu caso, a intenção era dar uma base e uma visão geral desse banco de dados e esse curso foi importante para isso. O maior problema foi não poder aplicar ainda o que aprendi no curso, pois eu desenvolveria em Oracle no projeto da SPC, que foi, por hora, cancelado.

    Pretendo fazer outros cursos, tanto na área computacional quanto na área financeira e vejo uma grande possibilidade para isso, já que seria interessante tanto pra mim quanto para empresa.
 
 

6. Desafios e Frustrações

    Certamente, um dos maiores desafios no estágio foi entender exatamente o que era pedido. Todos os problemas exigiam um certo conhecimento do mercado financeiro do qual eu desconhecia. Os consultores explicavam o que deveria ser feito, mas isso não era o suficiente para que eu pudesse entender completamente o problema. Como eles estavam totalmente habituados ao mercado financeiro, utilizavam a linguagem financeira e tornavam os problemas ainda mais complicados do que já eram, ao menos para mim. Era uma avalanche de informações novas que eu precisava urgentemente absorver.

    A falta de um curso ou uma aula sobre o mercado financeiro também contribuíram para que esse fosse meu maior desafio durante o estágio. Atualmente, já consigo entender muito do que me é dito, mas isso foi aprendido durante o convívio e depois de algum tempo. Tive que contar muito com a paciência dos consultores em explicar o problema mais de uma vez e em uma linguagem não muito técnica e mais matemática.

    A tecnologia utilizada também foi desafiante, pois tive que lidar com ferramentas que nunca havia desenvolvido antes. Isso já foi contornado mais facilmente, pois no IME aprendemos a pesquisar e desenvolver em qualquer linguagem. A experiência dos desenvolvedores que já conheciam a tecnologia foi um fator muito importante para superar essa barreira. Os livros e os help's também ajudaram muito.

    Outro desafio foi o trabalho em equipe. É complicado lidar com diferentes opiniões e pressões sobre o andamento do projeto. Por sorte, lidei com pessoas excelentes e a equipe toda estava muito unida para a conclusão do projeto, um ajudando o outro. Isso fez com que o trabalho em equipe fosse mais uma satisfação que um desafio.

    Um outro desafio grande foi ter que visitar o cliente e tentar resolver as dúvidas pendentes. Lidar com o cliente é extremamente delicado e complicado. É preciso ter paciência e explicar tudo detalhadamente. Vários erros do sistema eram devido ao uso incorreto do sistema por parte do cliente.

    Uma grande frustração do estágio foi não ter uma especificação do projeto, o que acarretava em projetos remendados e erros na determinação do prazo. Infelizmente, nunca pude começar um projeto desde o início, o que me impossibilitava de participar da especificação. Sempre entrei no projeto quando este já estava no meio.
 
 

7. Ferramentas e Técnicas

    O Consolidating Bank foi desenvolvido basicamente utilizando Delphi para a interface e os cálculos encapsulados em um dll feita em C. O Delphi foi escolhido por ser muito fácil de se fazer telas e linkar com o banco de dados. Os cálculos foram desenvolvidos em linguagem C por essa ser mais rápida para cálculos matemáticos.

    O banco de dados escolhido foi o SQL Server. Inicialmente, utilizamos o Interbase. Porém, este se mostrou muito lento e incapaz de suportar o banco de dados do cliente. Portanto, optou-se por adotar o SQL Server, pois é eficaz, não muito caro e o cliente já possuía a licença.

    Outra ferramenta adotada foi o Formula One, que nada mais é que um software que atua como um componente do Delphi e que funciona como uma planilha que pode até ser salva no formato .xls. Isso é muito útil no mercado financeiro, onde tudo está concentrado em planilhas.

    Utilizamos também o Tee Chart, que é uma ferramenta muito interessante e de fácil utilização que nos permite fazer gráficos de alta complexidade. Isso nos permite construir gráficos que ajudam e muito na análise dos resultados.

    Escolhemos por fazer a interface em Delphi e os cálculos em dll em C, pois os cálculos são bem parecidos nas diversas carteiras do Consolidating Bank e podíamos aproveitar algumas funções, sendo que a interface, que é definida pela entrada de dados de cada carteira, é bem diferente um do outro.

    Para cada carteira do sistema, foi utilizada uma técnica diferente. Alguns tiveram os dados lidos do arquivo e em seguida processados. Outros tiveram os dados previamente armazenados no banco de dados e puxados do banco de dados somente na hora de se efetuar os cálculos.

    O projeto da SPC, por opção do cliente, deveria ser feito totalmente em Delphi, sem a utilização de nada mais. Isso dificultou um pouco pois tive que converter algumas funções das dll's em C para Delphi. O banco de dados que deveria ser utilizado é o Oracle. Depois de pronto o sistema, a idéia era de que eu fosse na Secretaria da Previdência Complementar instalar e linkar o sistema com o Oracle. Como não tinha familiaridade nenhuma com esse banco de dados, fiz um curso de Oracle que me deu uma visão geral da ferramenta. Foi um curso muito importante e interessante, mas, infelizmente, ainda não pude colocar em prática os conhecimentos adquiridos no curso.
 

 

8. Disciplinas mais Relevantes

    Muitas disciplinas que cursei no IME foram úteis para o estágio, mas dentre elas, creio que as principais foram as matérias básicas, pois elas serviram para me dar um base boa para resolver os problemas, como por exemplo, Princípios de Algoritmos e Estrutura de Dados, onde aprendemos alguns algoritmos básicos e estruturas que são sempre utilizadas. Foram também de fundamental importância disciplinas como Engenharia de Software, que nos ensinou como projetar e modelar um projeto da forma correta. Infelizmente, é uma matéria com a parte teórica muito interessante, mas que, na prática, é muito difícil de se fazer. Acho que talvez fosse necessário mais matérias que visam essa parte de projeto.

    Outra matéria que gostei e aproveitei bastante foi Análise de Algoritmos, que foi uma das disciplinas mais interessantes e fascinantes que cursei, pois pudemos aprender, entender e analisar algoritmos fundamentais muito úteis no dia-a-dia. Sistema de Banco de Dados foi outra disciplina muito interessante, mas que, na prática, se resume a comandos SQL, já que a parte de formas normais é bastante difícil e raro de se aplicar. Outra disciplina que achei muito válida foi Geometria Computacional, pois pudemos aprender algoritmos novos que não se aplicam somente na área de Geometria Computacional. É muito interessante ver e compreender como podemos melhorar de forma significativa um algoritmo de forma simples. O curso de Métodos Formais também foi muito proveitoso, pois nos deu uma boa noção de lógica.
 
 

9. Interação com membros da equipe

    A forma de interação com os membros da equipe de desenvolvedores da área de Consultoria se dava em conversas, já que sentamos um do lado do outro e, dessa forma, podemos trocar informações relevantes a qualquer momento. Como temos códigos compartilhados por todos, utilizamos o programa Source Safe, que nada mais é que um software que gerencia arquivos. Com ele podemos pegar a versão mais atual de um certo módulo, e além disso, podemos pegar o módulo somente para leitura ou para editar. No caso de retirarmos o código para editar (check-out), o Source Safe mostra que eu estou alterando para os outros usuários e eles não podem pegar o arquivo para editar ao mesmo tempo. Ele deve esperar que eu grave as minhas alterações no Souce Safe (check-in) para que ele possa dar um check-out.

    A interação com os consultores é feita através de reuniões onde eles nos dizem o que está acontecendo, quais os problemas que estão ocorrendo, o que, quando e como deve ser feito. Como todos estudaram no IME, eles sabem o quão rigoroso é o IME e me davam tempo para fazer EP's e estudar para provas, dando um horário muito flexível. Isso foi bastante importante, pois caso contrário, creio que seria impossível conciliar o estágio e a faculdade.
 
 

10. IME x Estágio

    A grande diferença entre o IME e o estágio se chama responsabilidade. Nos trabalhos feitos no IME, não havia nada programado. Apenas nos reuníamos e começávamos a fazer os trabalhos sem nos preocuparmos em dividir e estruturar tudo de uma forma correta. No IME, as pessoas sempre davam um jeitinho de jogar a responsabilidade para outros e caso esse outro não fizesse, sempre havia os outros grupos que faziam, dos quais podíamos dar uma olhada para se ter uma idéia de como fazer. Caso ninguém conseguisse resolver um problema, bastava não fazê-lo, pois o máximo que aconteceria era você tirar uma nota mais baixa no EP. Havia também aqueles que sempre faltavam as reuniões e não faziam muita coisa.

    No estágio, não há como fugir da responsabilidade. Se algo foi designado pra você, é você quem tem que fazer e todos esperam isso de você. Não dá pra tirar o corpo fora. Tem que chamar a responsabilidade e mostrar que é capaz. É lógico que as outras pessoas da equipe sempre estão dispostas a ajudar, porém, você tem que correr atrás, caso ninguém saiba. Se há uma reunião marcada, você só falta com um ótimo motivo. E tem que mostrar serviço, pois caso contrário, basta eles procurarem outro que o faça. O que está em jogo não é mais uma nota baixa ou alta, mas sim seu estágio e sua carreira.

 
 

11. Forma de acompanhamento

    O acompanhamento do administrador do projeto é bem simples e direto. Ele me passa exatamente o que quer que seja feito e me pergunta quando eu acho que vou terminar. Assim que estiver completo ou que chegar no prazo, eu digo a ele como anda, se já terminei ou se houve algum empecilho.

 
 

12. Aprimoramento dos conhecimentos

    Pretendo continuar nessa mesma empresa e há interesse por parte da empresa de me efetivar. Achei bem interessante essa mescla de computação e finanças, e ainda tenho muito o que aprender lá. Para aprimorar meus conhecimentos financeiros, creio que o contato com o mercado será de extrema valia, além, é claro, de alguns cursos. Creio que seja mais uma questão de tempo para que eu já consiga entender bem do mercado financeiro. Um exemplo claro disso é que todos os consultores da área de Consultoria Financeira fizeram IME. Alguns matemática, outros estatística e outros computação. Nenhum deles fez economia e todos aprenderam com o convívio.

    Para o aprimoramento da parte computacional, estamos pesquisando alguns cursos de programação orientada a objetos, banco de dados e engenharia de software, que são os que mais usamos e mais importantes para nossa área.