• Nenhum resultado encontrado

Descri¸c˜ ao do modelo e linguagem MDL

Os arquivos DERIV.CP e MODEL.CP cont´em as informa¸c˜oes que o usu´ario deve fornecer ao Critical-Point. Estes arquivos ASCII podem ser editado pelo editor MS-DOS Editor ou qualquer outro editor sem formata¸c˜ao. O arquivo MODEL.CP cont´em os nomes e informa¸c˜oes a respeito de cada ativo que podem compor o portf´olio, bem como restri¸c˜oes que o portf´olio deve obedecer. Um exemplo ´e o seguinte:

all = {TEL4,ELE6,PET4,BB4,BBD4,SCO4,CEV4,BRH4};

B.3. Descri¸c˜ao do modelo e linguagem MDL 145

#sectors

energy = {ELE6,PET4};

bank = {BB4,BBD4};

food = {SCO4,CEV4,BRH4};

state = {TEL4,ELE6,PET4,BB4};

private = ~state;

# constraints

normal: sum[all] $ ==1;

statelim: sum[state] $ <= 0.5;

statebanks= state & banks;

statebklim: sum[statebanks] $ <= 0.1;

foodsbound: sum[food] $ >= 0.2;

liquindex[all] = {1.0@TEL4,0.6@ELE6,0.5@PET4,0.4@BB4, 0.4@BBD4,0.2@SCO4,0.2@CEV4,0.3@BRH4};

liqconstr: for[all] $ <= 0.5*liquindex;

A primeira linha define o conjunto universo, isto ´e, quais s˜ao os ativos que podem compor o portf´olio.

A quarta linha define o subconjunto ou setor de energia e as linhas seguintes definem outros setores (banc´ario,alimenta¸c˜ao, estatais, privadas).

A primeira restri¸c˜ao (normal) estabelece que a soma das participa¸c˜oes de todos os ativos no portf´olio ´e igual a 1. Esta ´e a restri¸c˜ao normal que tem de estar sempre pre-sente, indicando o total a ser investido no portf´olio. Este total pode ser um n´umero de unidades monet´arias, mas geralmente ´e tomado igual a 1 ou 100 de modo que, as quanti-dades a serem investidas em cada ativo representem fra¸c˜oes da unidade ou percentuais do investimento total. O s´ımbolo “==” ´e o s´ımbolo de igualdade, n˜ao devendo ser confundido com “=”, o sinal de atribui¸c˜ao.

A segunda restri¸c˜ao determina que a soma dos investimentos nos ativos estatais ( definido como {TEL4,ELE6,PET4,BB4} ) deve ser menor ou igual a 0.5

A linha que segue a segunda restri¸c˜ao define o conjunto de bancos estatais,statebanks, contendo os ativos que pertencem aos conjuntos de bancos e de estatais. A terceira re-stri¸c˜ao estabelece que a soma dos investimentos nos bancos estatais deve ser menor ou igual a 0.1.

A restri¸c˜ao em alimenta¸c˜ao, foodsbound, determina que a soma dos investimentos neste setor deve exceder 0.2.

A ´ultima restri¸c˜ao estabelece que o investimento em cada ativo do universo n˜a deve exceder ao ´ındice de liquides definido no vetor liquindex.

Retornos Esperados e Risco

O arquivo MODPS.CP cont´em informa¸c˜oes sobre o retorno esperado de cada ativo, ao fim do per´ıodo em considera¸c˜ao no modelo, bem como o desvio padr˜ao (ou a volaatilidade, uma medida de risco) associado a este progn´ostico.

all={

TEL4,ELE6,PET4,BB4,BBD4,SCO4,CEV4,BRH4};

er[all]={

4.521883e-003@TEL4, 9.349340e-002@ELE6, 1.414101e-001@PET4, 4.441184e-002@BB4, 4.125617e-002@BBD4, 2.153917e-002@SCO4, -1.467467e-001@CEV4, 7.254108e-002@BRH4 };

std[all]={

2.105123e-001@TEL4, 3.214724e-001@ELE6, 2.988641e-001@PET4, 2.952717e-001@BB4, 2.019181e-001@BBD4, 1.709987e-001@SCO4, 2.471665e-001@CEV4, 1.866201e-001@BRH4 };

Hurst=0.50;

extrap=30;

sample=90;

O vetor er cont´em os retornos esperados, e o vetor std o desvio padr˜ao destes re-tornos. Dizemos que esperamos do ativo asseta um retorno de er[asseta], “mais ou menos”

std[asseta].

Ao escrever um n´umero decimal, n˜ao ESQUEC¸ A O ZERO ANTES DO PONTO DECIMAL.

