análise de projetos de investimento -...

95
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

Upload: phamtram

Post on 01-Dec-2018

219 views

Category:

Documents


0 download

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 

iv

ANEXO I 76 

ANEXO II 79 

ANEXO III 81 

ANEXO IV 82 

REFERÊNCIAS BIBLIOGRÁFICAS 91 

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

91 Análise de projetos de investimento

Referências Bibliográficas

BRASIL, Haroldo Guimarães. Avaliação moderna de investimentos. Rio de Janeiro:

Qualitymark, 2002, 1ª edição.