análise de projetos de investimento -...
TRANSCRIPT
MBA - Gestão Financeira, Controladoria e Auditoria
Análise de Projetos de Investimento
Autores:
Luiz Jurandir Simões de Araújo
Denise Lima Lopes
Realização Fundação Getulio Vargas FGV Management
ii
Todos os direitos em relação ao design deste material didático são reservados à Fundação Getulio Vargas. Todos os direitos quanto ao conteúdo deste material didático são reservados ao(s) autor(es).
Araújo, Luiz Jurandir Simões de Análise de projetos de investimento / Luiz Jurandir
Simões de Araújo - 1ª ed. Rio de Janeiro; FGV Management – Cursos de educação continuada, 2009.
52 p. ISBN -
1. Projetos. 2. Finanças. I. Lopes, Denise Lima II. Título
C180603 Diretor da EBAPE/FGV Prof. Bianor Scelza Cavalcanti Diretor da EPGE/FGV Prof. Clovis de Faro Diretor Executivo do FGV Management Prof. Ricardo Spinelli de Carvalho Coordenador FGV Online Prof. Carlos Longo Coordenadora Núcleo FGV - Brasília Profª. Maria do Socorro V. de Carvalho Coordenador ISAE Amazônia Profª. Rosa Oliveira de Pontes Coordenador ISAE Paraná Prof. Norman de Paula Arruda Filho Coordenador da Central de Qualidade Prof. Peter Elsler Coordenadores de Área
Prof. Carlos Longo Prof. Ernani Hickmann Prof. José Carlos Sardinha Prof. Marilson Gonçalves Prof. Pedro Carvalho de Mello Prof. Ronaldo Andrade Profa. Sylvia Constant Vergara.
A sua opinião é muito importante para nós Fale Conosco!
Central de Qualidade – FGV Management [email protected]
iii
Sumário 1. PROGRAMA DA DISCIPLINA 1
1.1 Ementa 1 1.2 Carga Horária Total 1 1.3 Objetivos 1 1.4 Conteúdo Programático 2 1.5 Metodologia 2 1.6 Critérios de Avaliação 2 1.7 Bibliografia Recomendada 3 Currículo Resumido dos Professores 4
2. MEDIDAS DE INVESTIMENTO 5
3. RISCO E ESTATÍSTICA 27
4. INTERVALO DE CONFIANÇA 32
5 DERIVATIVOS 34
6. FERRAMENTAS DE VBA 51
6.1 Elementos Fundamentais das Linguagens de Programação 51 6.2 Requisitos para o Aprendizado 52 6.3 Variáveis e Constantes 53 6.4 Tipos de Dados e Declaração de Variáveis 55 6.5 Atribuição de Valores 57 6.6 Ainda sobre os Tipos de Dados 58 6.7 Expressões Aritméticas 60 6.8 Uso do If 62 6.9 Ciclos 64 6.10 Uso do While 65 6.11 Coleções e Objetos 68 6.12 Leitura e Exibição de Dados 73
1 Análise de projetos de investimento
1. Programa da Disciplina
1.1 Ementa
Apresentar as principais medidas de anális e de inves timento com e sem risco. Alg uns
conceitos de economia, estatística, finanças e risco serão explicitados para integrar as
habilidades e competências necessárias à análise inte grada de um projeto de
investimento, bem como ferramentas de VBA.
1.2 Carga Horária Total 24 horas/aula
1.3 Objetivos Desenvolver a habilidade de utilizar as principais medidas de análise de
investimento (payback, payback corridigo, VPL, TIR, TIR Modificada, IL e outras);
Integrar conceitos de outras áreas (economia, estatística, finanças e risco) na
projeção de fluxos;
Prospectar os aspectos relevantes de um projeto que exigirão tratamento
pormenorizado na projeção dos fluxos.
2 Análise de projetos de investimento
1.4 Conteúdo Programático Medidas de investimento
. Payback simples
. Payback corrigido
. Taxa Contábil
. VPL
. TIR
. TIRM
. Índice de lucratividade
. Valor anual equivalente Risco e Estatística . Distribuição
. Distribuição Normal
. Intervalo de Confiança Derivativos . SWAP
. Futuro
. Opções
. Hedge
. Transformando fluxos
1.5 Metodologia 25% do curso será expositivo conceitual com aulas teóricas. 50% do curso será
laboratorial com exercícios realistas a serem implementados. 25% do curso terá estudos
de casos específicos que sejam relevantes aos alunos.
1.6 Critérios de Avaliação O grau total que pode s er atribuído ao aluno obedecerá à avaliação in dividual, sob a
forma de prova, a ser realizada após o término da disciplina e um trabalho em gr upo
de no máximo 3 alunos. Os pesos serão 50% e 50% respectivamente.
3 Análise de projetos de investimento
1.7 Bibliografia Recomendada
BRASIL, Haroldo Guimarães. Avaliação moderna de investimentos. Rio de Janeiro:
Qualitymark, 2002, 1ª edição.
ROSS, Stephen A., WESTERFIELD, Randolph W., JAFFE, Jeffery F.. Administração
Financeira – Corporate Finance. São Paulo: Atlas, 2002, 2ª edição.
4 Análise de projetos de investimento
Currículo Resumido dos Professores
Luiz Jurandir Simões de Araújo é especi alista em finanças e precificação. Graduado
em Ciência de computação pelo IME/USP. Mestre e doutor em engenharia elétrica pela
Poli/USP. Pós-graduado em Economia pela F EA/USP. Atuou na teso uraria do B anco
Itamarati como analista quantitativo por 2 anos. Atuou como auditor es pecializado em
gerenciamento de risco e tesouraria do Bacen durante 2 anos. Foi consultor Financeiro
da Prandini e Rabbat por 3 anos. Entre 2003 e 2006 foi sócio diretor da consultoria
APLC especializada em soluções d e consul toria integ radas com softwares e modelos
matemáticos. Gerente de investimentos da Mercer de 2006 a 2007. Consultor financeiro
de soluções avançadas de ge stão e risco da FIPECAFI Consulting. Professor de
finanças dos MBAs FIPECAFI/USP e da FGV Management.
Denise Lim a Lopes é graduada em Arquitetura e Urbaminsmo e Administração de
Empresas pela Universidade Mackenzie. Mestre em Engenharia pela POLI/USP.
Consultora do Banco Mundial, trabalha com si mulações de cenários para avaliação de
investimentos e precificação de ativos. Professora de Logística dos MBAs de Comércio
Exterior e Logística Empresaria l do INPG. Professora de Engenharia de Tráfego do
pós graduação lato sensu em Gestão e Norma tização de Trânsito do CE AT. Professora
assistente na área de simulações em VBA dos MBAs em Mercado de C apitais e Gestão
Atuarial e Financeira da FIPECAFI.
5 Análise de projetos de investimento
2. Medidas de investimento Esse capítulo agrupará as principais medidas de análise de investimento utilizadas nos
exercícios em aula e no trabalho a ser entregue.
Introdução : 1
Análise de projetos de investimento (API)
Professor Luiz Jurandir Simões de Araújo
6 Análise de projetos de investimento
Introdução : 2
1 - API sem incluir risco
Basicamente investir é um decisão intertemporal: investe-se agora e espera-se um retorno no futuro acima de um patamar de oportunidade ou adia-se o investimento deixando o capital em outra alternativa melhor e ganha-se uma rentabilidade benchmark por isso.
Com a hipótese de racionalidade econômica adota-se a premissa de maximização da potencial rentabilidade dos acionistas que serão beneficiados pelo projeto.
Introdução : 3
Como são as informações quando a análise não tem risco
Taxas de juros pre-definidaFluxo de pagamentos deterministicos, ou seja, nao estocasticosIgnora-se as dinamicas/reacoes dos agentes externos ao projetoIgnora-se mudancas institucionaisIgnora-se custos de transacao
7 Análise de projetos de investimento
Introdução : 4
Metodologias de seleção de alternativas de investimento
Técnicas mais comunsPayback simplesPayback corrigidoTaxa contábil (ou média) de retornoValor Presente Líquido (VPL)Taxa Interna de Retorno (TIR)TIR modificadaÍndice de lucratividadeValor Anual Equivalente
Introdução : 5
Payback Simples
Payback (período de recuperação do capital):- É o mínimo período de tempo necessário para
recuperar o investimento feito sem considerar o custo de capital, ou seja, mantendo-o constante nominalmente.
- Por exemplo, um dono de restaurante compra por 100 mil um restaurante e espera n meses para recuperar o valor investido somando-se as retiradas mensais possíveis.
8 Análise de projetos de investimento
Introdução : 6
Vantagens e desvantagens do payback
Vantagens: Acaba sendo um teto de tempo máximo aceitável àempresaHá entre o tempo e o risco uma certa proporcionalidade (não necessariamente linear), portanto acaba sendo uma medida de risco;Facilmente calculávelMuito comum em alguns mercados, por exemplo, donos de restaurante da moda.
Payback Simples
Introdução : 7
Vantagens e desvantagens do payback
Desvantagens:Ignora as peculiaridades do fluxo de caixaIgnora o valor do dinheiro no tempo;É uma medida simples e útil para projetos igualmente simples, mas inadequada para projetos como fluxos mais complexos e longos
Payback Simples
9 Análise de projetos de investimento
Introdução : 8
Critério de seleção de altenativa de investimento usando Payback
Se houver várias alternativas o menor Payback épreferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
Payback Simples
Introdução : 9
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 100.000 100.000 100.000 100.000
1 10.000 20.000 80.0002 10.000 20.0003 10.000 20.000 50.0004 10.000 20.000 20.000 10.0005 10.000 20.000 10.000 10.0006 10.000 20.000 10.000 10.0007 10.000 20.000 20.000 10.0008 10.000 20.000 20.000 10.0009 10.000 20.000 20.000 10.00010 10.000 20.000 20.000 10.000
Exercício : analise as 4 alternativas usando o paybacksimples
10 Análise de projetos de investimento
Introdução : 10
Medidas de investimento
Payback corrigido (período de recuperação do capital):
Ao invés de se usar os valores nominais, calcula-se os VP (valores presentes de cada fluxo) e soma-os da mesma forma que no Paybacksimples. Embora considere o valor do dinheiro no tempo, ignora as peculiaridades dos fluxos.
Introdução : 11
Vantagens e desvantagens do paybackcorrigido
Vantagens: Acaba sendo um teto de tempo máximo aceitável àempresa considerando o valor do dinheiro no tempoHá entre o tempo e o risco uma certa proporcionalidade (não necessariamente linear), portanto acaba sendo uma medida de risco;Facilmente calculávelMuito comum em alguns mercados, por exemplo, donos de restaurante que precisam de mais tempo para recuperar o investimento inicial.
Payback Corrigido
11 Análise de projetos de investimento
Introdução : 12
Vantagens e desvantagens do paybackcorrigido
Desvantagens:Ignora as peculiaridades do fluxo de caixaÉ uma medida simples e útil para projetos igualmente simples, mas inadequada para projetos como fluxos mais complexos e longos
Payback Corrigido
Introdução : 13
Critério de seleção de altenativa de investimento usando Payback corrigido
Se houver várias alternativas o menor Paybackcorrigido é preferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
Payback Corrigido
12 Análise de projetos de investimento
Introdução : 14
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 100.000 100.000 100.000 100.000
1 10.000 20.000 80.0002 10.000 20.0003 10.000 20.000 50.0004 10.000 20.000 20.000 10.0005 10.000 20.000 10.000 10.0006 10.000 20.000 10.000 10.0007 10.000 20.000 20.000 10.0008 10.000 20.000 20.000 10.0009 10.000 20.000 20.000 10.00010 10.000 20.000 20.000 10.000
Exercício : analise as 4 alternativas usando o paybackCorrigido
Introdução : 15
Taxa contábil de retorno- É a porcentagem dos retornos futuros dividido
pelo investimento inicial ignorando o custo do dinheiro e com taxa linear para encontrar a taxa de juros no período mínimo do fluxo.
Taxa contábil de retorno
Exercício : Qual seria a fórmula matemática da Taxa contábil de retorno ?
13 Análise de projetos de investimento
Introdução : 16
Taxa contábil de retorno : vantagens e desvantagens
VantagensSimilar ao ROI ou ROA
Desvantagens:Usa o lucro contábil ao invés do fluxo de caixaIgnora o valor do dinheiro no tempoIgnora as pecualiridades dos fluxos
Introdução : 17
Critério de seleção de altenativa de investimento usando TCR
Se houver várias alternativas a maior TCR épreferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
Taxa contábil de retorno
14 Análise de projetos de investimento
Introdução : 18
Exemplos de Taxas contábeis de retorno
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 100.000 100.000 100.000 100.000
1 50.000 20.000 2 50.000 20.000 3 50.000 20.000 50.000 80.000 4 50.000 20.000 20.000 (30.000) 5 50.000 20.000 10.000 40.000
TCR 30,0% 0,0% -4,0% -2,0%
Introdução : 19
Exercício :calcule as TCRs
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 200.000 200.000 200.000 200.000
1 34.290 25.845 22.198 25.0802 17.734 153 12.551 15.1593 14.338 27.135 4.031 4.8384 34.031 23.373 15.215 4.3525 6.176 28.804 22.634 20.9376 24.884 3.322 7.789 30.1167 2.756 29.195 24.250 37.3158 39.051 8.034 24.185 29.9929 34.226 377 36.208 35010 21.559 3.777 22.991 4.958
15 Análise de projetos de investimento
Introdução : 20
Exercício : calcule as TCRs
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 200.000 200.000 200.000 200.000
1 35.836 8.672 28.704 38.0662 20.603 12.814 2.972 8.8913 25.265 28.396 8.419 31.9564 10.296 3.493 4.072 10.5505 7.958 11.893 2.199 26.7976 22.857 12.069 3.038 12.9707 13.349 22.535 13.648 16.2268 7.525 10.355 3.776 9.8659 18.816 28.297 303 21.59710 8.813 34.543 21.656 25.636
Introdução : 21
Valor Presente Líquido (VPL)
Valor Presente Líquido (VPL)
- Calcula-se com o fluxo de caixa líquido descontado pelo custo de capital da empresa ou do investidor
Exercício : Como seria a fórmula?
16 Análise de projetos de investimento
Introdução : 22
VPL : vantagens e desvantagens
Vantagens: Considera o valor do dinheiro no tempoÉ calculado no mesmo jeito do cálculo do valor adicionado do acionista
Desvantagens: Cálculo mais complexoExige definir uma taxa de desconto
Introdução : 23
Critério de seleção de alternativa de investimento usando VPL
Se houver várias alternativas o maior VPL épreferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
VPL
17 Análise de projetos de investimento
Introdução : 24
Exemplo de VPL
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 100.000 100.000 100.000 100.000
1 50.000 20.000 2 50.000 20.000 3 50.000 20.000 50.000 80.000 4 50.000 20.000 20.000 (30.000) 5 50.000 20.000 10.000 40.000
i=10% ao período VPL 89.539 (24.184) (42.565) (35.548)
Introdução : 25
Exercício : Calcule o VPL das alternativa A, B, C e D usando i = 12% ao período
Data Alternativa A Alternativa B Alternativa C Alternativa DInvestimento inicial 0 120.000 120.000 100.000 100.000
1 - 1.000 2 30.000 50.000 1.000 3 10.000 50.000 1.000 4 50.000 10.000 1.000 5 50.000 30.000 140.000 136.000
18 Análise de projetos de investimento
Introdução : 26
Taxa Interna de Retorno (TIR)
Taxa Interna de Retorno (TIR) : É a taxa de desconto que iguala os valores presentes das entradas e das saídas de caixa de um projeto.
Exercício : Como seria a fórmula?
Introdução : 27
TIR vantagens e desvantagens
Vantagens: Considera o valor do dinheiro no tempoAceita-se o projeto quando a TIR for maior que o custo de capital da empresa. Objetivo mais facilmente comparável e analisável em termos econômicos.
Desvantagens: Cálculo mais complexoHá a suposição implícita que todos as entradas líquidas positivas são remuneradas a mesma taxa de retorno
19 Análise de projetos de investimento
Introdução : 28
Critério de seleção de alternativa de investimento usando TIR
Se houver várias alternativas a maior TIR épreferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
TIR
Introdução : 29
Taxa Interna de Retorno Modificada (TIRM)
No cálculo da TIRM usa-se duas taxas: uma para levar os fluxos positivos até o final e outra para se descontar os desembolsos para o início. Comparando-se o VF das entradas com o VP dos desembolsos calcula-se a TIRMExercício : Como seria a fórmula?
20 Análise de projetos de investimento
Introdução : 30
TIRM vantagens e desvantagens
Vantagens: Considera o valor do dinheiro no tempoAceita-se o projeto quando a TIRM for maior que o custo de capital da empresa. Objetivo mais facilmente comparável e analisável em termos econômicos.Há a suposição realista que os recursos disponíveis são remunerados a taxas menores que o custo de capital.
Desvantagens: Cálculo mais complexo e exige mais estimativas.
Introdução : 31
Critério de seleção de alternativa de investimento usando TIR
Se houver várias alternativas a maior TIR épreferível, supondo que não haja nenhuma outra informação a ser ponderada na escolha
TIRM
21 Análise de projetos de investimento
Introdução : 32
Índice de lucratividade (IL)
IL = VPL / VP dos desembolsos
O IL representa o VPL por unidade de investimento
IL > 0 aceita o projetoIL <= 0 recusa
Introdução : 33
IL vantagens e desvantagens
Vantagens: Considera o valor do dinheiro no tempoPondera a relação VPL com desembolsos, oferecendo maior sensibilidade analítica nos projetos que exigem desembolsos constantes
Desvantagens: Cálculo mais complexoHá a suposição implícita que todos as entradas líquidas positivas são remuneradas a mesma taxa de retorno
22 Análise de projetos de investimento
Introdução : 34
Valor Anual Equivalente (VAE)
VAE = VPL . i / [ 1 – (1+i)-n ]
VAE é necessário para comparar projetos com vidas diferentes.
Introdução : 35
Análise e seleção de alternativas de investimento
Se houver várias alternativas, calcula-se as medidas e escolhe-se a melhorSe houver apenas uma alternativa, calcula-se a medida e escolhe-se a alternativa se o número obtido compensar o custo de capital da empresa ou o custo de oportunidade do capital.Deve-se usar as medidas de acordo com as peculiaridades do projeto a ser selecionado
23 Análise de projetos de investimento
Introdução : 36
Medida gerencial e “instrumento de vôo”
Introdução : 37
Exercício : Explique a metáfora visual.
Dicas:Como os instrumentos auxiliam o piloto?Uma empresa pode ser comparada a um avião?O gestor pode ser comparado a um piloto?Quais são os instrumentos de vôo dos gestores?
24 Análise de projetos de investimento
Introdução : 38
Comparação entre TIR e VPL
Pode haver diferentes classificações A premissa da taxa de reinvestimentoRetornos a taxas múltiplas ocorrem, mas não são capturados em ambos os modelos
Introdução : 39
Decisões de investimentos ( em cenário de certeza )
Pode haver diferentes classificações. Veja o gráfico extraído do livro Valuation do Copeland
25 Análise de projetos de investimento
Introdução : 40
Aponte e TIR dos projetos no gráfico
Introdução : 41
Taxa de reinvestimento
VPL x TIR
Está implícito no método VPL o reinvestimentodas entradas líquidas a uma taxa igual a taxa de desconto selecionada
Está implícito no método de cálculo da TIR o reinvestimento a uma taxa igual à própria TIR
26 Análise de projetos de investimento
Introdução : 42
O princípio do valor adicionado:
O Valor de uma firma é igual à soma dos valores de cada um dos seus projetos.
Temos aqui a superioridade do VPL frente à TIR, por possibilitar adição do valor de projeto ao custo de capital ao Valor da firma.
VPL x TIR
Introdução : 43
VPL x TIR:Retornos de taxas múltiplas:
A metodologia da TIR pode resultar em mais
de uma taxa de retorno se o fluxo mudar de
sinal mais de uma vez.
VPL x TIR
27 Análise de projetos de investimento
3. Risco e estatística Em uma amostra suficientemente grande, extraída de uma distribuição normal,
assemelha-se à curva em forma de sino que apresentamos na Figura 1. Como pode ser
percebido, essa distribuição é simétrica em relação a sua média.
Em estatística clássica, a distribuição normal desempenha um papel
fundamental, e o desvio-padrão é a maneira usual de representar a dispersão de uma
distribuição normal. No caso da distribuição normal, a probabilidade de observar uma
variável acima ou abaixo da média por certo montante depende somente do desvio-
padrão. Por exemplo, a probabilidade de uma variável estar no máximo um desvio-
padrão acima ou abaixo da média é aproximadamente igual a 0,68 ou 2/3, a
probabilidade de uma variável estar a dois desvios da média é aproximadamente igual
0,95 ou 95% e a probabilidade de estar a três desvios-padrão da média é 99%
aproximadamente.
A distribuição apresentada na Figura 1 é teórica, às vezes chamada de
distribuição populacional ou distribuição verdadeira. Não há garantia nenhuma de
que a distribuição efetiva de observações em cada amostra produza uma distribuição
exatamente igual ao da distribuição teórica. Isso indica que há erro de amostragem em
qualquer amostra particular. Em outras palavras, a distribuição amostral apenas se
aproxima da distribuição verdadeira: sempre medimos a verdade com algum erro. Mas
ao aumentarmos o tamanho da amostra caminhamos para distribuição normal, ou seja a
distribuição amostral converge para a distribuição normal ao aumentarmos o tamanho
da amostra.
Por exemplo, considere uma urna que contenha três espécies de objetos,
identificados como 0, 1, 2. Suponha que existam 20 zeros, 30 uns e 50 dois. Um objeto
é extraído aleatoriamente e seu valor, digamos X, é registrado. Então a probabilidade de
X igual 0 é 0,2 ou 20%, de X igual a 1 é 0,3 ou 30% e de X igual a 2 é 0,5 ou 50%. A
Figura 2 retrata essa distribuição.
28 Análise de projetos de investimento
Figura 1: Distribuição normal com média zero e desvio-padrão 11.
-4 -2 0 2 4
Distribuição Normal
Suponha agora que o objeto extraído em primeiro lugar seja reposto na urna e, a
seguir, um segundo objeto seja extraído, somamos então a os valores do primeiro e
segundo objeto e dividimos por dois, chamaremos esse valor de Y. Desta forma a
probabilidade de Y ser 0 é de 0,04 ou 4%, de Y ser 1/2 é de 0,12 ou 12% , de Y ser 1 é
0,29 ou 29%, de Y ser 3/2 é 0,3 ou 30% e de ser 2 é 0,2 ou 20%, como apresentado na
Tabela 1:
Tabela 1: Probabilidades da variável Y.
Y 0 1/2 1 3/2 2
Probabilidade 0,04 ou 4% 0,12 ou 12% 0,29 ou 29% 0,3 ou 30% 0,2 ou 20%.
Os valores acima foram obtidos da seguinte maneira: Y=0, é a probabilidade de
tirar zero duas vezes, logo 0,2 X 0,2 = 0,04; Y=1/2 é a probabilidade de tirar zero na
primeira extração da urna e 1 na segunda extração mais a probabilidade de tirar 1 na
primeira extração da urna e 0 na segunda extração, então temos 0,2 X 0,3 + 0,3 X 0,2 =
1 Há 95,44% de probabilidade de que um valor esteja entre no intervalo de dois desvios da média. Nesse exemplo, isso significa que um valor entre –2 e 2 tem 95,44% de chances de ocorrer.
29 Análise de projetos de investimento
0,12; etc. O raciocínio é análogo para os demais cálculos. A distribuição de Y está
representado na Figura 3.
Figura 2: Distribuição de probabilidade da variável X.
0
1 0
2 0
3 0
4 0
5 0
6 0
0 .0 0 .5 1 .0 1 .5 2 .0
V ariá ve l X
%
Finalmente, suponha que depois que o segundo objeto tenha sido também
reposto, um terceiro objeto seja extraído e seu valor seja registrado. Criamos uma
variável chamada Z, que é a soma do primeiro, segundo e terceiro objeto dividido por
três, as probabilidades dos valores de Z são apresentadas na Tabela 2 e sua distribuição
é representada na Figura 3.
30 Análise de projetos de investimento
Tabela 2: Probabilidades da variável Z.
Z 0 1/3 2/3 1 4/3 5/3 2
Probabilidade 0,8% 3,6% 11,4% 20,7% 28,5%. 22,5% 12,5%
As distribuições das variáveis Y e Z já estão mostrando sinais de “normalidade”;
isto é, a aparência da curva em sino da distribuição normal está começando a surgir.
Partindo da distribuição de X, a qual é assimétrica, verificamos que a média de apenas
três observações tem uma distribuição que já está mostrando “indicações de
normalidade”.
Naturalmente, o exemplo acima não demonstra coisa alguma. No entanto, ele
representa uma ilustração numérica da afirmação feita anteriormente. Podemos
continuar o exemplo calculando a distribuição de probabilidade da média das quatro
observações obtidas e veremos que ela se parece mais com a distribuição normal do que
a média das três observações. Se continuarmos esse processo chegaremos a distribuição
normal, o nome desse fenômeno é: Teorema do Limite Central.
Figura 3: Distribuição de probabilidade da variável Y.
0
4
8
1 2
1 6
2 0
2 4
2 8
3 2
0 .0 0 .5 1 .0 1 .5 2 .0
V ariá ve l Y
%
Um outro exemplo é calcular a distribuição da altura dos alunos. Faça você
mesmo esse exemplo, pegue dez colegas de turma e anote as suas alturas, depois anote
31 Análise de projetos de investimento
as alturas de mais vinte colegas, da turma toda, de duas turmas, ......, você vai ver que a
distribuição vai convergindo para distribuição normal. O mesmo é válido para o peso
dos alunos, para o número de refeições servidas em um restaurante, para as vendas
mensais de um produto e etc. Quanto maior for a sua amostra mais parecida ela será
com a distribuição normal.
Figura 4: Distribuição de probabilidade da variável z.
0
5
10
15
20
25
30
0 .0 0 .5 1 .0 1 .5 2 .0
V ariável Z
%
32 Análise de projetos de investimento
4. Intervalo de Confiança
O Teorema do Limite Central nos ajuda muito na prática. Se calcularmos a
média e o desvio padrão de uma amostra suficientemente grande (amostras com mais de
30 observações) podemos utilizar as propriedades da distribuição normal.
Voltando ao exemplo do restaurante, após um mês da inauguração do seu
restaurante, você chegou aos seguintes números: a média diária foi de 100 refeições
com desvio-padrão de 15 refeições. Na prática isso significa que você tem a
probabilidade de 68% de servir entre 85 (100-15) e 115 (100+15) refeições hoje. Ou
tem 95% de chances de servir entre 70 (100-30) e 130 (100+30) refeições. Podendo
assim planejar a compra de alimentos e bebidas para semana, além de poder estimar os
seus custos futuros.
Quanto maior for sua amostra mais precisa será sua previsão, pois apesar das 30
observações terem uma distribuição parecida com a normal, ela não é a distribuição
normal. Na teoria, as suas observações só terão distribuição normal quando o número de
observações tenderem para o infinito, mas quanto maior for a amostra mais próxima a
sua distribuição estará da distribuição normal.
Mas voltando para o lado prático, vamos rever outro exemplo utilizando esse
novo conceito. No exemplo da revendedora de carros novos a amostra contém somente
quatro observações (199, 2000, 2001, 2002), utilizar as propriedades da normal seria
imprudente. Como solucionar tal problema? Ao invés de utilizar os valores totais das
vendas do primeiro trimestre, vamos trabalhar com as vendas semanais do primeiro
trimestre. Como cada trimestre tem aproximadamente 13 semanas, teremos 52
observações (13 X 4), podendo assim utilizar as propriedades da normal. Então suponha
que a média semanal do primeiro trimestre seja 11 carros vendidos com desvio-padrão
de 2 carros. Desta forma podemos esperar com 99% de chance que iremos vender de 5
(11 – [2 X 3]) a 17 (11 + [2 X 3]) por semana. O mesmo raciocínio é válido para as
vendas de aparelhos de CDs. Suponha que a média semanal seja 9 com desvio-padrão
33 Análise de projetos de investimento
de 1,5 CDs. Então temos 99% de chance de vender 4,5 (9 – [1,5 X 3]) a 13,5 (9 + [1,5 X
3]) aparelhos de CDs para carros novos.
34 Análise de projetos de investimento
5 Derivativos
Hedger, Especulador e Arbitrador
Neste texto só usaremos derivativos como instrumentos de mitigação de riscos. No
entanto, eles também podem ser usados como instrumentos de posicionamento
direcional. Por exemplo, um agente econômico que acredite que haverá aumento ou
queda na taxa de juros pode comprar ou vender um contrato de DI futuro para lucrar
com a variação. Não haverá neste texto a preocupação de mostrar como usar derivativos
para posicionar-se.
Em geral, podemos separar os agentes econômicos em 3 classes:
- Hedgers;
- Especuladores e
- Arbitradores.
O Hedger é um agente econômico que não quer assumir o risco e acaba vendendo esse
risco para outro agente que está mais apto ou disposto a assumi-lo. O agente que assume
o risco é o Especulador. Aqui é importante se realçar que o especular não é o mesmo
que manipular ou usurpar o mercado. Especular é comprar um risco por acreditar que
vale a pena. (Lembra-se da relação Risco x Retorno?). O especulador, em geral, tem um
perfil de risco mais arrojado e admite assumir riscos maiores em nome da possibilidade
de obter resultados maiores.
Por exemplo, quando um proprietário de um automóvel compra um seguro contra
roubo, ele está sendo um Hedger e a empresa seguradora a Especuladora. Ela está
assumindo o risco do roubo em troca de um prêmio. Ela atua ponderando a relação
prêmio recebido versus a probabilidade de ocorrer o roubo. Da mesma forma, ao
estruturarmos um projeto podemos agregar derivativos que minimizem os seus riscos e
35 Análise de projetos de investimento
transforme um tipo de fluxo em outra tipo, por exemplo, um fluxo sensível a variação
cambial pode ser transformado em um fluxo prefixado usando-se um swap adequado.
Um Arbitrador é um agente que opera rapidamente, não assume riscos por muito tempo
e prioritariamente procura distorções de preços entre os compradores e os vendedores.
O Arbitrador é sobretudo, um agente econômico que dá liquidez ao mercado.
Estrutura a termo da taxa de juros – DI futuro e Swaps
Uma curva de taxas pré pode ser construída através de contratos futuros de DI
negociados na BMF. As taxas para os períodos entre os vencimentos dos contratos
poderão ser encontradas através do método pro rata.
Por exemplo, suponha que na data 30/05/2003 sejam divulgados as seguintes
taxas para os contratos de DI futuro, como descrito na tabela abaixo.
Características gerais dos contratos futuros
- Cada um tem um objeto da negociação, por exemplo, a cotação
da soja do dia 1/dezembro/2004.
- Cotação diária
- Unidade de negociação, por exemplo, 50 sacos de soja do tipo x
- Em geral, datas de vencimento padronizadas pelas bolsas
- Um certo número de vencimentos em aberto
- Data da última negociação
- Ajustes diários, ou seja, diferenças a serem pagas ou recebidas
geradas pelas variações entre o preço de mercado e o preço da
posição.
36 Análise de projetos de investimento
Data do
Vencimento
Taxa
Número de dias úteis
até o vencimento do
contrato
PU equivalente implícita na taxa do DI
futuro
01/06/2003 22,65% 1 100000 / (1+22,65%)( 1/252) ≈ 99919
01/07/2003 21,91% 22 100000 / (1+21,91%)(22/252) ≈ 98285
02/08/2003 22,02% 44 100000 / (1+22,02%)(44/252) ≈ 96585
01/09/2003 22,15% 66 100000 / (1+22,15%)(66/252) ≈ 94895
Para se construir uma curva pré, a partir de 30/05/2003, para as seguintes datas:
01/06/2003 15/06/2003 01/07/2003 19/07/2003 02/08/2003 17/08/2003 01/09/2003
A estrutura de dias úteis é mostrada na figura abaixo.
As taxas efetivas esperadas para os períodos que coincidem com os dias de vencimentos
dos contratos são dadas por:
De 30/05/2003 até 01/06/2003:
%081,0199919
100000=−
De 30/05/2003 até 01/07/2003:
%745,1198285
100000=−
De 30/05/2003 até 02/08/2003:
37 Análise de projetos de investimento
%536,3196585
100000=−
De 30/05/2003 até 01/09/2003:
%380,5194895
100000=−
Para as datas definidas entre os vencimentos de DI, teremos:
De 30/05/2003 até 15/06/2003:
%791,01%081,01%745,110081,1
219
=−⎟⎠
⎞⎜⎝
⎛++
De 30/05/2003 até 19/07/2003:
%718,21%745,11%536,3101745,1
2212
=−⎟⎠
⎞⎜⎝
⎛++
De 30/05/2003 até 17/08/2003:
%454,41%536,31%380,5103536,1
2211
=−⎟⎠
⎞⎜⎝
⎛++
Desta forma, as taxas de juros efetivas esperadas para as datas estabelecidas serão:
01/06/2003 15/06/2003 01/07/2003 19/07/2003 02/08/2003 17/08/2003 01/09/2003
0.081% 0.791% 1.745% 2.718% 3.536% 4.454% 5.380%
A curva de juros utilizando os futuros de DI poderá ser construída até os vencimentos
que possuem maior liquidez. Para prazos maiores, pode-se utilizar as taxas médias dos
contratos de swap de pré contra DI (Swap DIxPRE). Por exemplo, suponha as taxas
médias de contratos em 31/05/2003 (taxas anuais na base 360):
38 Análise de projetos de investimento
Prazo Pré x DI
30 21.91
60 22.57
91 22.25
120 22.67
150 23.01
184 22.89
210 23.24
240 23.76
270 24.16
301 23.2003
330 24.13
364 24.22
No caso do prazo de 184 dias, a taxa pré será dada por
%1099,111100
89,221360184
=−⎟⎠⎞
⎜⎝⎛ +
Abaixo segue uma tabela em que são calculadas as diversas taxas para os prazos que
vão de 184 até 364 dias corridos:
Prazo Pré x DITaxa no
período
184 22.89 11.11%
210 23.24 12.96%
240 23.76 15.27%
270 24.16 17.62%
301 23.99 19.70%
330 24.13 21.91%
364 24.22 24.52%
39 Análise de projetos de investimento
Curva de Dólar Futuro
Suponha que no dia 30/05/2003, os contratos de dólar futuro tenham os seguintes
valores de fechamento:
Data do Vencimento Dólar Futuro
01/06/2003 1.721
01/07/2003 1.746
02/08/2003 1.766
Desta forma, determinar uma curva de dólar futuro para as datas descritas abaixo.
01/06/2003 15/06/2003 01/07/2003 19/07/2003 02/08/2003
Como os contratos já estão cotados em R$/US$, o valor do dólar futuro esperado para
os dias de vencimento dos contratos, serão as próprias cotações divulgadas na tabela
acima. No caso das datas entre os vencimentos, o valor do dólar futuro será dado por:
De 30/05/2003 para 15/06/2003
7317,1721,1746,1721,1
219
=⎟⎠
⎞⎜⎝
⎛
De 30/05/2003 para 19/07/2003:
7569,1746,1766,1746,1
2212
=⎟⎠
⎞⎜⎝
⎛
Portanto, as estimativas de dólar futuro e as variações associadas, supondo que no dia
30/05/2003 a taxa de câmbio seja de 1.720, serão dadas por:
40 Análise de projetos de investimento
01/06/2003 15/06/2003 01/07/2003 19/07/2003 02/08/2003
Câmbio esperado 1.721 1.7317 1.746 1.7569 1.766
Variação esperada 0.058% 0.678% 1.512% 2.144% 2.674%
Curva de Cupom Cambial
Neste tópico serão ilustrados dois processos de construção de uma curva de cupom
cambial: utilizando uma relação entre DI Futuro e Dólar Futuro e através dos contratos
de swap de pré contra dólar (Swap DIxDol).
Curva de cupom cambial com futuros de DI e Dólar: podemos estimar o cupom
cambial levando em conta as expectativas sobre os juros em moeda nacional e sobre
qual vai ser a desvalorização cambial em um período. Isso pode ser feito por meio da
seguinte fórmula
100x1)C1()ePr1()TaxaCupom( v
t
vtv
t ⎥⎦
⎤⎢⎣
⎡−
∆++
= ,
em que vtPre)(1+ é a taxa de juros esperada de t a v;
vt)C1( ∆+ é a variação cambial esperada de t a v.
Dados as curvas de taxa pré e dólar futuro construídas anteriormente, a curva de cupom
cambial em 30/05/2003 será dada por:
41 Análise de projetos de investimento
01/06/2003 15/06/2003 01/07/2003 19/07/2003 02/08/2003 vtPre)(1+ 0.081% 0.791% 1.745% 2.718% 3.536%
vtC∆ 0.058% 0.678% 1.512% 2.144% 2.674%
Cupom cambial 0.023% 0.112% 0.230% 0.562% 0.839%
Curva de cupom cambial com swaps: podemos utilizar diretamente as taxas de cupom
cambial divulgadas nos contratos de swaps de dólar contra DI (DIxDólar). A tabela
abaixo apresenta as taxas para o dia 30/05/2003.
Prazo Dol x DI
30 9.99%
60 8.70%
91 9.02%
120 10.23%
150 11.06%
184 11.50%
210 11.90%
240 12.38%
270 12.78%
301 12.85%
330 13.07%
364 13.28%
Neste caso, as taxas são anuais, lineares e com base 360. Desta forma, a taxa
efetiva em cada período será dada por
360osDiascorrid.TaxalinearaTaxaefetiv = .
A tabela abaixo apresenta o valor das taxas a partir do prazo de 120 dias corridos.
42 Análise de projetos de investimento
Prazo (DC) Dol x DITaxa efetiva
no prazo
120 10.23% 3,30%
150 11.06% 4,47%
184 11.50% 5,72%
210 11.90% 6,78%
240 12.38% 8,09%
270 12.78% 9,44%
301 12.85% 10,64%
330 13.07% 11,92%
364 13.28% 13,44%
Conceito de Pro Rata
Considere a variável t,hY como sendo a taxa de juros efetiva no período de h até
t, como lustrado pela figura abaixo.
Dado que se conheça a taxa efetiva, i,hY , em apenas alguns pontos no
tempo, n,42,21,1i K = , uma taxa intermediária a eles, xi,hY + , poderá ser determinada
da forma
43 Análise de projetos de investimento
Nx
i,h
ki,hi,hxi,h Y1
Y1)Y1(Y ⎟
⎟⎠
⎞⎜⎜⎝
⎛
++
+= ++
onde
h é a data atual a partir da qual a curva é projetada;
x é o número de dias contados a partir de i, kxi ≤≤ ;
k é o próximo ponto conhecido a partir de i, n,42,21k K= ;
N é o número de dias entre os vértices i.
Valor Marcado a Mercado - Mark to Market
O valor a mercado (MTM) de um título pode ser encontrado trazendo-se a valor
presente o valor de resgate, através de um fator de desconto obtido da curva de juros em
reais do mercado. A idéia é carregar o título até o seu vencimento pelas taxas
negociadas na operação e trazer a valor presente pelas taxas de mercado, como ilustra a
figura abaixo.
Matematicamente teremos
( )mt i1
sgateReValorMtM+
= ,
44 Análise de projetos de investimento
em que mi é a taxa de mercado efetiva no período entre a data atual t e o vencimento do
título.
Fluxo de Caixa: Considere o fluxo abaixo.
Neste caso, o valor de mercado na data t poderá ser expresso da forma
)TX1( y1
Py1
CMTM t0
n
3int
nit
it +⎟
⎟⎠
⎞⎜⎜⎝
⎛
++
+= ∑
=
,
onde ity é a taxa de cupom de mercado entre t e i e t
0TX é taxa do indexador entre as
datas t0 e t. Outra forma de expressar a equação acima é
∑=
=n
3i
itt MTMMTM ,
sendo
)TX1(y1
FMTM t0i
t
iit +
+= ,
onde Fi é o valor de resgate em cada pagamento i.
Com a fórmula acima podemos calcular o VP do fluxo usando uma curva de juros ao
invés de usarmos uma taxa única para todos os vencimentos do fluxo.
45 Análise de projetos de investimento
Renda Fixa
O valor a mercado de um título pré-fixado corresponde ao valor de resgate trazido a
valor presente pelo fator de desconto (referente à data de vencimento do título) obtido
da curva de juros de mercado em reais. O mark to market da operação na data t será
dado por
( )( )
( )( )
( )mvt
opvtt
mvt
opv
mvt
t IIVC
IIP
IsgateValorMtM
,
,
,
,00
, 11
11
1Re
++
=++⋅
=+
= ,
onde:
P0 o principal da operação;
VCt é o valor na curva do título na data t; opvtI , é a taxa da operação, efetiva no período entre as datas t e v;
mvtI , é a taxa de juros a mercado, efetiva no período entre as datas t e v;
Opções
Notação adotada nesta apostila:
S : preço spot do ativo objeto
K : preço de exercício
T : tempo até o vencimento ( número de dias até o vencimento )
Rf : taxa de juros sem risco
σ : Volatilidade
C : Prêmio para Call americana P: idem para Put
c : Prêmio para Call européia p: idem para Put
Valor intrínseco de uma opção
46 Análise de projetos de investimento
O valor intrínseco de uma opção é basicamente a diferença do preço do ativo subjacente
e o preço de exercício. Assim, o valor intrínseco numa opção in-the-money é alto, é out-
of-the-money é praticamente nulo.
Valor intrínseco para Call : máx( 0 , S - K) para o comprador
Valor intrínseco para Put : máx( 0 , K - S) para o comprador
Valor total de uma opção = Valor intrínseco + Valor tempo*
* valor que é agregado ao intrínseco em função da dúvida sobre o exercício. O vendedor
de uma opção sempre incorrerá no risco do exercício. Esse risco é gerado
prioritariamente pela volatilidade do ativo subjacente e pelo espaço de tempo até o
vencimento. Essa dúvida do exercício precisa ser remunerada, caso contrário, o
vendedor da opção não teria nenhum estímulo a assumi-lo. Portanto, o valor tempo é
uma exigência do vendedor da opção.
Paridade entre opções de venda e de compra
Sejam A e B os seguintes portfólios:
A = [ +c +vp(K) ] (uma opção de compra européia e um volume em
dinheiro de vp(K) = K/( 1 + Rf) )
B = [ +p +S ] (uma opção de venda européia e uma ação)
Tabela de arbitragem dos portfólios no vencimento
Portfólio K < S K > S
A 0 + K = K S - K + K = S
B K - S + S = K 0 + S = S
No vencimento, ambos os portfólios terão o mesmo valor.
Como não pode haver exercício antecipado, temos que:
47 Análise de projetos de investimento
Equação de paridade entre a
opções de venda e compra.
Para uma ação S, com opções com preço de exercício K, conseguimos conhecer o
prêmio da Put conhecendo o prêmio da Call ou vice-versa.
Quando essa equação não for verificada haverá oportunidade de arbitragem.
Correção na equação quando há dividendo ou aluguel da ação (D)
Quando há pagamento de dividendos ou aluguel da ação durante o período de
maturação, teríamos a seguinte equação de paridade:
onde D representa o valor presente dos dividendos a serem pagos ou do aluguel
para manter a posição vendida a descoberto.
Observação: Motivado pelo desinteresse de exercício antecipado* da opção de compra
americana, se substituirmos c por C teremos a mesma equação de paridade.
*vale mais a pena vender a opção americana que exercê-la. Exercê-la só se ganha o
valor intrínseco, vendê-la há um prêmio adicional.
Exemplo 1 : S=31 , K=30 , Rf=10% a.a. , T = 3 meses, c=3 e p=2,25.
Com esse exemplo, teríamos: A: +c +vp(K) = 32,29
B: +p +S = 33,25
O portfólio B está superestimado em relação ao portfólio A, consequentemente
ou c está barato ou p está caro. Assim, a seguinte estratégia: comprar A e vender B
permitiria arbitragem, gerando os seguintes portfólios:
A = +c +vp(K)
+c + vp(K) = +p + S
+c + vp(K) = +p + S - D
48 Análise de projetos de investimento
B = -p -S
Teríamos o fluxo positivo de -c +p+S = -3 + 2,25 + 31 = 30,25 (supondo que
possa ficar vendido a descoberto). Esse volume de 30,25 poderá ser aplicado e no final
de T valerá 30,98.
Como está comprado em uma opção de compra e vendido em uma opção de
venda, para qualquer preço da ação no vencimento poderá comprar uma ação e encerrar
a posição vendida.
O lucro liquido final = 30,98 - 30 = 0,98
Exemplo 2 : S=31 , K=30 , Rf=10% a.a. , T = 3 meses, c=3 e p=1,00.
Com esse exemplo, teríamos: A: +c +vp(K) = 32,29
B: +p +S = 32,00
O portfólio A está superestimado em relação ao portfólio B, consequentemente
ou c está caro ou p está barato. Assim, a seguinte estratégia: comprar B e vender A
permitiria arbitragem, gerando os seguintes portfólios:
A = -c -financimento ( financimento < vp(K) )
B = +p +S.
Teríamos o fluxo negativo de +c-p-S = +3 - 1 - 31 = -29. Esse volume de 29 poderá ser
financiado e no pagamento em T deverá ser saldado o montante de 29,70.
Como está comprado em uma opção de venda e vendido em uma opção de
compra, para qualquer preço da ação no vencimento, a venda da ação por 30 poderá ser
efetuada.
O lucro liquido final será = 30 - 29,70 = 0,30.
Hedge
O hedge do risco de mercado é muito simples de entender e usar. Imagine uma empresa
que tenha passivos em dólar e receitas em reais. Se a empresa não conseguir repassar
aos preços de seus produtos aumentos do dólar haveria um desequilíbrio patrimonial
flagrante. Com os derivativos há como compensar essa variação usando por exemplo:
Dólar futuro
49 Análise de projetos de investimento
Ativo Passivo
Comprar dólar Futuro
U$ 1 milhão
Passivo U$ 1 milhão
Imagine que tenha comprado o valor nocional de U$ 1 milhão em contratos
futuros de dólar a uma cotação de R$ 3,20. Se o dólar subir para 3,8 o passivo passaria
de R$ 3,2 milhões para R$ 3,8 milhões, em compensação como está comprado em
dólares futuros ganharia de ajustes diários R$ (3,8 – 3,2)*1 milhão = R$ 600 mil que é
exatamente o valor do aumento do passivo. Com esse derivativo aumentos do dólar
seriam compensados pelos ajustes obtidos nos contratos futuros.
Por outro lado, se o dólar caísse para R$ 2,8 o passivo passaria de R$ 3,2
milhões para R$ 2,8 milhões, em compensação como está comprado em dólares futuros
perderia de ajustes diários R$ (2,8 – 3,2)*1 milhão = - R$ 400 mil que é exatamente o
valor da diminuição do passivo. Com os dólares futuros, o passivo ficaria travado em
R$ 3,2 milhões independente da cotação do dólar.
50 Análise de projetos de investimento
Opção
Ativo Passivo
Comprar call de dólar com preço de
exercício a 3,2
(nocional de U$ 1 milhão)
Passivo U$ 1 milhão
Se o vencimento da call for o mesmo do passivo, se S for o preço do dólar no dia do
vencimento, se K for o preço do exercício a estrutura financeira acima será:
U$1milhão*( max(0, S-K) – S).
Se S > K então U$1milhão*( S - K - S) = U$ 1 milhão*K = -R$ 3,2
milhões
Se S ≤ K então U$1milhão*( 0 - S) = U$ 1 milhão*-S = -R$ 3,2 milhões
Portanto, para qualquer cenário o resultado final será rigorosamente o mesmo,
um dívida de R$ 3,2 milhões.
No hedge com opções há uma despesa inicial que é o prêmio pago na compra da opção,
mas em compensação não há perdas no vencimento. No vencimento o resultado será ou
zero ou um número positivo max(0 ; S-K) para calls e max(0;K-S) para puts.
No hedge com futuros não há um desembolso inicial (exceto pequenos custos de
transação pagos a bolsa para operacionalizar a operação) para comprar os contratos
futuros. Mas em compensação, pode haver ganhos ou perdas. Se um agente econômico
comprar um contrato futuro ganhará na alta do preço e perderá na baixa. Ou vice-versa
quando vender um contrato futuro.
51 Análise de projetos de investimento
6. Ferramentas de VBA
Este capítulo apresentará ferramentas de programação que em muito ajudarão os alunos
a otimizar o trabalho de análise de projetos de investimento.
Identificou-se que profissionais de várias áreas, como atuária, finanças, administração,
economia e contabilidade, entre outras, realizam atividades repetitivas que poderiam ser
automatizadas facilmente com o uso de pequenos algoritmos, criados com base em
noções de lógica de programação.
É comum que os gestores realizem análises que demandam simulações de vários
cenários, repetição de cálculos ou iterações. Nestes casos, o uso de pequenos algoritmos
torna a tarefa simples e imediata. Ao longo do capítulo se verificará que um algoritmo
de poucas linhas pode substituir uma planilha com várias pastas e inúmeras linhas,
como em cálculos de valuation, nas simulações de investimentos, etc.
Os conceitos apresentados serão firmados por meio de exercícios, cujas respostas
encontram-se no anexo IV
6.1 Elementos Fundamentais das Linguagens de Programação
Neste capítulo, você irá aprender sobre os seguintes elementos fundamentais da lógica
de programação:
- Variáveis e constantes - Tipos de dados e declaração de variáveis
- Atribuição - Expressão aritmética
52 Análise de projetos de investimento
- Uso do If - Ciclos
- Uso do while - Coleções e objetos
6.2 Requisitos para o Aprendizado
Antes de tudo é conveniente entender o que é programação e linguagem de
programação.
A programação nada mais é que uma seqüência finita de comandos interpretados por
um computador para a execução de um objetivo / tarefa. Os conjuntos de comando
constituem os programas (ou algoritmos).
As linguagens de programação então são formas estruturadas e padronizadas de
transmitir ao computador as instruções desejadas. São compostas por um conjunto finito
de regras aplicadas a um conjunto finito de dados com sintaxe e semântica específicas
que são interpretadas (ou compiladas) pelo computador.
Embora os exemplos usados neste livro sejam desenvolvidos para a linguagem de
programação chamada VBA – Visual Bas ic for App lications (escolhida por sua
simplicidade e pela à larga disseminação dos programas que a utilizam como o pacote
MS Office), seu conteúdo pode ser aplicado a qualquer outra linguagem de
programação com as devidas adaptações de linguagem.
Antes de iniciar seu aprendizado, é preciso saber que macros ou sub-rotinas também
são conjuntos de instruções transmitidas ao computador, como qualquer outro
programa, para obter um resultado. Para que as macros criadas em VBA sejam
adequadamente identificadas, elas devem obrigatoriamente receber um nome único que
é indicado logo no início do procedimento após a instrução SUB. Devem ainda ser
encerradas obrigatoriamente com a instrução END SUB. Entre as duas instruções são
escritos os statements, ou grupos de instruções a serem executados pelo computador. A
sintaxe simplificada da instrução SUB pode ser vista abaixo:
53 Análise de projetos de investimento
Sub nome da macro ()
[statements]
End Sub
onde nome da macro é o nome único escolhido para o procedimento; statements são os
grupos de instruções a serem executados por ele; e entre os parêntesis pode ser digitada
uma lista opcional de argumentos que requerem conhecimento mais aprofundado de
programação e não serão abordada nesta sintaxe simplificada. Observe que os parêntesis
são obrigatórios ainda que não seja especificada nenhuma lista de argumentos.
Para seguir os exemplos e fazer os exercícios propostos neste livro, será necessário
acessar o Editor do VBA. A descrição de como acessá-lo tanto por usuários do MS
Excel 2007 como do MS Excel 2003 encontra-se no Anexo I.
No Anexo I, você encontra ainda a descrição de que fazer para que o MS Excel permita
a execução de macros, caso esta opção não tenha ainda sido habilitada no seu
computador.
6.3 Variáveis e Constantes
A memória de um computador é um grande espaço em que se pode guardar
temporariamente todo tipo de informações (dados codificados) para posteriormente
recuperá-los, processá-los, alterá-los ou descartá-los. É como uma grande prateleira
cheia de caixinhas em que se pode colocar quase qualquer tipo de coisa.
☞ DICA
A sintaxe completa de instruções do VBA pode ser vista quando você coloca o cursor do mouse sobre a palavra desejada e pressiona F1 para acessar a ajuda do programa.
54 Análise de projetos de investimento
Para que isso seja possível, o
computador precisa conseguir
identificar de forma inequívoca cada
caixinha à qual são destinados dados.
E faz isso com todo tipo de dado
necessário para sua operação normal
(na maioria das vezes sem que o
usuário sequer perceba) seguindo
certas regras (linguagens de
programação).
Da mesma forma que o computador, você pode utilizar os “pedaços” de memória para
guardar seus próprios dados. Para isso, é preciso dar-lhes nomes.
Assim, chamamos de constantes ou variáveis aos espaços da memória do computador
a que damos nomes (e características) específicos, sendo que um nome deve ser único
para que possamos encontrar exatamente o mesmo espaço e manipular os dados
guardados nele quando desejado.
A diferença básica entre as variáveis e constantes em que você vai guardar informações
é que:
- nas variáveis, os dados armazenados poderão variar durante o procedimento; e
- nas constantes, os dados não poderão ser alterados.
Daqui por diante, quando mencionarmos variáveis, você deverá considerar que o
mesmo se aplica às constantes, e caso não se aplique, você será alertado para isso.
Assim, por exemplo, pode-se chamar um espaço de memória de N, e estabelecer que a
variável N irá conter o número de ações de uma carteira, que irá variar durante a
execução de um procedimento.
Da mesma forma, você pode criar uma constante na qual armazenará o nome da
empresa corretora que trabalha na administração da carteira de ações e que não tem
previsão de ser alterado.
Representação da memória do computador como espaços ou caixinhas a que se atribuem nomes e características de variáveis.
Figura 1: Representação do espaço de memória
55 Análise de projetos de investimento
6.4 Tipos de Dados e Declaração de Variáveis
Antes de armazenar qualquer dado, é preciso criar as variáveis que serão usadas por
seus procedimentos. Para isso é preciso definir para cada uma um nome único e as
características. Somente então será possível o armazenamento de dados.
O tipo de dado de uma variável define não só o tipo de conteúdo que poderá ser
armazenado, mas também outras características particulares, como a quantidade
específica de espaço reservado para armazenamento. Por isso, diferentes linguagens de
programação estabelecem diferentes tipos de variáveis. Os nomes e as características
dos tipos de variável podem divergir de uma linguagem de programação para outra e é
preciso conhecer pelo menos um mínimo para poder trabalhar eficientemente com eles.
A descrição completa de tipos de dados usados pelo VBA – Visual Basi c f or
Applications encontra-se no Anexo II, mas os tipos básicos serão descritos, conforme
haja a necessidade.
No momento, você irá precisar de variáveis que possam armazenar números inteiros não
muito grandes (para o número de ações da carteira) e valores monetários não inteiros
(por exemplo, para armazenar o custo das ações ou o valor da carteira).
As variáveis do tipo integer são usadas para armazenar números inteiros entre -32768 e
+32768 e devem servir para o primeiro caso. Se o número de ações for superior (ou
inferior) a este, pode-se usar o tipo long, que aceita números inteiros entre + e –
2.147.483.648 (embora requeira o dobro do espaço da memória).
Para o segundo caso, você poderá usar as variáveis do tipo single, que armazenam
valores negativos de -3,402823E38 a -1,401298E-45, e positivos entre 1,401298E-45 e
3,402823E38, em ambos os casos com vírgula flutuante.
56 Análise de projetos de investimento
Se houver necessidade do processa-mento de números muito grandes como valores
monetários, você poderá usar variáveis do tipo double, que comportam valores entre -
1,79769313486232E308 e -4,94065645841247E-324 para valores negativos e de
4,94065645841247E-324 a 1,79769313486232E308 para os valores positivos (ainda
que utilize o dobro do espaço das variáveis dos tipos single e long).
A criação de variáveis e indicação de suas características através da definição do tipo é
chamada de declaração da variável. O comando simplificado para a declaração de
variáveis no VBA é:
Dim nome da variável as tipo
onde o termo nome da variável deve ser substituído pelo nome escolhido e tipo pelo
tipo apropriado.
Veja o exemplo:
Dim N as integer
Este comando é interpretado pelo computador da seguinte forma: dimensionar (ou
reservar) espaço de memória para a variável de nome N que receberá dados do tipo
integer e à qual se aplicam todas as características deste tipo de dado.
Para a declaração simplificada de constantes, a sintaxe deve ser assim:
Const nome da constante as tipo = expressão
onde o termo nome da constante deve ser substituído pelo nome escolhido e expressão
pelo dado a ser armazenado (por exemplo um texto ou valor). Observe que a declaração
do tipo de constante não é obrigatória, podendo ser definida.
57 Análise de projetos de investimento
EXERCÍCIO 1:
Para praticar, declare uma variável de nome R na qual será armazenado o valor dos
recursos monetários disponibilizados pelo cliente para a compra de ações. Depois
declare uma outra, de nome C onde será armazenado o custo individual das ações da
carteira.
Lembre que toda macro ou sub-rotina deve ser iniciada pelo comando SUB com o nome
da macro seguido de abre e fecha parêntesis e encerrada pelo comando END SUB.
EXERCÍCIO 2:
Identifique quais as constantes e variáveis declaradas nas instruções abaixo e com base
nos tipos de dados do anexo II diga se os tipos escolhidos parecem adequados:
a. Dim GNP as double
b. Const NomeCliente = “Correia Ltda.”
c. Dim CustoUnitarioDaAcao as long
EXERCÍCIO 3:
Como atividade complementar, pesquise quais as regras fundamentais que devem ser
seguidas para a criação de nomes de variáveis no VBA.
6.5 Atribuição de Valores
Como vimos, para a declaração de uma variável (ou constante), é preciso definir seu
nome e suas características e seguir regras específicas para tal. Somente a partir daí, o
usuário poderá armazenar dados, e é a esse armazenamento que chamamos de
atribuição. Assim, em linguagem de programação, a atribuição é a vinculação de dados
específicos a uma variável. A sintaxe de atribuição corresponde a:
58 Análise de projetos de investimento
Nome da variável = valor atribuído
No exemplo anterior foi criada a variável N para armazenar o número de ações de uma
carteira. Supondo que você guardasse nela o valor 2000, ao invés de dizer que você
inseriu um valor 2000 na variável N, você deveria dizer que atribuiu o valor 2000
àquela variável.
É importante compreender que, se for atribuído um novo valor à mesma variável, o
valor anterior será sobrescrito e não poderá ser recuperado.
Assim, se a aquisição ou venda de um certo número de ações ocorrer, digamos a
aquisição de 300 ações, você poderá atribuir o novo valor à variável N.
Mas, uma vez feito isso, o número anterior de ações (2000) terá sido descartado e não
haverá como resgatar aquela informação.
EXERCÍCIO 4:
O custo unitário das ações da carteira que está sendo trabalhada é de R$5,00 e o cliente
disponibilizou R$2.000,00 para a compra de ações. Atribua os valores às respectivas
variáveis.
6.6 Ainda sobre os Tipos de Dados
É importante mencionar que nem todas as variáveis armazenam uma única informação
elementar que não possa ser decomposta em entidades mais simples, (como as variáveis
elementares do tipo integer ou single).
Há casos em que conjuntos de dados ordenados e de um mesmo tipo podem
corresponder a um único nome de variável. Temos então as variáveis chamadas
estruturadas, como as strings, que armazenam conjuntos de informação (conjuntos de
59 Análise de projetos de investimento
caracteres) e que podem ser decompostas em entidades mais simples (os caracteres que
as compõem).
Os tipos mais comuns de variáveis estruturadas são os arrays. Eles podem ser
estruturados de forma unidimensional (os vetores), ou de forma multidimensional
(como as matrizes de linhas e colunas, que são arrays de duas dimensões). Na
declaração de um array é preciso especificar quantas posições irão existir em cada uma
de suas dimensões.
Assim, um vetor de 10 posições e nome V pode ser declarado por meio do comando
DIM, seguido do nome do vetor, do índice referente ao número máximo de posições
entre parêntesis e do tipo dos elementos que o compõe, ou seja:
Dim V(10) as single
Da mesma forma, você pode declarar
uma matriz indicando o número
máximo de elementos em cada uma
de suas dimensões. Uma matriz M de
5 linhas por 5 colunas poderia ser
declarada assim:
Dim M(5, 5) as integer
Para atribuir valores às diversas posições de um array, deve-se indicar a qual posição se
deseja atribuir valor.
Por exemplo, a atribuição do valor 100 à segunda posição do vetor que acabamos de
descrever ficaria assim:
V(2) = 100
Agora, pratique estes conceitos fazendo os exercícios a seguir.
Figura 2: . Representação de V(10) ou vetor de 10 posições, e de M(5, 5) ou matriz de 5 por 5 posições.
60 Análise de projetos de investimento
EXERCÍCIO 5:
Declare um vetor de oito posições do tipo single que servirá para armazenar os valores
de oito tipos de aplicações de uma carteira de investimentos de um cliente.
EXERCÍCIO 6:
Atribua os valores R$1.500,00, R$2.000,00, R$2.500,00, R$3.000,00, R$3.500,00,
R$4.000,00, R$4.500,00 e R$5.000,00 ao vetor do exercício 5.
EXERCÍCIO 7:
Identifique quantas dimensões e número máximo de posições têm os arrays abaixo:
a. Dim TempoEspaco(365, 90, 90, 90) as single
b. Dim Volume(100, 100, 100) as long
6.7 Expressões Aritméticas
O uso de variáveis para o armazenamento de informação não teria grande utilidade se,
além da sua simples recuperação, não fosse possível a manipulação desses dados.
Essa manipulação ou processamento, bem como a própria atribuição de valores, pode
ser feita com base em expressões aritméticas. Assim, a atribuição de valor à variável N
pode ser realizada por meio de uma expressão aritmética como esta:
N = 2000
O computador interpreta esta instrução como sendo a atribuição do valor encontrado no
segundo termo da equação (2000) ao primeiro termo da mesma equação (variável N), ou
seja, a variável N recebe o valor 2000 (ou o valor 2000 é atribuído à variável N).
61 Análise de projetos de investimento
Para o próximo exemplo, considere que o número de ações inicialmente armazenado na
variável N era de 2000 e foram compradas mais 300. Não é preciso fazer os cálculos
manualmente para atribuir o resultado à variável N. O VBA pode processar os dados
através do uso de outra expressão aritmética que indique que o novo valor da variável N
é igual ao valor anteriormente armazenado acrescido de 300, referente às ações
adquiridas, ou seja:
N = N + 300
Da mesma forma que no exemplo anterior, o computador interpreta esta instrução como
sendo a atribuição do valor verificado no segundo termo da equação (N + 300) ao
primeiro termo (variável N).
Então, quando o comando é processado, o valor inicialmente armazenado em N é
acrescido de 300 e então atribuído à própria variável N. Assim, na próxima vez em que
for recuperado, o conteúdo da variável exibirá o número 2300.
Não esqueça de que o número 2000 terá sido sobrescrito, não podendo mais ser
recuperado.
Se for necessário manter um histórico de operações, deverá ser montada uma lógica um
pouco mais complexa, conforme veremos em exercícios mais adiante, guardando em
local diverso as várias alterações.
Compreender a lógica do processamento deste comando é de fundamental para a correta
criação de pequenos algoritmos (macros) que são de grande valia aos profissionais que
trabalham com cálculos repetitivos e que querem otimizar seu esforço.
Vale lembrar que a relação de operadores permitidos nas instruções do VBA e sua
precedência encontram-se no anexo IV.
EXERCÍCIO 8:
Suponha que o custo unitário das ações da carteira que está sendo trabalhada subiu em
62 Análise de projetos de investimento
40% do valor anteriormente estabelecido. Mostre através de uma expressão aritmética
como ficaria a instrução.
6.8 Uso do If
Em atividades como a compra e venda de ações para uma carteira, é bastante comum
existirem certas limitações como, por exemplo, a disponibilidade financeira para sua
aquisição. O operador deve verificar o capital disponível antes de executar a compra e,
somente realizar a operação se houver recursos.
Em linguagem de programação, este exemplo descreve uma verificação de condição
lógica, ou seja, se for identificada como verdadeira a condição de disponibilidade de
capital, a operação de compra será realizada, caso contrário, a compra não se
processará.
Para que um algoritmo possa fazer este tipo de teste condicional, usa-se a instrução IF,
palavra de origem inglesa e que quer dizer “se”. Ele é usado juntamente com a instrução
THEN e eventualmente também com ELSE.
Enquanto a instrução IF é seguida da condição restritiva a ser verificada, o THEN é
seguido da ação a ser realizada quando for identificada como verdadeira aquela
condição. O ELSE indica o que fazer caso a condição testada não se verifique, sendo o
uso desta instrução facultativo (não obrigatório).
Assim, a sintaxe simplificada do comando é dada por:
If condição Then
[statements]
Else
[elsestatements]
End If
63 Análise de projetos de investimento
onde statements e elsestatements são os comandos a executar caso a condição testada
seja verificada e comandos a serem executados em caso contrário, respectivamente.
É importante notar que toda instrução do tipo IF deve ser encerrada pelo comando END
IF para que o programa identifique onde parar as instruções relativas ao teste.
No teste de condição lógica do exemplo abaixo, você deseja verificar se existem
recursos suficientes para a compra de 300 ações, ou seja, se os recursos disponíveis
(valor contido na variável R) são superiores ao número de ações a comprar (300)
multiplicado pelo custo unitário das ações (na variável C). A instrução ficaria assim:
If R > C*300 Then
N = N + 300
End If
Agora, pratique o que aprendeu fazendo os exercícios de fixação.
EXERCÍCIO 9:
Como o custo unitário das ações da carteira que está sendo administrada subiu para
R$7,00 antes de a compra ter sido efetivada, utilize um teste condicional e verifique se a
compra seria realizada.
☞ DICA
A endentação é uma forma visual e bastante útil de separar grupos de instruções em um procedimento. Repare que entre a instrução de início e fim do teste lógico (If e End if) as linhas de instrução do procedimento são escritas com margem maior. Esta endentação torna mais fácil identificar início e fim de instruções, testes lógicos e operações recursivas entre outros, particularmente quando existem instruções aninhadas (tópico a ser visto oportunamente).
A endentação é largamente usada em todas as linguagens de programação.
64 Análise de projetos de investimento
EXERCÍCIO 10:
Acrescente ao seu algoritmo (seqüência lógica de instruções) a atualização do valor
disponibilizado pelo cliente para operações de compra e venda no caso de ser realizada
a compra.
6.9 Ciclos
Os ciclos (ou loops) são ferramentas extremamente úteis quando se utiliza
procedimentos repetitivos, pois permitem a execução de uma seqüência de comandos
reiteradamente por um determinado número de vezes sem que seja necessário reescrever
as instruções.
O número de repetições é definido pela verificação de uma condição preestabelecida, de
forma parecida com o que foi visto no teste condicional com o uso do IF. Porém,
enquanto o IF realiza uma única verificação de um teste condicional, com os ciclos, o
teste pode ser repetido por tantas vezes quantas for encontrada como verdadeira a
condição restritiva.
Vale dizer que os testes condicionais podem ser realizados de forma repetitiva desde
que a seqüência de instruções esteja inserida em um ciclo. A esta condição chamamos
de aninhamento.
No ambiente do VBA, os ciclos podem ser estabelecidos de várias formas. A seguir,
será apresentada a criação de ciclos com o comando while e, posteriormente, você
poderá compará-la com os ciclos com o uso do Do while e do For.
65 Análise de projetos de investimento
6.10 Uso do While
A sintaxe da instrução While ... Wend é dada por:
While condição
[statements]
Wend
onde condição é a expressão que será avaliada como falsa ou verdadeira; e statements
são os grupos de instruções a serem seguidas enquanto for verdadeira a condição
testada.
Imagine que a carteira de investimentos de um cliente tenha, por exemplo, oito tipos
diferentes de aplicações. Em cada tipo de aplicação há diferentes valores monetários
aplicados e você precisa calcular qual o valor total desta carteira.
Considere que os valores estão armazenados em um vetor V(8) e o total será
armazenado na variável Total.
Seguindo a lógica que você já conhece, sem o uso de ciclos, seria necessário escrever
uma seqüência de instruções similar a esta para obter o total:
...
Dim V(8) as single
Dim Total as single
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
V(5) = 3500
V(6) = 4000
V(7) = 4500
66 Análise de projetos de investimento
V(8) = 5000
Total = 0
Total = Total + V(1)
Total = Total + V(2)
Total = Total + V(3)
Total = Total + V(4)
Total = Total + V(5)
Total = Total + V(6)
Total = Total + V(7)
Total = Total + V(8)
...
Pode-se perceber que a variável Total acumula gradativamente os valores de cada
aplicação, mas, para isso, uma seqüência de instruções muito parecidas é repetida
muitas vezes. (Note que somente o índice de posição do vetor é diferente).
A alternativa será montar um ciclo com o comando while em que a instrução seria
repetida, mas sem a redigitação das linhas de comando. Para isso será criada uma nova
variável que servirá como um contador. O resultado ficará assim:
...
Dim V(8), Total as single
Dim i as byte
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
V(5) = 3500
V(6) = 4000
V(7) = 4500
V(8) = 5000
Total = 0
67 Análise de projetos de investimento
i = 1
While i <= 8
Total = Total + V(i)
i = i + 1
Wend
...
O computador interpreta estas instruções da seguinte forma: após a declaração das
variáveis e a atribuição de valores a elas e a cada posição do vetor (antes do
processamento), o computador encontra o comando while que indica o início do ciclo.
Então ele vai processar a verificação da condição definida considerando os atuais
valores das variáveis.
Neste caso, inicialmente é testada a condição de só executar as instruções contidas no
ciclo se i for menor ou igual a 8. Como o valor inicial de i é 1, a condição neste
momento é satisfeita e, portanto, à variável Total irá receber o valor anteriormente
atribuído a ela (zero) acrescido do valor do investimento encontrado na posição 1 do
vetor V, ou seja, o valor de V(i) que é 1500.
Em seguida o programa atribuirá a i, que neste momento é igual a 1, este mesmo valor
acrescido de 1, ou seja, 2. Agora o programa encontra a marca de fim do ciclo, dada
pela instrução Wend e retorna à primeira linha do ciclo.
A variável i agora vale 2, mas ainda é menor ou igual a 8, por isso o programa considera
que a condição i<=8 é verdadeira e volta a executar as instruções contidas no ciclo até
encontrar de novo o indicador de fim, ou seja, a instrução Wend.
Neste segundo ciclo, o valor anterior do Total que era 1500 é acrescido do valor da
posição 2 do vetor, ou seja, 2000, passando a armazenar 3500. Na sequência, o contador
i assume o valor 3.
Note que, a cada novo ciclo, o valor anterior do Total é sobrescrito e perdido, sendo
substituído pelo novo. Da mesma forma, a variável i é acrescida de 1 sobrescrevendo o
68 Análise de projetos de investimento
valor anterior e, então, o comando de fim do ciclo é encontrado. Por isso o computador
deve voltar a processar as instruções iniciais do ciclo, testando novamente a condição
lógica.
Assim, o programa segue executando o mesmo ciclo várias vezes, e o faz, como vimos
até que a condição não mais se verifique. Quando isso acontece, o computador ignora
todas as linhas do ciclo e prossegue executando as instruções posteriores a ele.
A compreensão da lógica deste processo é fundamental para a utilização de macros na
otimização de trabalhos repetitivos de todas as áreas.
EXERCÍCIO 11:
Encontre uma forma de atribuir os valores definidos para o vetor V utilizando um ciclo
com a instrução while e seguindo o exemplo deste tópico. Para isso, substitua as
instruções necessárias da macro do exercício 10.
6.11 Coleções e Objetos
No exercício anterior, você pôde perceber que o uso do while requer um certo nível de
compreensão de lógica e que seu uso adequado pode otimizar bastante os trabalhos
repetitivos, particularmente na área financeira.
☞ DICA
As primeiras tentativas de criar ciclos parecem sempre mais difíceis. Para ajudá-lo no início, sugerimos que sejam escritas as instruções que você usaria sem a utilização da lógica dos ciclos. Com base nisso você deve procurar perceber as partes comuns (repetitivas) das instruções e as partes que se alteram nos comandos. A seguir, procure identificar se há uma cadência nas alterações das instruções. Somente então pense em como montar o ciclo.
69 Análise de projetos de investimento
Agora perceba que, da forma como estão estruturados os procedimentos dos exercícios
anteriores, a cada vez que houver uma alteração, seja no valor dos recursos
disponibilizados, no custo das ações, no valor das aplicações ou em qualquer outro
dado, será necessário editar manualmente a macro para que você possa obter os
resultados desejados.
Para aqueles que já utilizam as planilhas do Excel, parece natural alterar dados de uma
planilha quando ocorre alguma mudança de cenário, mas alterar manualmente as macros
correspondentes representa uma duplicidade de trabalho. Isso não seria nada prático, e
praticidade é o grande diferencial do uso de macros.
Para evitar isso, você pode recorrer ao recurso de “leitura de dados” diretamente da
planilha. Dessa forma, quando os dados forem alterados na planilha, ao processar
novamente a sua macro, serão lidos os novos dados, devolvendo assim o novo resultado
sem necessidade de redigitação (e reduzindo a possibilidade de erros nesse processo).
Para a leitura de dados a partir de planilhas, o VBA atribui os dados encontrados nelas a
variáveis das macros, sem a necessidade de digitação direta.
Para isso, você verá a seguir algumas das alternativas do VBA em termos de atribuição
de dados a variáveis com base na “leitura” de planilhas e pastas do Excel. Isso requer
que você conheça um pouco sobre as coleções e objetos do Excel para o VBA.
Os objetos são elementos que podem ser manipulados por um programa. Eles são
fundamentalmente um tipo especial de variáveis que podem conter tanto dados como
códigos, e que podem possuir propriedades e procedimentos.
70 Análise de projetos de investimento
Entre os objetos indispensáveis do Excel temos: workbook (ou pasta), worksheet (ou
planilha), range (ou intervalo) e cells (ou células).
As coleções são grupos de objetos da mesma classe. Assim, workbooks é uma coleção
de objetos workbook, ou seja, um conjunto de arquivos do Excel, worksheets é uma
coleção de objetos worksheet, ou seja, um conjunto de planilhas.
Usando o exemplo da figura 3, você poderia então se referir a uma planilha do arquivo
que se encontra aberto da seguinte forma:
Worksheets(“Plan1”)
ou
Worksheets(1)
A primeira linha indica a planilha chamada Plan1 no arquivo e a segunda, indica a
primeira planilha do arquivo (que não é necessariamente Plan1).
aba da worksheet
range de 4 células
range de célula
workbook atual
Figura 3: Objetos e coleções do VBA
71 Análise de projetos de investimento
Se houver planilhas com o mesmo nome em diferentes arquivos e que você deseja usar,
será necessário qualificar também os arquivos em que se encontram essas planilhas,
conforme o exemplo abaixo:
Workbooks(“Pasta1”).Worksheets (“Plan1”)
e
Workbooks(“Pasta2”).Worksheets (“Plan1”)
Perceba que, sempre que referenciados pelo nome, planilhas e arquivos devem ser
sempre descritos entre parêntesis e aspas duplas. Quando a planilha é referenciada pela
posição no arquivo, o número correspondente deve estar apenas entre parêntesis.
O objeto range pode indicar uma célula, uma linha, uma coluna ou um conjunto de
células contendo um ou mais intervalos de células contíguas. Veja:
Worksheets("Ex12").Range("B2")
Worksheets("Ex12").Range("B4:B8")
Worksheets("Ex12").Range("C4,C6,C8")
Na primeira linha, o intervalo definido refere-se a uma única célula (B2). Na segunda
linha, o intervalo é dado pelas células contíguas de B4 até B8, e, na terceira linha, o
intervalo corresponde a três células não contíguas (C4, C6 e C8).
Repare que o intervalo é dado pela identificação das células em termos de letra da
coluna e número da linha e sempre dentro de parêntesis e aspas duplas.
Para qualificar intervalos de células contíguas, indique a célula do canto superior
esquerdo e a do canto inferior direito do intervalo, necessariamente separadas por dois
pontos (:).
Use vírgula como separador apenas quando estiver qualificando células ou intervalos
não contíguos.
72 Análise de projetos de investimento
Os objetos cells também indicam as células das planilhas, porém de uma forma
diferente daquela usado com o objeto range. Com cells você pode indicar o número da
linha seguido do número da coluna, separados por vírgula e entre parêntesis. Observe:
Cells(2,4)
Este comando indica a linha 2 da coluna 4 na planilha ativa, ou seja, a célula D2.
A vantagem do uso deste objeto é que você pode manipular as células indicando o
deslocamento desejado em relação à célula indicada inicialmente.
Assim, se você tivesse selecionado a célula D2, conforme sugerido no exemplo anterior,
poderia indicar a célula localizada há duas colunas para a direita na mesma linha da
seguinte forma:
i = 4
Cells(2,i).select
Cells(2,i+2).select
Usar a variável i em lugar da descrição explicita da coluna na segunda linha permite que
você indique outras células pela descrição de sua posição relativa à primeira célula
qualificada.
Os objetos podem ter propriedades e procedimentos (e neste texto eles serão abordados
conforme a necessidade se apresente).
☞ DICA
Se não houver uma indicação explícita do objeto, o Excel entenderá que você se refere ao objeto aberto (ou objeto atual), como um arquivo ou planilha. Você pode identificar a planilha em aberto no arquivo atual pela guia em branco (mesmo que você tenha alterado as cores das guias do arquivo). Na figura 3, a planilha ativa é a Plan1, já que as guias das demais planilhas têm fundos cinza.
73 Análise de projetos de investimento
As propriedades são atributos que definem as características do objeto, enquanto os
procedimentos permitem executar uma determinada tarefa vinculada ao objeto.
Algumas das propriedades de objetos podem ser vistas a seguir:
Cells(2,1).value = 7
Cells(2,2).formula = “=+A1*2”
Cells(2,2).font.italic= True
A propriedade value indica que está sendo atribuído um valor à célula qualificada (A2),
enquanto a propriedade formula indica que à célula vizinha (B2) será atribuída a
fórmula que se vê entre aspas. Já a propriedade font aplica uma definição específica de
fonte ao intervalo.
A seguir você vê também alguns exemplos de procedimentos aplicados ao objeto cells.
Cells(1,1).Clear
Cells(3,2).AddComment "Atenção"
No primeiro caso, o procedimento Clear realiza a limpeza do conteúdo da célula A1,
enquanto no segundo, o procedimento AddComment insere uma caixa de comentário
com o texto digitado entre as aspas à célula B3.
No momento, estes conceitos são suficientes para que você possa prosseguir
incrementando suas macros e incluindo os comandos de leitura de dados a partir de
planilhas, bem de exibição dos resultados em áreas específicas de planilhas.
6.12 Leitura e Exibição de Dados
A leitura de dados a partir da planilha funciona de forma parecida com a atribuição de
dados, apenas é preciso lembrar de como indicar o objeto de onde se deseja ler os dados.
74 Análise de projetos de investimento
Assim, para a leitura dos dados da célula D5 na planilha Ex12 para a posição 1 do vetor
V, poderia ser usada a instrução:
V(1) = Worksheets("Ex12").Range("D5").value
A interpretação do comando é similar à de uma atribuição qualquer, ou seja, a posição 1
do vetor V recebe o valor encontrado na célula D5 da planilha Ex12 do arquivo atual.
Caso se deseje que uma variável armazene a fórmula em vez do valor da célula, deve-se
substituir a propriedade value pela propriedade formula. E a instrução ficaria assim:
V(1) = Worksheets("Ex12").Range("D5").formula
Antes de executar esta instrução, é necessário alterar o tipo de variável para que ela
aceite o tipo de dado a armazenar.
Para a exibição de dados ou de algum resultado de processamento, você já deve ter
imaginado que também é usado um comando similar ao da atribuição de leitura. A
diferença consiste em que, ao invés de atribuir dados às variáveis, serão os objetos do
Excel que receberão os dados contidos nas variáveis. Então, se você deseja exibir o
texto Técnicas de na célula B2, o texto Precificação nas células de B4 até B8, e o texto
Exemplo nas células C2, C6 e C8, todas da planilha Ex12, a instrução deveria ficar
assim:
Worksheets("Ex12").Range("B2").value =_ "Técnicas de"
Worksheets("Ex12").Range("B4:B8").value_ = "Precificação"
Worksheets("Ex12").Range("C4,C6,C8")._ value = "Exemplo"
O resultado destas instruções deveria ficar conforme se vê na figura 4 abaixo:
75 Análise de projetos de investimento
EXERCÍCIO 12:
Altere a macro do exercício 11 para que os dados do vetor V (que contém os valores das
aplicações da carteira do seu cliente) sejam lidos a partir da coluna D da planilha Ex12
(arquivo anexo).
EXERCÍCIO 13:
Altere a macro do exercício 12 para que o resultado armazenado na variável Total seja
exibido na célula D13 da planilha Ex13.
Com este ferramental, será possível implementar diversas macros que irão simplificar o
trabalho de simulação de cenários para a análise de investimentos.
Os exercícios específicos serão vistos em aula.
Figura 4: Resultado de comandos com range
76 Análise de projetos de investimento
ANEXO I
ACESSANDO O EDITOR DO VBA – VISUAL BASIC FOR APPLICATIONS
Para acompanhar os exemplos e fazer os exercícios propostos no capítulo 6, será
necessário acessar o Editor do VBA.
Se você está usando o MS Excel 2007, proceda da seguinte forma:
- abra o programa MS Excel 2007;
- clique no botão Microsoft Office no canto superior esquerdo da
janela do programa;
- selecione OPÇÕES DO EXCEL na parte inferior direita da janela;
- a janela de opções deve abrir no primeiro menu, correspondente a MAIS
USADOS;
- clique no terceiro checkbox (caixa de seleção) de cima para baixo: MOSTRAR
GUIA DESENVOLVEDOR NA FAIXA DE OPÇÕES. Isto fará surgir na tela a
guia Desenvolvedor; e
- então, selecione a guia desenvolvedor e nela o ícone Visual Basic no grupo de
comandos Código (é o primeiro botão à esquerda). Isto fará abrir a janela do
programa.
Se você está usando o MS Excel 2003, proceda assim:
- abra o MS Excel 2003;
- selecione o menu Ferramentas na barra de ferramentas padrão;
- clique na opção Macro; e
- selecione o ícone Visual Basic. Isto fará abrir a janela do programa.
Observe que, ao abrir o programa, abaixo das barras de menus, a janela do programa é
77 Análise de projetos de investimento
divida em duas grandes áreas: uma área à direita onde aparecerão as macros existentes
nas planilhas abertas; e uma área à esquerda onde deve-se visualizar o projeto (em
forma de árvore).
Se a área de Projeto (Project) não aparecer na parte esquerda da janela do Microsoft
Visual Basic, clique na guia Exibir e selecione o item Project Explorer. Ele também
pode ser acessado por meio do ícone da barra de ferramentas padrão ou pelo atalho
Ctrl+R.
Para permitir a execução de macros no Excel, siga estas instruções:
- ao abrir arquivos que contenham macros, deve aparecer a janela Aviso de
Segurança do Microsoft Office Excel indicando um possível problema de
segurança, como na figura 5;
- para evitar que suas macros deixem de ser executadas, clique no botão
Habilitar Macros. (se você fechou inadvertidamente a janela ou selecionou
Desabilitar Macros por engano, feche o arquivo e reabra, selecionando a opção
correta da janela);
- eventualmente a janela pode não aparecer e, neste caso você verá o Aviso de
Segurança logo abaixo das barras de ferramentas como mostrado na figura 6;
Figura 5: Ícone do Project Explorer na barra de ferramentas padrão
Figura 6: Janela do Aviso de Segurança do Microsoft Office Excel
78 Análise de projetos de investimento
- neste caso, selecione o botão Opções fazendo abrir uma janela similar à da
figura 5 e, então clique em Habilitar Macros.
Para executar as macros de planilhas do Excel, selecione o ícone Macros na guia
Desenvolvedor.
Figura 7: Aviso de Segurança do Microsoft Office Excel com a planilha já aberta
79 Análise de projetos de investimento
ANEXO II
TIPOS DE DADOS DO VBA – VISUAL BASIC FOR APPLICATIONS
Tipo de dados Tamanho de armazenamento Intervalo
Byte 1 byte 0 a 255 Boolean 2 bytes True ou False Integer 2 bytes -32.768 a 32.767 Long (inteiro longo) 4 bytes -2.147.483.648 a 2.147.483.647 Single (vírgula flutuante de precisão simples)
4 bytes -3,402823E38 a -1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos
Double (vírgula flutuante de precisão dupla)
8 bytes
-1,79769313486232E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos
Currency (inteiro escalado)
8 bytes -922.337.203.685.477,5808 a 922.337.203.685.477,5807
Decimal 14 bytes
+/-79.228.162.514.264.337.593.543.950.335 sem ponto decimal; +/-7,9228162514264337593543950335 com 28 casas decimais à direita; o menor número diferente de zero é+/-0,0000000000000000000000000001.
Date 8 bytes De 1º de Janeiro de 100 até 31 de Dezembro de 9999
Object 4 bytes Qualquer referência a Object
80 Análise de projetos de investimento
Tipo de dados Tamanho de armazenamento Intervalo
String (comprimento da variável)
10 bytes + comprimento da seqüência de caracteres
De 0 até aproximadamente 2 bilhões
String (comprimento fixo)
Comprimento da seqüência de caracteres
De 1 até aproximadamente 65.400
Variant (com números)
16 bytes Qualquer valor numérico até o intervalo de um Double
Variant (com caracteres)
22 bytes + comprimento da seqüência de caracteres
O mesmo intervalo que String de comprimento variável
Definido pelo usuário (usando Type)
Número requerido por elementos
O intervalo de cada elemento é o mesmo que o intervalo do seu tipo de dados.
81 Análise de projetos de investimento
ANEXO III
REGRAS DE PRECEDÊNCIA ENTRE OPERADORES
Da maior para a menor precedência:
REPRESENTAÇÃO DO OPERADOR DESCRIÇÃO DA OPERAÇÃO ^ exponenciação - negação * e / multiplicação e divisão Mod resto da divisão + e - adição e subtração & concatenação =, >, <, >=, <= comparação and, or, not operações lógicas
Por exemplo: a expressão 3+2*5+4 será calculada como 3+(2*5)+4, ou seja, primeiro
será feita a multiplicação (2*5 = 10) e então somados os valores 3 e 4 (3+10+4 = 17).
82 Análise de projetos de investimento
ANEXO IV
RESPOSTA DOS EXERCÍCIOS PROPOSTOS
EXERCÍCIO 1:
Declaração de uma variável de nome R para armazenar o valor dos recursos monetários
disponibilizados pelo cliente para a compra de ações e declaração de uma outra variável
de nome C para armazenar o custo individual das ações da carteira:
Sub Ex_1_Carteira_de_Acoes
Dim N as integer
Dim R as single
Dim C as single
End sub
EXERCÍCIO 2:
Identificação de constantes e variáveis declaradas nas instruções e, com base nos tipos
de dados do anexo II, explicação sobre a adequação dos tipos escolhidos:
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação
83 Análise de projetos de investimento
NOME VARIÁVEL OU CONSTANTE TIPO ADEQUADO
a. GNP Variável double Não, por que poderia usar single economizando espaço.
b. NomeCliente Constante string (oculto)
Sim, por que irá armazenar caracteres de texto.
c. CustoUnitarioDaAcao Variável long Não, por que irá armazenar números não inteiros.
EXERCÍCIO 3:
Pesquisa complementar sobre regras para criação de nomes de variáveis no VBA:
• O nome deve começar com uma letra;
• O nome pode conter apenas letras, números e caracteres underscore
(sublinhado);
• Caracteres especiais (de pontuação e espaços) não são permitidos em nomes de
variáveis;
• O nome não pode exceder 40 caracteres; e
• O nome não pode ser uma palavra reservada do VBA (como uma instrução).
EXERCÍCIO 4:
Atribuição do valor R$5,00 à variável C e do valor R$2.000,00 à variável R:
Sub Ex_4_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
N = 2000
R = 2000
C = 5
End sub
84 Análise de projetos de investimento
EXERCÍCIO 5:
Declaração de um vetor de 8 posições do tipo single que servirá para armazenar valores
das várias aplicações de uma carteira de investimentos
Sub Ex_5_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
Dim V(8) as single
N = 2000
R = 2000
C = 5
End sub
EXERCÍCIO 6:
Atribuição dos valores R$1.500,00, R$2.000,00, R$2.500,00, R$3.000,00, R$3.500,00,
R$4.000,00, R$4.500,00 e R$5.000,00 ao vetor do exercício 5.
Sub Ex_6_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
Dim V(8) as single
N = 2000
R = 2000
C = 5
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação V(8) Valores das aplicações
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação V(8) Valores das aplicações
85 Análise de projetos de investimento
V(5) = 3500
V(6) = 4000
V(7) = 4500
V(8) = 5000
End sub
EXERCÍCIO 7:
Identificação do número de dimensões e máximo de posições dos arrays abaixo:
ARRAY DIMENSÕES POSIÇÕES POSSÍVEIS Dim TempoEspaco(365, 90, 90, 90) as single 4 365; 90; 90; 90 Dim Volume(100,100,100) as long 3 100; 100; 100
EXERCÍCIO 8:
Apresentação da instrução que atribui por meio de expressão aritmética um acréscimo
de 40% ao valor anteriormente atribuído à variável C (custo unitário das ações da
carteira que está sendo trabalhada).
Sub Ex_8_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
Dim V(8) as single
N = 2000
R = 2000
C = 5
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
V(5) = 3500
V(6) = 4000
V(7) = 4500
V(8) = 5000
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação V(8) Valores das aplicações
86 Análise de projetos de investimento
C = C + 0.4 * C
End Sub
Observação: A instrução relativa ao acréscimo de 40% no custo unitário da ação poderia
ser escrita de outras formas, por exemplo:
C = 1.4 * C ou C = C + 40/100 * C
EXERCÍCIO 9:
Teste da condição lógica necessária para a compra de ações considerando a alteração do
custo unitário das ações da carteira para R$7,00 e nenhuma outra alteração de valor.
Sub Ex_9_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
Dim V(8) as single
N = 2000
R = 2000
C = 7
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
V(5) = 3500
V(6) = 4000
V(7) = 4500
V(8) = 5000
If R > C*300 Then
N = N + 300
End if
End sub
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação V(8) Valores das aplicações
87 Análise de projetos de investimento
Conclui-se que a compra não seria realizada, pois faltariam R$100,00 para efetivá-la.
EXERCÍCIO 10:
Inclusão de instrução para atualização do valor disponibilizado pelo cliente (recursos)
após a eventual compra de ações.
Sub Ex_10_Carteira_de_Acoes
Dim N as integer
Dim R, C as single
Dim V(8) as single
N = 2000
R = 2000
C = 7
V(1) = 1500
V(2) = 2000
V(3) = 2500
V(4) = 3000
V(5) = 3500
V(6) = 4000
V(7) = 4500
V(8) = 5000
If R > C*300 Then
N = N + 300
R = R – (300*C)
End if
End sub
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira R Recursos ($) C Custo unitário da ação V(8) Valores das aplicações
88 Análise de projetos de investimento
EXERCÍCIO 11:
Duas opções de atribuição dos valores definidos para o vetor V utilizando ciclos com o
comando while.
Sub Ex_11a_Carteira_de_Acoes() Dim N, i As Integer Dim R, C As Single Dim V(8), Total As Single N = 2000 R = 2000 C = 5 V(1) = 1500 Total = 0 i = 2 While i <= 8
V(i) = V(i - 1) + 500 i = i + 1
Wend i = 1 While i <= 8
Total = Total + V(i) i = i + 1
Wend
End Sub
Sub Ex_11b_Carteira_de_Acoes()
Dim N, i As Integer
Dim R, C As Single
Dim V(8), Total As Single
N = 2000
R = 2000
C = 5
V(1) = 1500
Total = V(1)
i = 2
While i <= 8
V(i) = V(i - 1) + 500
Total = Total + V(i)
i = i + 1
Wend
End Sub
EXERCÍCIO 12:
Altere a macro do exercício 11 para que os dados do vetor V (que contém os valores das
aplicações da carteira do seu cliente) sejam lidos a partir da coluna D da planilha Ex12
(arquivo anexo).
Observações: VARIÁVEL DESCRIÇÃO N Número de ações da carteira i Contador genérico R Recursos ($) C Custo unitário da ação V(8) Valores de aplicações Total Total das aplicações
89 Análise de projetos de investimento
Sub Ex_12_Carteira_de_Acoes()
Dim N, i As Integer
Dim R, C As Single
Dim V(8), Total As Single
N = 2000
R = 2000
C = 5
Total = 0
i = 1
While i <= 8
V(i) = Worksheets("Ex12").Cells(4 + i, 4).Value
Total = Total + V(i)
i = i + 1
Wend
End Sub
EXERCÍCIO 13:
Altere a macro do exercício 12 para que o resultado armazenado na variável Total seja
exibido na célula D13 da planilha Ex13.
Sub Ex_13_Carteira_de_Acoes()
Dim N, i As Integer
Dim R, C As Single
Dim V(8), Total As Single
N = 2000
90 Análise de projetos de investimento
R = 2000
C = 5
Total = 0
i = 1
While i <= 8
V(i) = Worksheets("Ex12").Cells(4 + i, 4).Value
Total = Total + V(i)
i = i + 1
Wend
Worksheets("Ex13").Range("D13").Value = Total
End Sub