A Linguagem de Descri¸ c˜ ao do Modelo

Vejamos em maior detalhe a linguagem MDL ou Model Description Language. Esta linguagem tem por objetivo descrever, f´acil e intuitivamente, as restri¸c˜oes que o portf´olio deve obedecer.

Nomes

Um nome v´alido ´e uma sequˆencia de letras, d´ıgitos, sublinhas, e pontos, come¸cando com uma letra, e tendo no m´aximo 15 caracteres. N˜ao ´e permitido utilizar o mesmo nome

B.3. Descri¸c˜ao do modelo e linguagem MDL 147 para dois ou mais objetos em um programa na linguagem MDL. Tamb´em n˜ao ´e permitido utilizar como nomes palavras reservadas da linguagem. As palavras reservadas s˜ao: abs, exp, for, ln, max, min, maxe, mine, print, sign, sum.

´ Indices

Os modelos tipo Markowitz constroem portf´olios ´otimos a partir de ativos dentro de um dado universo. Este conjunto de todos os ativos em considera¸c˜ao, tamb´em denominado conjunto universo, ´e o conjunto all, ou o conjunto de ´ındices do modelo. A defini¸c˜ao do conjunto universo deve ser a primeira linha em um programa MDL.

Conjuntos

Um conjunto ´e definido por uma atribui¸c˜ao constituida por:

1. O nome do conjunto

2. O s´ımbolo de atribui¸c˜ao “=”.

3. Uma lista de nomes de ativos 4. O terminador de senten¸ca “;”

Uma lista de nomes ´e constituida de:

1. O s´ımbolo de come¸co de lista, “{”,

2. Uma sequˆencia de nomes de ativos, separados por v´ırgulas.

3. O s´ımbolo de fim de lista, “}”.

Al´em de definir conjuntos pela lista de seus elementos, podemos ter conjuntos definidos por opera¸c˜oes entre outros conjuntos. Estas opera¸c˜oes s˜ao:

˜ O complemento de um dado conjunto, ´e o conjunto de todos os elementos perten-centes a all que n˜ao est˜ao presentes no conjunto.

| A uni˜ao de dois conjuntos ´e o conjunto dos elementos no primeiro, no segundo, ou em ambos os conjuntos.

& A intersec¸c˜ao de dois conjuntos ´e o conjunto dos elementos que pertencem tanto ao primeiro quanto ao segundo conjunto.

\ A diferen¸ca entre dois conjuntos ´e constitu´ıda pelos elementos que pertencem ao primeiro mas n˜ao ao segundo conjunto.

Nos exemplos seguintes definimos alguns conjuntos novos atrav´es de conjuntos pr´ e-existentes, por exemplo:

private = ~state;

statebanks = state & banks;

foodandenergy = food | energy;

A precedˆencia destes operadores ´e a mesma da aritm´etica comum: em uma dada express˜ao i.e. primeiro fazemos todas as opera¸c˜oes de complemento, depois as opera¸c˜oes de intersec¸c˜ao, e finalmente as uni˜oes e diferen¸cas. A precedˆencia de c´alculo pode ser modificada utilizando parˆenteses como sinal de pontua¸c˜ao.

Escalares

Um escalar ´e simplesmente um n´umero inteiro ou real. N´umeros inteiros s˜ao formados por uma sequˆencia de um ou mais d´ıgitos decimais: 1,2,...,9,0. Um n´umero inteiro pode ainda ser precedido de um sinal, + ou -, sem espa¸co entre o sinal e a sequˆencia de d´ıgitos.

Assim s˜ao exemplos de n´umeros inteiros: 0; -998; 754.

Um n´umero real pode ser representado em dois formatos:

Nota¸c˜ao de ponto flutuante Nota¸c˜ao de ponto fixo 1. Nota¸c˜ao de ponto fixo:

Um n´umero escrito nesta forma ´e uma sequˆencia de: um inteiro, o ponto decimal e um inteiro sem sinal.

Note que, em ponto fixo, ´e necess´ario escrever ao menos um d´ıgito, possivelmente o zero, tanto antes como depois do ponto. Note tamb´em que o separador decimal ´e o ponto, e n˜ao a v´ırgula ou qualquer outro s´ımbolo. Assim, s˜ao exemplos corretamente grafados 0.0, 37.65; -8.83, mas s˜aoincorretos os exemplos 10. ; .15 e -.88.

2. Nota¸c˜ao de ponto flutuante (cient´ıfica):

(a) Um n´umero inteiro ou um real em ponto fixo. Esta ´e a mantissa do n´umero em nota¸c˜ao cient´ıfica.

(b) A letra E, mai´uscula ou min´uscula.

B.3. Descri¸c˜ao do modelo e linguagem MDL 149 (c) Um n´umero inteiro. Este ´e o expoente do n´umero em nota¸c˜ao cient´ıfica.

O expoente do n´umero em nota¸c˜ao cient´ıfica indica de quantos d´ıgitos, para a direita ou para a esquerda, devemos deslocar o ponto na mantissa. Esta nota¸c˜ao ´e ´util para escrever n´umeros muito grandes ou muito pequenos, pois evita longas seq¨uˆencias de zeros antes ou depois do ponto. Assim, podemos representar 1000000 por 1E6, -1000000 por -1E6, 0.000001 por -1E-6 e -0.000001 por -1E-6.

Vetores Associativos

Vetores associam um valor num´erico a cada ativo. Atribui¸c˜oes a vetores s˜ao sempre re-stritas ao conjunto de dom´ınio da defini¸c˜ao que ´e indicado no lado esquerdo da atribui¸c˜ao.

Por exemplo: usando o vetor j´a definido anteriormente, temos:

std[all]={

2.105123e-001@TEL4, 3.214724e-001@ELE6, 2.988641e-001@PET4, 2.952717e-001@BB4, 2.019181e-001@BBD4, 1.709987e-001@SCO4, 2.471665e-001@CEV4, 1.866201e-001@BRH4 };

mincapt[private] = { 0.05@CEV4, 0.03@SCO4, 0.02@BBD4 };

maxmin[private] = max( minpart , mincapt );

A express˜ao<valor>@<ativo>associa o valor do vetor ao ativo.

As seguintes regras se aplicam a atribui¸c˜oes:

1- Uma atribui¸c˜ao n˜ao muda os valores de um vetor fora dos limites do dom´ınio da atribui¸c˜ao.

2- Quando o dom´ınio ´e omitido, ´e tomado como o universo, all.

3- O valor inicial de um vetor em todos os ativos ´e zero.

Podemos tamb´em atribuir valores a vetores atrav´es opera¸c˜oes aritm´eticas (adi¸c˜ao, sub-tra¸c˜ao, produto, divis˜ao e exponencia¸c˜ao entre dois vetores. As opera¸c˜oes s˜ao calculadas para cada posi¸c˜ao, isto ´e, elemento a elemento. Por exemplo, ap´os a atribui¸c˜ao

example[private] = std*er;

os valores dos elementos do vetor example nas posi¸c˜oes correspondentes `as empresas pri-vadas ´estd*er;e os valores em outros elementos permanecem inalterados ou nulos (caso seja a primeira atribui¸c˜ao ao vetor).

Podemos tamb´em realizar opera¸c˜oes aritm´eticas entre escalares e vetores. Neste caso o escalar ´e interpretado como um vetor constante.

Exemplo:

er3[a]=er*3 # cada elemento de p que pertence ao subconjunto a

# eh multiplicado por tres e armazenado em p3

Finalmente, podemos acessar e modificar o valor de um vetor em um particular ativo.

Por exemplo: std[CEV4]=0.55;

Fun¸ c˜ oes Escalares

As fun¸c˜oes logar´ıtmo, ln(), exponencial, exp(), valor absoluto, abs(), sinal, sign(), maior elemento maxe(), menor elemento mine() e soma interna sum() podem ser aplicadas a escalares e vetores. Assim como express˜oes aritm´eticas, estas fun¸c˜oes s˜ao aplicadas a cada elemento de um vetor. Por exemplo:

lner[a] = ln(er);

As fun¸c˜oes m´aximo e m´ınimo podem ser calculadas em pares de escalares ou vetores.

Estas fun¸c˜oes tamb´em s˜ao calculadas pontualmente quando assumem argumentos que s˜ao vetores. Por exemplo:

a1={1@AA, 2@BB, 3@DD}; # zero@CC is implicit b1={5@BB, 1@DD};

c1=max(a1, b1);

# c1 is {1@AA, 5@BB, 0@CC, 3@DD};

Restri¸ c˜ oes

As restri¸c˜oes do problema definem as condi¸c˜oes a serem satisfeitas pelo portf´olio. A primeira restri¸c˜ao, imprescind´ıvel, ´e a condi¸c˜ao de normaliza¸c˜ao:

normal: sum[all] $ == 1;

Ela indica a quantidade total a ser investida no portf´olio, que em geral ´e tomada como 1 ou 100, de forma que a composi¸c˜ao de portf´olio selecionada aparece como fra¸c˜oes da unidade ou por fra¸c˜ao percentual. S˜ao as vari´aveis de decis˜ao do modelo, representando

B.4. Modelo de Markowitz 151