1
Econometria
UFRRJ
16
Econometria
UFRRJ
1
Econometria
UFRRJ
24
Econometria
UFRRJ
17
Econometria
UFRRJ
35
Econometria
UFRRJ
15
Econometria
UFRRJ
11
Econometria
UFRRJ
2
Econometria
UFRRJ
17
Econometria
UFRRJ
Texto de pré-visualização
INTRODUÇÃO AO PYHTONJUPYTER AULA 2 PYTHON OBJETOS Uma característica importante da linguagem Python é a consistência de seus modelo de objetos Todo número strings estrutura de dados função classe modulo etc tem sua própria caixa de interpretação no Python Todo Objeto tem um tipo associadoex strings ou função e dados internos Isso torna a linguagem mais flexível na prática pois mesmo as funções podem ser tratadas como qualquer outro objeto PYTHON FUNÇÃO COM PARÂMETROS Como mencionado anteriormente o comando DEF habilita o comando de descrição de uma função Portanto Ex NOME DA FUNÇÃO PARÂMETRO CORPO DA FUNÇÃO INPUT FX RETURN OUTPUT X X 2 Y PYTHON FUNÇÃO DENTRO DA FUNÇÃO wage whours Função de saláriohora return whours 25 retorna ao valor pago por hora withbonus whours definição da nova função de acordo com saláriohora return wage whours 50 retorna diretamente o saláriohora Bônus wage8 withbonus8 nº de horas trabalhadas Logo wage 8 25 200 W bonus 200 50 250 FUNÇÃO DENTRO DA FUNÇÃO PYTHON COMBINAÇÃO CONDICIONAL E FUNÇÕES John poupa US100 e ganha US10 John poupa US100 e ganha US0 m dinheiro poupado atribuição PYTHON MAIS DE UM PARÂMETRO NA FUNÇÃO Para este objetivo é preciso colocar todos os argumentos dentro dos parênteses separados por uma vírgula Vejamos na sequência PYTHON FUNÇÕES NATIVASINTERNAS TYPE Obtém o tipo de variável que você usa como argumento MAX Obtém o maior valor de uma sequência de números MIN Obtém o menor valor de uma sequência de números ABS Permite que você obtenha o valor absoluto do seu argumento Vejamos exemplos na sequência PYTHON f 01234 printmaxf 4 printminf 0 printtypef class tuple z 10 absz 10 PYTHON SUM Calcula a soma de todos os elementos em uma lista designada como argumento ROUND retorna o float do argumento x arredondado para um nº específico de dígitos y depois casa decimal POW Potenciação pow x y retorna x elevado à potência de y LEN Retorna o nº de elementos em um objeto ou seja quantos elementos há PYTHON List 123456 sumList 21 round367825 3678 pow23 8 pow32 9 lenEconomia 8 PYTHON LISTAS São sequências de dados nº inteiros frações ou texto Colocar as strings valores de texto composto de caracteres dentro de e também do uso de aspas Criação da Lista segue 1 Ressaltar nome da Lista Ou seja Acessar a lista indexando valor 1 extrair o 2º dos elementos nessa variável lista PYTHON 2 Ressaltando o último elemento da Lista Devemos começar contando do final até o começo party G L B L 4 3 2 1 PYTHON 3 Substituir na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise party1 Bia party Gabriel Bia Bruno Louise PYTHON 4 Deletar na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise del party2 party Gabriel Bia Louise PYTHON 5 Adicionar na lista Append é um método do Python ou seja está pronto para ser usado e não precisa ser criado PYTHON 6 Estender Lista Extend também é um método do Python ou seja está pronto para ser usado e não precisa ser criado Portanto após o objeto lista party colocase o ponto final que é um operador que serve para chamar uma determinada função ou método presente no Python PYTHON 7 Identificação na lista PYTHON SLICING FATIAMENTO DE DADOS Serve para lidar com problemas em uma parte dos dados grandes bancos de dados Voltando a lista Party Para o fatiamento 1ª posição de interesse Posição acima da que precisamos Por isso digitamos 3 ao invés de 2 PYTHON Slicing Extração A Extraindo os dois primeiros em Party B Extraindo os dois últimos em Party PYTHON INDEXADOR INDEX MÉTODO Índice de Elemento Serve para quando você não sabe a posição do elemento em uma lista por exemplo PYTHON LISTAS DE LISTAS É um agregador de listas ou seja podemos criar uma lista dentro de outra lista Ex i Nova lista terá mais 2 participantes que chamaremos de newlist ii lista final será chamada de Bigger party newlist Fazendo a lista consolidada PYTHON ORDENAR SORT MÉTODO classifica os objetos da lista em por exemplo ordem alfabética ordem de grandeza etc PYTHON ORDENAMENTO INVERSO partysortreverse True party Louise Lia Gabriel Felipe Bruno Bia numberlist 03571426 numberlist 0 3 5 7 1 4 2 6 numberlistsort numberlist 0 1 2 3 4 5 6 7 numberlistsortreverseTrue numberlist 7 6 5 4 3 2 1 0 TUPLAS São um tipo de sequência de dados São imutáveis Ñ pode acrescentar ou excluir elementos Elementos são colocados em parênteses ao invés de colchetes Pyhton PYTHON Para colocar tuplas dentro de listas fazemos o comando PYTHON Com as tuplas podemos associar variáveis à valores por exemplo Chamamos isso de atribuição de tuplas PYTHON Tuplas com SPLIT retorna a uma lista de strings úteis para lidar com diferentes valores separados por vírgulas Ex Temos variáveis idade e anos de escola e eu tenho os respectivos números em um formato de string separados por uma vírgula daí o nome valores separados por vírgulas O método SPLIT com a indicação de uma vírgula dentro dos parênteses Atribuirá 30 como valor para idade e 17 como valor para anos de escola PYTHON Tuplas como retorno de uma função Útil porque uma função que só pode retornar um valor único pode produzir uma tupla contendo múltiplos valores Ex Área e perímetro de um quadrado PYTHON DICIONÁRIOS Representam outra maneira de armazenar os dados Cada valor está associado a uma determinada chave ou seja Uma chave em seu respectivo valor formam as chaves valores Usase para representação PYTHON Cada nome está associado a um identificador na chave Logo após a criação do dicionário podemos acessar qualquer valor dentro dele Par Chave Valor PYTHON Adição no Dicionário Vamos incluir um elemento adicional no Dicionário assim como ocorre em tuplas e listas Substituição no Dicionário Podese igualmente substituir elementos no dicionário PYTHON I Preencher no Dicionário Uma lista pode ser usada em um par de chavevalores No exemplo Lista dentro do Dicionário PYTHON II Preencher no Dicionário Há outra maneira de preencher um Dicionário 1 Criase uma nova variável usando chaves vazias para indicar que será um dicionário 2 Não se coloca nenhuma chave ou valores dentro das chaves 3 Atribuímos as chaves e os valores um a um e 4 No final o dicionário estará preenchido PYTHON Método GET GET busca de argumento Exemplo Entretanto se tentarmos buscar um elementos que não existem None é o valor padrão que o Python retorna nos casos em que um objeto não existe PYTHON Resumindo Listas Tuplas Dicionário PyhtonJupyter Pacotes de Finanças Arrays Bibliotecas de Finanças Neste tópico serão apresentados alguns pacotes biblioteca do Python O 1º deles será o Numpy Pacote criados por programadores que permite você a operar com Matrizes ou Arrays multidimensionais Arrays são organizam e processam volumosa quantidade de dados Pandas é um pacote que aprimora o Numpy e tem como vantagens 1 Organiza dados em tabela e anexar rótulos em linhas e colunas algo que não ocorre no Numpy puramente 2 Possui ferramentas com diversos formatos de dados e dados faltantes 3 Trabalha naturalmente com séries temporais e bancos de dados Bibliotecas de Finanças Matplotlib biblioteca de gráficos 2D projetada para visualização de cálculos NumPy NumPy Pandas e Matplotlib são partes de um grupo maior de bibliotecas o SciPy que chamamos de Ecossistema do Pyhton com diversas ferramentas de IA Machine Learning etc Bibliotecas de Finanças Random Permite trabalhar com geradores de números aleatórios Statsmodels Contém lista de funções de estatística descritiva gráficos regressões etc Bibliotecas de Finanças Devemos notar que nem todos os módulos e pacotes do Pyhton são importados diretamente Quando instalamos o Anaconda os import feitos já estão incluídos no pacote Por isso que você não precisa instalálos separadamente Mas se não estiverem Como instalar um pacote se você não o tem no seu computador Bibliotecas de Finanças Pandas permite acessar além de funções pré existentes extensões Por exemplo o pandasdatareader Como Instalálo Bibliotecas de Finanças 1 Menu Iniciar e prompt do Anaconda 2 Digitar pip install pandasdata reader e dê Enter Arrays Arrays Conjunto de estrutura de dados Semelhantes as listas pois representam objetos Elementos do Array são os objetos do Array Diferenças Array x Listas Array Só pode conter dados do mesmo tipo exemplo todos os dados devem ser int Listas podem ter diferentes tipos Arrays Criando um Array 1 Importe o Numpy em nomenclatura convencional np 2 Atribuise um Array Numpy para uma variável a 3 Entre parênteses escrevemos uma lista de listas 4 A primeira será composta de valores de 0 a 3 e a outra de 4 a 7 a é um Array em que as duas listas são mostradas uma acima da outra Arrays Atenção O Array NumPy ndimensional é referido como um array nd Sempre homogêneo isto é todos os blocos devem ser do mesmo tipo de dados Indicação de erro com tipo de dado Indicação de erro se eu acrescentar um dado Portanto devemos 1 Organizar Arrays com o mesmo número de elementos e 2 Esses elementos sejam do mesmo tipo de dados Arrays Sintaxe do Array Considere que Array é uma função A estrutura é idêntica à de métodos de uma determinada classe Porém NumPy não é apenas uma classe é um pacote vários módulos e cada um contendo suas próprias classes Portanto nparray modo de usar uma função de Array array retorna a uma estrutura de dados na forma Array NumPy Arrays Para verificar a forma do Array no exemplo original basta digitar Linhas Colunas Arrays Acessando valores num Array devemos digitar L0 C0 C1 C2 C3 L1 Arrays Alterando valor um Array basta digitar o exposto na sequência para substituir o elemento desejado L1 C3 Arrays Extraindo linhas no Array In 20 a0 Out20 array0 1 2 3 In 24 a1 Out24 array 4 5 6 10 Arrays Importância do uso do Array Estrutura de dados que organiza valores em vetores e matrizes multidimensionais Exemplo Espaço vetorial Vetor X tem magnitude e direção 6 12 O Python descreve o vetor como um array NumPy de uma única lista com elementos Usando da analogia de álgebra linear descrevemos 1D ARRAY VETOR 2D ARRAY MATRIX SLIDE COM IMAGEM GRANDE Lorem ipsum dolor sit amet consectetuer adipiscing elit 17 IMPORTAÇÃO II FORMAÇÃO DE CARTEIRA IMPORTAÇÃO Para as ações BR o Yahoo designa SA ao final do ticker da ação Portanto ficamos com os seguintes códigos para as ações da WEG Bradesco Engie e Fleury respectivamente WEGE3SA BBDC3SA EGIE3SA FLRY3SA Montaremos um portifólio de ações selecionadas calculando 1 A taxa de retorno do portfólio 2 Taxa de retorno esperada do Portfólio IMPORTAÇÃO 1º passo instalar a biblioteca do Yahoo 2º passo importação dos pacotes pip install yfinance upgrade nocachedir IMPORTAÇÃO Vamos construir um portfolio com carteira de ações brasileiras Download da base Yahoo Precisamos agora fazer a normalização dos dados para termos a referência correta IMPORTAÇÃO A normalização serve para termos referência na nossa base de dados Vejamos o histórico de preços das ações selecionadas IMPORTAÇÃO A normalização dos valores faz a seguinte conta 𝑷𝒕 𝑷𝟎 𝟏𝟎𝟎 iloc0 extrai os dados da 1a linha inicial dos dados iloc201551 extrai data específica Portanto vamos usar a função iloc0 para criar a normalização IMPORTAÇÃO Escrevendo o comando usando a função iloc0 para portfolioBR temos os dador normalizados IMPORTAÇÃO Graficamente temos In 21 portfolioBRportfolioBRiloc0100plotfigsize 146 Out21 matplotlibaxessubplotsAxesSubplot at 0x1c684c3e048 IMPORTAÇÃO Comparando os gráficos sem e com normalização IMPORTAÇÃO Calculo do retorno de um portfólio de ações Ao realizar o comando ao lado verificamos que não temos o retorno do portifólio com as 4 ações selecionadas mas os retornos diários históricos de cada ativos selecionado IMPORTAÇÃO Para calcular o retorno do portfolio como um todo é necessário montar os pesos relativos de cada ativo no portfolio Para tal realizamos o comando Array da biblioteca do Numpy npdot calcula o produto de um vetor ou matriz e o resultado é um escalar Permite calcular o produto do peso no nosso caso 25 para cada ativo de cada ação pelo seu retorno isto é uma multiplicação de matrizes Porém esta rotina te dá uma matriz Isso ocorre pois multiplicamos cada valor da tabela com os respectivos retornos e pesos IMPORTAÇÃO Gostaríamos de um único nº e não uma matriz Portanto devemos estimar o retorno médio anual do preço de cada ação Executando o comando na sequência patribuir o retorno médio de cada ação da carteira IMPORTAÇÃO Logo para estimar o produto do retorno das ações ou seja verificar o retorno médio ponderado do portfolio das ações selecionadas executamos IMPORTAÇÃO Mudanças de peso na carteira WEGE3SA 40 BBDC3SA 40 EGIE3SA 15 FLRY3SA 15 IMPORTAÇÃO PortfolioBR x Ibovespa O seu Portfolio não é o Ibovespa Código po Índice Bovespa BVSP IMPORTAÇÃO Executando a Normalização IMPORTAÇÃO Graficamente o comportamento das ações selecionadas versus Ibovespa INTRODUÇÃO AO PYHTONJUPYTER AULA 2 PYTHON OBJETOS Uma característica importante da linguagem Python é a consistência de seus modelo de objetos Todo número strings estrutura de dados função classe modulo etc tem sua própria caixa de interpretação no Python Todo Objeto tem um tipo associadoex strings ou função e dados internos Isso torna a linguagem mais flexível na prática pois mesmo as funções podem ser tratadas como qualquer outro objeto PYTHON FUNÇÃO COM PARÂMETROS Como mencionado anteriormente o comando DEF habilita o comando de descrição de uma função Portanto Ex NOME DA FUNÇÃO PARÂMETRO CORPO DA FUNÇÃO INPUT FX RETURN OUTPUT X X 2 Y PYTHON FUNÇÃO DENTRO DA FUNÇÃO wage whours Função de saláriohora return whours 25 retorna ao valor pago por hora withbonus whours definição da nova função de acordo com saláriohora return wage whours 50 retorna diretamente o saláriohora Bônus wage8 withbonus8 nº de horas trabalhadas Logo wage 8 25 200 W bonus 200 50 250 FUNÇÃO DENTRO DA FUNÇÃO PYTHON COMBINAÇÃO CONDICIONAL E FUNÇÕES John poupa US100 e ganha US10 John poupa US100 e ganha US0 m dinheiro poupado atribuição PYTHON MAIS DE UM PARÂMETRO NA FUNÇÃO Para este objetivo é preciso colocar todos os argumentos dentro dos parênteses separados por uma vírgula Vejamos na sequência PYTHON FUNÇÕES NATIVASINTERNAS TYPE Obtém o tipo de variável que você usa como argumento MAX Obtém o maior valor de uma sequência de números MIN Obtém o menor valor de uma sequência de números ABS Permite que você obtenha o valor absoluto do seu argumento Vejamos exemplos na sequência PYTHON f 01234 printmaxf 4 printminf 0 printtypef class tuple z 10 absz 10 PYTHON SUM Calcula a soma de todos os elementos em uma lista designada como argumento ROUND retorna o float do argumento x arredondado para um nº específico de dígitos y depois casa decimal POW Potenciação pow x y retorna x elevado à potência de y LEN Retorna o nº de elementos em um objeto ou seja quantos elementos há PYTHON List 123456 sumList 21 round367825 3678 pow23 8 pow32 9 lenEconomia 8 PYTHON LISTAS São sequências de dados nº inteiros frações ou texto Colocar as strings valores de texto composto de caracteres dentro de e também do uso de aspas Criação da Lista segue 1 Ressaltar nome da Lista Ou seja Acessar a lista indexando valor 1 extrair o 2º dos elementos nessa variável lista PYTHON 2 Ressaltando o último elemento da Lista Devemos começar contando do final até o começo party G L B L 4 3 2 1 PYTHON 3 Substituir na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise party1 Bia party Gabriel Bia Bruno Louise PYTHON 4 Deletar na lista PYTHON 5 Adicionar na lista Append é um método do Python ou seja está pronto para ser usado e não precisa ser criado PYTHON 6 Estender Lista Extend também é um método do Python ou seja está pronto para ser usado e não precisa ser criado Portanto após o objeto lista party colocase o ponto final que é um operador que serve para chamar uma determinada função ou método presente no Python PYTHON 7 Identificação na lista PYTHON SLICING FATIAMENTO DE DADOS Serve para lidar com problemas em uma parte dos dados grandes bancos de dados Voltando a lista Party Para o fatiamento 1ª posição de interesse Posição acima da que precisamos Por isso digitamos 3 ao invés de 2 PYTHON Slicing Extração A Extraindo os dois primeiros em Party B Extraindo os dois últimos em Party PYTHON INDEXADOR INDEX MÉTODO Índice de Elemento Serve para quando você não sabe a posição do elemento em uma lista por exemplo PYTHON LISTAS DE LISTAS É um agregador de listas ou seja podemos criar uma lista dentro de outra lista Ex i Nova lista terá mais 2 participantes que chamaremos de newlist ii lista final será chamada de Bigger party newlist Fazendo a lista consolidada PYTHON ORDENAR SORT MÉTODO classifica os objetos da lista em por exemplo ordem alfabética ordem de grandeza etc PYTHON ORDENAMENTO INVERSO TUPLAS São um tipo de sequência de dados São imutáveis Ñ pode acrescentar ou excluir elementos Elementos são colocados em parênteses ao invés de colchetes Pyhton PYTHON Para colocar tuplas dentro de listas fazemos o comando PYTHON Com as tuplas podemos associar variáveis à valores por exemplo Chamamos isso de atribuição de tuplas PYTHON Tuplas com SPLIT retorna a uma lista de strings úteis para lidar com diferentes valores separados por vírgulas Ex Temos variáveis idade e anos de escola e eu tenho os respectivos números em um formato de string separados por uma vírgula daí o nome valores separados por vírgulas O método SPLIT com a indicação de uma vírgula dentro dos parênteses Atribuirá 30 como valor para idade e 17 como valor para anos de escola PYTHON Tuplas como retorno de uma função Útil porque uma função que só pode retornar um valor único pode produzir uma tupla contendo múltiplos valores Ex Área e perímetro de um quadrado PYTHON DICIONÁRIOS Representam outra maneira de armazenar os dados Cada valor está associado a uma determinada chave ou seja Uma chave em seu respectivo valor formam as chaves valores Usase para representação PYTHON Cada nome está associado a um identificador na chave Logo após a criação do dicionário podemos acessar qualquer valor dentro dele Par Chave Valor PYTHON Adição no Dicionário Vamos incluir um elemento adicional no Dicionário assim como ocorre em tuplas e listas Substituição no Dicionário Podese igualmente substituir elementos no dicionário PYTHON I Preencher no Dicionário Uma lista pode ser usada em um par de chavevalores No exemplo Lista dentro do Dicionário PYTHON II Preencher no Dicionário Há outra maneira de preencher um Dicionário 1 Criase uma nova variável usando chaves vazias para indicar que será um dicionário 2 Não se coloca nenhuma chave ou valores dentro das chaves 3 Atribuímos as chaves e os valores um a um e 4 No final o dicionário estará preenchido PYTHON Método GET GET busca de argumento Exemplo Entretanto se tentarmos buscar um elementos que não existem None é o valor padrão que o Python retorna nos casos em que um objeto não existe PYTHON Resumindo Listas Tuplas Dicionário Roteiro Avaliação 1 Econometria 1 Escrever um relatório com no máximo 15 páginas word ou pdf 2 Iniciar com pequena introdução sobre as variáveis escolhidas e o objetivo 3 Escolher no mínimo 3 variáveis para analisar 4 Projetos em duplas 5 Usar somente uma das variáveis usadas nos scripts de aula e buscar outras de sua escolha 6 Analisar e interpretar os parâmetros dos modelos com R² Teste F e pvalue significância estatística individual 7 Análise econômica do modelo criado pela dupla Gerar os modelos 1 Regressão linear simples c variáveis no nível originais 2 Regressão linear simples em SemiLog 3 Regressão linear simples em LogLog 4 Regressão múltipla c variáveis no nível originais 5 Regressão múltipla em SemiLog 6 Regressão múltipla em LogLog Obs Não é necessário colocar as linhas inteiras de programação no projeto somente os resultados Gráficos são opcionais Entrega 190925 por email Importação e Organização de Dados Pacote Pandas e Numpy Importação Foco Pacote PandasNumpy pandasSeries fornece um conjunto de observações de uma única variável ou única coluna de dados Função random do NumPy cria 5 números aleatórios Column 1 Atribui nome a coluna Importação Podese pensar em um objeto da Series como um dicionário cujos itens são do mesmo tipo de dados índices de linhas Acesse um dos elementos por meio de seu índice da mesma forma que faria com um dicionário Importação pandasDataFrame Análogo ao Series porém contém várias colunasalém das linhas pandasDataFrame Instalação do pandas data reader I No próprio Jupyter digitar conda install c anaconda pandasdatareader Instalação do pandas data reader II Anaconda Environments Not Installed Verificar e instalar Importação Agora vamos trabalhar analisando dos dados do Banco JP Morgan Ticker JPM 1º passo importar os dados do pacote Pandasdata reader já instalados wb é o convencional de web Importação 3º passo fazer as importações Pandas e Numpy Já descrevemos antes Yahoo Finance Para buscar os dados matplotlibpyplot Coleção de funções que permite trabalhar com gráficos 2º passo instalar a biblioteca do Yahoo Finance Importação 2º passo descrever A função Data Reader para os dados do JPM desde 199611 formato EUA em que a fonte é o Yahoo Finance Ticker Fonte dos dados Descrição dos Tickers a serem baixados L0 L1 L2 ADJ Close preço de ajustamento fechado da ação Inicio da série Close Adj Close Final da série Close Adj Close Motivo Dividendos Split ou Inplit Aumento de capital Importação Como descrevemos somente nos interessa o preço de fechamento ajustado da ação ou seja Adj Close Importação O Python lhe permite analisar a base de dados com maior clareza Por exemplo com os métodos info informa que estamos examinando um objeto de dataframe quantos dados existem na tabela e o intervalo de tempo Importação head informa o inicio da base de dados 5 primeiros tail informa o final da base de dados 5 últimos Acima é a norma padrão Porém se head20 mostra os 20 primeiros tail10 mostra os 10 últimos Importação Para o gráfico da cotação de preços AJD Close de JP Morgan JPM digitamos JPMplotfigsize Horz Vert Importação Tx Rtn Simples preferida por lidar melhor com vários ativos ao longo do tempo mesmo período de tempo comparativo Calculo da Taxa de Retorno 𝑹𝒕𝒏𝒔𝒎𝒑 𝑷𝟏 𝑷𝟎 𝑷𝟎 𝑷𝟏 𝑷𝟎 𝟏 Tx Rtn Log Preferido quando se faz cálculo sobre um único ativo ao longo do tempo 𝑹𝒕𝒏𝒍𝒐𝒈 𝒍𝒐𝒈 𝑷𝟏 𝒍𝒐𝒈𝑷𝟎 Importação Cálculo da Tx de Rtn Smp Comando shift1 indica variação diária Importação Plotando o gráfico de retornos simples de JPM Importação No entanto o interesse do investidor é determinar a taxa média de retorno no longo prazo Para isso calculamos 1 Taxa média de retorno diária 2 Taxa média de retorno anualizada Para exibir o valor em digitamos os comandos str e round Qtde de números p apresentar no Output Importação Plotando o gráfico de retornos simples de JPM Importação Cálculo da Tx de Rtn Log No Logrtn não precisamos do 1 após o shift1 Importação Os mesmos interesses de longo prazo teremos nos retornos em log de JPM Importação Plotando o gráfico de retornos log de JPM Importação A próxima tarefa é montar uma conjunto de dados de 4 colunas mostrando os AJD Close de 4 empresas JP Morgan JPM Apple AAPL Microsoft MSFT Coca Cola KO Importação Agora precisamos Normalizar os dados Sem a normalização ficamos sem referência pois os preços por si só não dão a melhor referencia na representação gráfica Normalização 𝑷𝟏 𝑷𝟎 𝟏𝟎𝟎 nameiloc0 extrai os dados da 1a linha inicial dos dados ou iloc200011 data específica Importação Gráfico de valores normalizados Importação Gráfico de Preços Valores não normalizados PyhtonJupyter Geração de números Aleatórios 27072021 Análise Anual 2 A geração de números aleatórios tem como objetivo simular cenários sob condições de incerteza Quando uma base de dados é insuficiente para se trabalhar esse tipo de função pode ajudar consideravelmente nesta tarefa Random 27072021 Análise Anual 3 O 1º passo import o módulo Random A função randomrandom irá gerar um float aleatório no intervalo de 0 1 incluindo o 0 e excluindo o 1 Random 27072021 Análise Anual 4 Outro gerador aleatório é a função randint Randomrandit gera aleatoriamente um valor inteiro sobre um intervalo determinado Random Intervalo entre 1 e 10 Número gerado aleatoriamente no intervalo determinado 27072021 Análise Anual 5 Como preencher um Array com valores O array vem da biblioteca NumPy Logo devemos import NumPy e escrever a sintaxe a seguir Random Colunas Linhas Anexa randomrandint à biblioteca NumPy Fornece um 3º parâmetro a função randint tamanho da matrix 27072021 Análise Anual 6 Dados Financeiros em Python A captação de dados tem origem em duas fonte básicas Servidor da web ou Computador Na prática para acessar dados armazenados em um servidor web você vai precisar conectar a respectiva API Application Programming Interface Random 27072021 Análise Anual 7 API Interface de programação de aplicativos ou fontes de dados financeiros Random fonte paga fonte paga Cadastrar conta p acesso 27072021 Análise Anual 8 Para a criação de conta no QuandL Random 27072021 Análise Anual 9 Pandas datareader módulo que vai ajudar você a baixar dados dessas fontes online e a preparalos para análises Principalmente Yahoo QuandL e α vantage Random 27072021 Análise Anual 10 Para os dados em computador analista precisa saber como trabalhar é o formato csv comma separated values Random Dados on line Dados CSV vantagens Atualizados diariamente Basta ter armazenado no HD desvantagens Precisa de conexão Podem parar de funcionar por períodos de tempo indeterminados determinada API pode conter apenas parte dos dados para uma análise financeira Nem sempre atualizados o que pode prejudicar a analise financeira quando o critério é analisar períodos mais longos ou atuais 27072021 Análise Anual 11 No entanto o foco do curso está em saber programar corretamente mesmo que algumas bases de dados não sejam atuais Logo organizar e minerar os dados é uma tarefa tão importante quanto as análises Random PythonJupyter PROGRAMAÇÃO ORIENTADA E IMPORTAÇÃO Programação Orientada a Objetos POO Prérequisito para o conceito de módulos Todo valor em Python é considerado um objeto Objeto Números inteiros Listas Strings Dicionários POO é o conceito de interação com um ou mais objetos POO Por isso podemos modelar uma série de dados por exemplo do número de aviões que decolam todos os dias de um determinado aeroporto em um específico período Objeto Dados Manipulações de Operações POO Classes CLASSE OBJETO ATRIBUTOS Cada objeto pertence a alguma classe que define as regras para criar esse objeto Podese anexar um certo número de atributos no objeto POO Exemplo Classe Montadora de carros Objeto Veículo da Classe Montadora de carros Atributos Pickup Vermelho CES Sensor de Estacionamento Método Resultado de uma sequência lógica aplicada ao objeto Acelerar Frear Manobrar POO Exemplo 2 Classe List do Python que pode conter vários tipos de dados Atributo o tipo de dados contidos nela Método index Ou seja é aquilo que podemos aplicar no objeto Objeto Lista de Números inteiros dos voos em Dezembro POO Devemos destacar que 1 Essas operações só podem ser executadas após a criação do objeto 2 Não podem ser confundidas com funções apesar da semelhança Método Pode ter inúmeros parâmetros Método pode ter muitos parâmetros de vários tipos de dados Uma função existe por conta própria Um método pertence a uma determinada classe função objetométodo O método irá conter o objeto list str dict que será usado com um deles Se a GM não produzir a pickup não haverá método manobrar por exemplo para ser executado Um dos parâmetros do método Manobrar deve ser um objeto da pickup Para evitar confusão entre os termos método e função a sintaxe do Python é diferente para cada situação Ex voosdezindex O nome do método não acompanha parênteses Ele vem após o nome do objeto a ser usado incluindo o ponto POO Módulos e Pacotes Módulos Código préescrito contendo definições de variáveis funções e classes Carrega todos os novos programas sem a necessidade de reescrever o código manualmente sempre que iniciarmos um novo programa Módulos CLASSEA CLASSEB CLASSEC LISTX FUNÇÃO1 FUNÇÃO2 POO Módulos e Pacotes Pacotes Biblioteca Coleção ou diretório de módulos relacionados do Python Você pode criar seus próprios módulos ou pacotes Pacotes Módulo1 Módulo2 Módulo3 Ao longo do tempo desenvolvedores criaram pacotes que podem ser feitos downloads Há pacotes para downloads de áreas específicas POO Pacotes Biblioteca A partir do momento que você instala o Python sua biblioteca padrão já possui uma coleção de módulos padrão disponíveis Exemplo Funções Nativas funções já disponíveis assim que você instala o programa As funções nativas Len Round e Pow são por exemplo funções não são necessárias escrever seus códigos manualmenteidem para os métodos por exemplo sort extend append index etc Portanto além dos pacotes presentes originalmente no Python só necessário baixar os pacotes que são necessários para seu objetivo POO IMPORTAÇÃO Importação de módulos 4 maneiras Alguns já estão dentro do Pyhton outros não POO Módulo MATH 1º Modo Ex Função Nativa de Math sqrt calcula a raiz quadrada de um argumento não faz parte da biblioteca padrão do Pyhton Importação do módulo Math Nome do módulo Função de Interesse Argumento POO 2º Modo 3º Modo Omite o nome do módulo e o operador ponto Forma muito usada por programadores Em códigos mais complexos a linguagem mais sintética economiza tempo computacional POO 4º Modo O menos recomendado Todos os recursos de Math funções classes ou métodos serão importados Essa importação pode ser problemática para o Python em algumas situações Suponha que você importou tudo de math Depois importou um segundo módulo que contém uma função sqrt O Python escolherá uma das duas funções mas você não poderá selecionar aquela que deve ser aplicada POO IMPORTAÇÃO Acesso aos recursos do Math PythonJupyter REGRESSÃO C DADOS DO SGS BACEN Analise de Regressão O primeiro passo é acesso a base ao API do Sistema Gerador de Séries SGS do Bacen para acessar a URL padrão conforme a sequência abaixo Regressão 433 27841 IPCA M 1 httpswww3bcbgovbrsgspublocalizarserieslocalizarSeriesdomethodpre pararTelaLocalizarSeries Regressão Vamos importar as bibliotecas módulos e pacote pertinentes panálise Além dos tradicionais Pandas Numpy e Matplotlib importaremos também Seaborn biblioteca de visualização de dados do Python baseado no Matplotlib Ele fornece uma interface gráfica de alto nível para gráficos estatísticos mais informativos Statsmodels Módulo do Python que fornece classes e funções para estimar diferentes modelos estatísticos Stats do Scipy Módulo que contém uma ampla gama de distribuições de PBDD função de correlação testes estatísticos etc Comando para definir previamente o tamanho dos gráficos Regressão Após as importações você pode colar a URL do SGS que possui formato json no seu Jupyter e pedir para o método read do Pandas digitando pdreadjsonurl No exemplo com dados do INPC cód16121 Regressão Para não ficar copiando diferentes URLs para cada dado a ser buscado podese montar uma configuração geral de busca via códigos 1 Definição da função consultabc via def nome da strings dentro do parênteses 2 URL Bacen Usamos para inserir formato vazio ou genérico e formatcodigobcb O format serve basicamente para criar uma string que contém campos entre chaves que são substituidos pelos argumentos de format Portanto repare que os campos de substituição na string que estão entre chaves estão associadas aos parâmetros do método format 3 Dataframe do Pandas ler os dados da URL 4 A coluna data do SGS está no formato original DMA Usamos o método Pandas todatetime ptransformar em AMD 5 dfsetindex Define a coluna data como index 0123 e usamos inplace True se quisermos confirmar as alterações no dataframe 6 Return função retorna ao df Regressão Agora basta confirmar a busca via códigos Regressão Vimos que muitos dados iniciam sua base em momentos distintos Por isso precisamos indexar para mesma base Abrimos um DataFrame vazio M1index0 indexa os dados para a série de início mais recente no caso M1 A partir disso todos os dados são indexados para iniciar a partir de startdate usando a função loc Regressão Regressão Simples Construindo as variáveis Plotandoas graficamente axis x y definição do tamanho dos eixos x e y Scatterxy plotagem em pontos xlabel x Marcação de qual variável vai no eixo x ylabel y Marcação de qual variável vai no eixo y show plotar Regressão Comandos pEstimação Método do statsmodels que forma a constante fit método estatístico de ajuste do modelo Atribui valor a regressão por OLS Regressão Quadro de resultados da Regressão Regressão Regressão Múltipla columnstack agrupamento de colunas Formação da constante Regressão Resultados Regressão Correlações Matriz deVarCov Regressão Regressão em Log nplog método Numpy para transformar todo o vetor M1 em log Regressão Regressão em Log In 235 1 x npcolumnstackx1 x2 x3 2 x smaddconstantx 3 reg3 smOLSyxfit 4 reg3summary OLS Regression Results Dep Variable M1 Rsquared 0943 Model OLS Adj Rsquared 0942 Method Least Squares Fstatistic 1267 Date Tue 20 Jul 2021 Prob Fstatistic 110e142 Time 114704 LogLikelihood 15136 No Observations 234 AIC 2947 Df Residuals 230 BIC 2809 Df Model 3 Covariance Type nonrobust coef std err t Pt 0025 0975 const 07265 0057 12787 0000 0615 0838 x1 02539 0009 29326 0000 0237 0271 x2 00037 0014 0256 0798 0025 0032 x3 05469 0047 11532 0000 0640 0453 Omnibus 23229 DurbinWatson 0132 ProbOmnibus 0000 JarqueBera JB 27666 Skew 0839 ProbJB 983e07 Kurtosis 3140 Cond No 335
1
Econometria
UFRRJ
16
Econometria
UFRRJ
1
Econometria
UFRRJ
24
Econometria
UFRRJ
17
Econometria
UFRRJ
35
Econometria
UFRRJ
15
Econometria
UFRRJ
11
Econometria
UFRRJ
2
Econometria
UFRRJ
17
Econometria
UFRRJ
Texto de pré-visualização
INTRODUÇÃO AO PYHTONJUPYTER AULA 2 PYTHON OBJETOS Uma característica importante da linguagem Python é a consistência de seus modelo de objetos Todo número strings estrutura de dados função classe modulo etc tem sua própria caixa de interpretação no Python Todo Objeto tem um tipo associadoex strings ou função e dados internos Isso torna a linguagem mais flexível na prática pois mesmo as funções podem ser tratadas como qualquer outro objeto PYTHON FUNÇÃO COM PARÂMETROS Como mencionado anteriormente o comando DEF habilita o comando de descrição de uma função Portanto Ex NOME DA FUNÇÃO PARÂMETRO CORPO DA FUNÇÃO INPUT FX RETURN OUTPUT X X 2 Y PYTHON FUNÇÃO DENTRO DA FUNÇÃO wage whours Função de saláriohora return whours 25 retorna ao valor pago por hora withbonus whours definição da nova função de acordo com saláriohora return wage whours 50 retorna diretamente o saláriohora Bônus wage8 withbonus8 nº de horas trabalhadas Logo wage 8 25 200 W bonus 200 50 250 FUNÇÃO DENTRO DA FUNÇÃO PYTHON COMBINAÇÃO CONDICIONAL E FUNÇÕES John poupa US100 e ganha US10 John poupa US100 e ganha US0 m dinheiro poupado atribuição PYTHON MAIS DE UM PARÂMETRO NA FUNÇÃO Para este objetivo é preciso colocar todos os argumentos dentro dos parênteses separados por uma vírgula Vejamos na sequência PYTHON FUNÇÕES NATIVASINTERNAS TYPE Obtém o tipo de variável que você usa como argumento MAX Obtém o maior valor de uma sequência de números MIN Obtém o menor valor de uma sequência de números ABS Permite que você obtenha o valor absoluto do seu argumento Vejamos exemplos na sequência PYTHON f 01234 printmaxf 4 printminf 0 printtypef class tuple z 10 absz 10 PYTHON SUM Calcula a soma de todos os elementos em uma lista designada como argumento ROUND retorna o float do argumento x arredondado para um nº específico de dígitos y depois casa decimal POW Potenciação pow x y retorna x elevado à potência de y LEN Retorna o nº de elementos em um objeto ou seja quantos elementos há PYTHON List 123456 sumList 21 round367825 3678 pow23 8 pow32 9 lenEconomia 8 PYTHON LISTAS São sequências de dados nº inteiros frações ou texto Colocar as strings valores de texto composto de caracteres dentro de e também do uso de aspas Criação da Lista segue 1 Ressaltar nome da Lista Ou seja Acessar a lista indexando valor 1 extrair o 2º dos elementos nessa variável lista PYTHON 2 Ressaltando o último elemento da Lista Devemos começar contando do final até o começo party G L B L 4 3 2 1 PYTHON 3 Substituir na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise party1 Bia party Gabriel Bia Bruno Louise PYTHON 4 Deletar na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise del party2 party Gabriel Bia Louise PYTHON 5 Adicionar na lista Append é um método do Python ou seja está pronto para ser usado e não precisa ser criado PYTHON 6 Estender Lista Extend também é um método do Python ou seja está pronto para ser usado e não precisa ser criado Portanto após o objeto lista party colocase o ponto final que é um operador que serve para chamar uma determinada função ou método presente no Python PYTHON 7 Identificação na lista PYTHON SLICING FATIAMENTO DE DADOS Serve para lidar com problemas em uma parte dos dados grandes bancos de dados Voltando a lista Party Para o fatiamento 1ª posição de interesse Posição acima da que precisamos Por isso digitamos 3 ao invés de 2 PYTHON Slicing Extração A Extraindo os dois primeiros em Party B Extraindo os dois últimos em Party PYTHON INDEXADOR INDEX MÉTODO Índice de Elemento Serve para quando você não sabe a posição do elemento em uma lista por exemplo PYTHON LISTAS DE LISTAS É um agregador de listas ou seja podemos criar uma lista dentro de outra lista Ex i Nova lista terá mais 2 participantes que chamaremos de newlist ii lista final será chamada de Bigger party newlist Fazendo a lista consolidada PYTHON ORDENAR SORT MÉTODO classifica os objetos da lista em por exemplo ordem alfabética ordem de grandeza etc PYTHON ORDENAMENTO INVERSO partysortreverse True party Louise Lia Gabriel Felipe Bruno Bia numberlist 03571426 numberlist 0 3 5 7 1 4 2 6 numberlistsort numberlist 0 1 2 3 4 5 6 7 numberlistsortreverseTrue numberlist 7 6 5 4 3 2 1 0 TUPLAS São um tipo de sequência de dados São imutáveis Ñ pode acrescentar ou excluir elementos Elementos são colocados em parênteses ao invés de colchetes Pyhton PYTHON Para colocar tuplas dentro de listas fazemos o comando PYTHON Com as tuplas podemos associar variáveis à valores por exemplo Chamamos isso de atribuição de tuplas PYTHON Tuplas com SPLIT retorna a uma lista de strings úteis para lidar com diferentes valores separados por vírgulas Ex Temos variáveis idade e anos de escola e eu tenho os respectivos números em um formato de string separados por uma vírgula daí o nome valores separados por vírgulas O método SPLIT com a indicação de uma vírgula dentro dos parênteses Atribuirá 30 como valor para idade e 17 como valor para anos de escola PYTHON Tuplas como retorno de uma função Útil porque uma função que só pode retornar um valor único pode produzir uma tupla contendo múltiplos valores Ex Área e perímetro de um quadrado PYTHON DICIONÁRIOS Representam outra maneira de armazenar os dados Cada valor está associado a uma determinada chave ou seja Uma chave em seu respectivo valor formam as chaves valores Usase para representação PYTHON Cada nome está associado a um identificador na chave Logo após a criação do dicionário podemos acessar qualquer valor dentro dele Par Chave Valor PYTHON Adição no Dicionário Vamos incluir um elemento adicional no Dicionário assim como ocorre em tuplas e listas Substituição no Dicionário Podese igualmente substituir elementos no dicionário PYTHON I Preencher no Dicionário Uma lista pode ser usada em um par de chavevalores No exemplo Lista dentro do Dicionário PYTHON II Preencher no Dicionário Há outra maneira de preencher um Dicionário 1 Criase uma nova variável usando chaves vazias para indicar que será um dicionário 2 Não se coloca nenhuma chave ou valores dentro das chaves 3 Atribuímos as chaves e os valores um a um e 4 No final o dicionário estará preenchido PYTHON Método GET GET busca de argumento Exemplo Entretanto se tentarmos buscar um elementos que não existem None é o valor padrão que o Python retorna nos casos em que um objeto não existe PYTHON Resumindo Listas Tuplas Dicionário PyhtonJupyter Pacotes de Finanças Arrays Bibliotecas de Finanças Neste tópico serão apresentados alguns pacotes biblioteca do Python O 1º deles será o Numpy Pacote criados por programadores que permite você a operar com Matrizes ou Arrays multidimensionais Arrays são organizam e processam volumosa quantidade de dados Pandas é um pacote que aprimora o Numpy e tem como vantagens 1 Organiza dados em tabela e anexar rótulos em linhas e colunas algo que não ocorre no Numpy puramente 2 Possui ferramentas com diversos formatos de dados e dados faltantes 3 Trabalha naturalmente com séries temporais e bancos de dados Bibliotecas de Finanças Matplotlib biblioteca de gráficos 2D projetada para visualização de cálculos NumPy NumPy Pandas e Matplotlib são partes de um grupo maior de bibliotecas o SciPy que chamamos de Ecossistema do Pyhton com diversas ferramentas de IA Machine Learning etc Bibliotecas de Finanças Random Permite trabalhar com geradores de números aleatórios Statsmodels Contém lista de funções de estatística descritiva gráficos regressões etc Bibliotecas de Finanças Devemos notar que nem todos os módulos e pacotes do Pyhton são importados diretamente Quando instalamos o Anaconda os import feitos já estão incluídos no pacote Por isso que você não precisa instalálos separadamente Mas se não estiverem Como instalar um pacote se você não o tem no seu computador Bibliotecas de Finanças Pandas permite acessar além de funções pré existentes extensões Por exemplo o pandasdatareader Como Instalálo Bibliotecas de Finanças 1 Menu Iniciar e prompt do Anaconda 2 Digitar pip install pandasdata reader e dê Enter Arrays Arrays Conjunto de estrutura de dados Semelhantes as listas pois representam objetos Elementos do Array são os objetos do Array Diferenças Array x Listas Array Só pode conter dados do mesmo tipo exemplo todos os dados devem ser int Listas podem ter diferentes tipos Arrays Criando um Array 1 Importe o Numpy em nomenclatura convencional np 2 Atribuise um Array Numpy para uma variável a 3 Entre parênteses escrevemos uma lista de listas 4 A primeira será composta de valores de 0 a 3 e a outra de 4 a 7 a é um Array em que as duas listas são mostradas uma acima da outra Arrays Atenção O Array NumPy ndimensional é referido como um array nd Sempre homogêneo isto é todos os blocos devem ser do mesmo tipo de dados Indicação de erro com tipo de dado Indicação de erro se eu acrescentar um dado Portanto devemos 1 Organizar Arrays com o mesmo número de elementos e 2 Esses elementos sejam do mesmo tipo de dados Arrays Sintaxe do Array Considere que Array é uma função A estrutura é idêntica à de métodos de uma determinada classe Porém NumPy não é apenas uma classe é um pacote vários módulos e cada um contendo suas próprias classes Portanto nparray modo de usar uma função de Array array retorna a uma estrutura de dados na forma Array NumPy Arrays Para verificar a forma do Array no exemplo original basta digitar Linhas Colunas Arrays Acessando valores num Array devemos digitar L0 C0 C1 C2 C3 L1 Arrays Alterando valor um Array basta digitar o exposto na sequência para substituir o elemento desejado L1 C3 Arrays Extraindo linhas no Array In 20 a0 Out20 array0 1 2 3 In 24 a1 Out24 array 4 5 6 10 Arrays Importância do uso do Array Estrutura de dados que organiza valores em vetores e matrizes multidimensionais Exemplo Espaço vetorial Vetor X tem magnitude e direção 6 12 O Python descreve o vetor como um array NumPy de uma única lista com elementos Usando da analogia de álgebra linear descrevemos 1D ARRAY VETOR 2D ARRAY MATRIX SLIDE COM IMAGEM GRANDE Lorem ipsum dolor sit amet consectetuer adipiscing elit 17 IMPORTAÇÃO II FORMAÇÃO DE CARTEIRA IMPORTAÇÃO Para as ações BR o Yahoo designa SA ao final do ticker da ação Portanto ficamos com os seguintes códigos para as ações da WEG Bradesco Engie e Fleury respectivamente WEGE3SA BBDC3SA EGIE3SA FLRY3SA Montaremos um portifólio de ações selecionadas calculando 1 A taxa de retorno do portfólio 2 Taxa de retorno esperada do Portfólio IMPORTAÇÃO 1º passo instalar a biblioteca do Yahoo 2º passo importação dos pacotes pip install yfinance upgrade nocachedir IMPORTAÇÃO Vamos construir um portfolio com carteira de ações brasileiras Download da base Yahoo Precisamos agora fazer a normalização dos dados para termos a referência correta IMPORTAÇÃO A normalização serve para termos referência na nossa base de dados Vejamos o histórico de preços das ações selecionadas IMPORTAÇÃO A normalização dos valores faz a seguinte conta 𝑷𝒕 𝑷𝟎 𝟏𝟎𝟎 iloc0 extrai os dados da 1a linha inicial dos dados iloc201551 extrai data específica Portanto vamos usar a função iloc0 para criar a normalização IMPORTAÇÃO Escrevendo o comando usando a função iloc0 para portfolioBR temos os dador normalizados IMPORTAÇÃO Graficamente temos In 21 portfolioBRportfolioBRiloc0100plotfigsize 146 Out21 matplotlibaxessubplotsAxesSubplot at 0x1c684c3e048 IMPORTAÇÃO Comparando os gráficos sem e com normalização IMPORTAÇÃO Calculo do retorno de um portfólio de ações Ao realizar o comando ao lado verificamos que não temos o retorno do portifólio com as 4 ações selecionadas mas os retornos diários históricos de cada ativos selecionado IMPORTAÇÃO Para calcular o retorno do portfolio como um todo é necessário montar os pesos relativos de cada ativo no portfolio Para tal realizamos o comando Array da biblioteca do Numpy npdot calcula o produto de um vetor ou matriz e o resultado é um escalar Permite calcular o produto do peso no nosso caso 25 para cada ativo de cada ação pelo seu retorno isto é uma multiplicação de matrizes Porém esta rotina te dá uma matriz Isso ocorre pois multiplicamos cada valor da tabela com os respectivos retornos e pesos IMPORTAÇÃO Gostaríamos de um único nº e não uma matriz Portanto devemos estimar o retorno médio anual do preço de cada ação Executando o comando na sequência patribuir o retorno médio de cada ação da carteira IMPORTAÇÃO Logo para estimar o produto do retorno das ações ou seja verificar o retorno médio ponderado do portfolio das ações selecionadas executamos IMPORTAÇÃO Mudanças de peso na carteira WEGE3SA 40 BBDC3SA 40 EGIE3SA 15 FLRY3SA 15 IMPORTAÇÃO PortfolioBR x Ibovespa O seu Portfolio não é o Ibovespa Código po Índice Bovespa BVSP IMPORTAÇÃO Executando a Normalização IMPORTAÇÃO Graficamente o comportamento das ações selecionadas versus Ibovespa INTRODUÇÃO AO PYHTONJUPYTER AULA 2 PYTHON OBJETOS Uma característica importante da linguagem Python é a consistência de seus modelo de objetos Todo número strings estrutura de dados função classe modulo etc tem sua própria caixa de interpretação no Python Todo Objeto tem um tipo associadoex strings ou função e dados internos Isso torna a linguagem mais flexível na prática pois mesmo as funções podem ser tratadas como qualquer outro objeto PYTHON FUNÇÃO COM PARÂMETROS Como mencionado anteriormente o comando DEF habilita o comando de descrição de uma função Portanto Ex NOME DA FUNÇÃO PARÂMETRO CORPO DA FUNÇÃO INPUT FX RETURN OUTPUT X X 2 Y PYTHON FUNÇÃO DENTRO DA FUNÇÃO wage whours Função de saláriohora return whours 25 retorna ao valor pago por hora withbonus whours definição da nova função de acordo com saláriohora return wage whours 50 retorna diretamente o saláriohora Bônus wage8 withbonus8 nº de horas trabalhadas Logo wage 8 25 200 W bonus 200 50 250 FUNÇÃO DENTRO DA FUNÇÃO PYTHON COMBINAÇÃO CONDICIONAL E FUNÇÕES John poupa US100 e ganha US10 John poupa US100 e ganha US0 m dinheiro poupado atribuição PYTHON MAIS DE UM PARÂMETRO NA FUNÇÃO Para este objetivo é preciso colocar todos os argumentos dentro dos parênteses separados por uma vírgula Vejamos na sequência PYTHON FUNÇÕES NATIVASINTERNAS TYPE Obtém o tipo de variável que você usa como argumento MAX Obtém o maior valor de uma sequência de números MIN Obtém o menor valor de uma sequência de números ABS Permite que você obtenha o valor absoluto do seu argumento Vejamos exemplos na sequência PYTHON f 01234 printmaxf 4 printminf 0 printtypef class tuple z 10 absz 10 PYTHON SUM Calcula a soma de todos os elementos em uma lista designada como argumento ROUND retorna o float do argumento x arredondado para um nº específico de dígitos y depois casa decimal POW Potenciação pow x y retorna x elevado à potência de y LEN Retorna o nº de elementos em um objeto ou seja quantos elementos há PYTHON List 123456 sumList 21 round367825 3678 pow23 8 pow32 9 lenEconomia 8 PYTHON LISTAS São sequências de dados nº inteiros frações ou texto Colocar as strings valores de texto composto de caracteres dentro de e também do uso de aspas Criação da Lista segue 1 Ressaltar nome da Lista Ou seja Acessar a lista indexando valor 1 extrair o 2º dos elementos nessa variável lista PYTHON 2 Ressaltando o último elemento da Lista Devemos começar contando do final até o começo party G L B L 4 3 2 1 PYTHON 3 Substituir na lista party GabrielLiaBrunoLouise party Gabriel Lia Bruno Louise party1 Bia party Gabriel Bia Bruno Louise PYTHON 4 Deletar na lista PYTHON 5 Adicionar na lista Append é um método do Python ou seja está pronto para ser usado e não precisa ser criado PYTHON 6 Estender Lista Extend também é um método do Python ou seja está pronto para ser usado e não precisa ser criado Portanto após o objeto lista party colocase o ponto final que é um operador que serve para chamar uma determinada função ou método presente no Python PYTHON 7 Identificação na lista PYTHON SLICING FATIAMENTO DE DADOS Serve para lidar com problemas em uma parte dos dados grandes bancos de dados Voltando a lista Party Para o fatiamento 1ª posição de interesse Posição acima da que precisamos Por isso digitamos 3 ao invés de 2 PYTHON Slicing Extração A Extraindo os dois primeiros em Party B Extraindo os dois últimos em Party PYTHON INDEXADOR INDEX MÉTODO Índice de Elemento Serve para quando você não sabe a posição do elemento em uma lista por exemplo PYTHON LISTAS DE LISTAS É um agregador de listas ou seja podemos criar uma lista dentro de outra lista Ex i Nova lista terá mais 2 participantes que chamaremos de newlist ii lista final será chamada de Bigger party newlist Fazendo a lista consolidada PYTHON ORDENAR SORT MÉTODO classifica os objetos da lista em por exemplo ordem alfabética ordem de grandeza etc PYTHON ORDENAMENTO INVERSO TUPLAS São um tipo de sequência de dados São imutáveis Ñ pode acrescentar ou excluir elementos Elementos são colocados em parênteses ao invés de colchetes Pyhton PYTHON Para colocar tuplas dentro de listas fazemos o comando PYTHON Com as tuplas podemos associar variáveis à valores por exemplo Chamamos isso de atribuição de tuplas PYTHON Tuplas com SPLIT retorna a uma lista de strings úteis para lidar com diferentes valores separados por vírgulas Ex Temos variáveis idade e anos de escola e eu tenho os respectivos números em um formato de string separados por uma vírgula daí o nome valores separados por vírgulas O método SPLIT com a indicação de uma vírgula dentro dos parênteses Atribuirá 30 como valor para idade e 17 como valor para anos de escola PYTHON Tuplas como retorno de uma função Útil porque uma função que só pode retornar um valor único pode produzir uma tupla contendo múltiplos valores Ex Área e perímetro de um quadrado PYTHON DICIONÁRIOS Representam outra maneira de armazenar os dados Cada valor está associado a uma determinada chave ou seja Uma chave em seu respectivo valor formam as chaves valores Usase para representação PYTHON Cada nome está associado a um identificador na chave Logo após a criação do dicionário podemos acessar qualquer valor dentro dele Par Chave Valor PYTHON Adição no Dicionário Vamos incluir um elemento adicional no Dicionário assim como ocorre em tuplas e listas Substituição no Dicionário Podese igualmente substituir elementos no dicionário PYTHON I Preencher no Dicionário Uma lista pode ser usada em um par de chavevalores No exemplo Lista dentro do Dicionário PYTHON II Preencher no Dicionário Há outra maneira de preencher um Dicionário 1 Criase uma nova variável usando chaves vazias para indicar que será um dicionário 2 Não se coloca nenhuma chave ou valores dentro das chaves 3 Atribuímos as chaves e os valores um a um e 4 No final o dicionário estará preenchido PYTHON Método GET GET busca de argumento Exemplo Entretanto se tentarmos buscar um elementos que não existem None é o valor padrão que o Python retorna nos casos em que um objeto não existe PYTHON Resumindo Listas Tuplas Dicionário Roteiro Avaliação 1 Econometria 1 Escrever um relatório com no máximo 15 páginas word ou pdf 2 Iniciar com pequena introdução sobre as variáveis escolhidas e o objetivo 3 Escolher no mínimo 3 variáveis para analisar 4 Projetos em duplas 5 Usar somente uma das variáveis usadas nos scripts de aula e buscar outras de sua escolha 6 Analisar e interpretar os parâmetros dos modelos com R² Teste F e pvalue significância estatística individual 7 Análise econômica do modelo criado pela dupla Gerar os modelos 1 Regressão linear simples c variáveis no nível originais 2 Regressão linear simples em SemiLog 3 Regressão linear simples em LogLog 4 Regressão múltipla c variáveis no nível originais 5 Regressão múltipla em SemiLog 6 Regressão múltipla em LogLog Obs Não é necessário colocar as linhas inteiras de programação no projeto somente os resultados Gráficos são opcionais Entrega 190925 por email Importação e Organização de Dados Pacote Pandas e Numpy Importação Foco Pacote PandasNumpy pandasSeries fornece um conjunto de observações de uma única variável ou única coluna de dados Função random do NumPy cria 5 números aleatórios Column 1 Atribui nome a coluna Importação Podese pensar em um objeto da Series como um dicionário cujos itens são do mesmo tipo de dados índices de linhas Acesse um dos elementos por meio de seu índice da mesma forma que faria com um dicionário Importação pandasDataFrame Análogo ao Series porém contém várias colunasalém das linhas pandasDataFrame Instalação do pandas data reader I No próprio Jupyter digitar conda install c anaconda pandasdatareader Instalação do pandas data reader II Anaconda Environments Not Installed Verificar e instalar Importação Agora vamos trabalhar analisando dos dados do Banco JP Morgan Ticker JPM 1º passo importar os dados do pacote Pandasdata reader já instalados wb é o convencional de web Importação 3º passo fazer as importações Pandas e Numpy Já descrevemos antes Yahoo Finance Para buscar os dados matplotlibpyplot Coleção de funções que permite trabalhar com gráficos 2º passo instalar a biblioteca do Yahoo Finance Importação 2º passo descrever A função Data Reader para os dados do JPM desde 199611 formato EUA em que a fonte é o Yahoo Finance Ticker Fonte dos dados Descrição dos Tickers a serem baixados L0 L1 L2 ADJ Close preço de ajustamento fechado da ação Inicio da série Close Adj Close Final da série Close Adj Close Motivo Dividendos Split ou Inplit Aumento de capital Importação Como descrevemos somente nos interessa o preço de fechamento ajustado da ação ou seja Adj Close Importação O Python lhe permite analisar a base de dados com maior clareza Por exemplo com os métodos info informa que estamos examinando um objeto de dataframe quantos dados existem na tabela e o intervalo de tempo Importação head informa o inicio da base de dados 5 primeiros tail informa o final da base de dados 5 últimos Acima é a norma padrão Porém se head20 mostra os 20 primeiros tail10 mostra os 10 últimos Importação Para o gráfico da cotação de preços AJD Close de JP Morgan JPM digitamos JPMplotfigsize Horz Vert Importação Tx Rtn Simples preferida por lidar melhor com vários ativos ao longo do tempo mesmo período de tempo comparativo Calculo da Taxa de Retorno 𝑹𝒕𝒏𝒔𝒎𝒑 𝑷𝟏 𝑷𝟎 𝑷𝟎 𝑷𝟏 𝑷𝟎 𝟏 Tx Rtn Log Preferido quando se faz cálculo sobre um único ativo ao longo do tempo 𝑹𝒕𝒏𝒍𝒐𝒈 𝒍𝒐𝒈 𝑷𝟏 𝒍𝒐𝒈𝑷𝟎 Importação Cálculo da Tx de Rtn Smp Comando shift1 indica variação diária Importação Plotando o gráfico de retornos simples de JPM Importação No entanto o interesse do investidor é determinar a taxa média de retorno no longo prazo Para isso calculamos 1 Taxa média de retorno diária 2 Taxa média de retorno anualizada Para exibir o valor em digitamos os comandos str e round Qtde de números p apresentar no Output Importação Plotando o gráfico de retornos simples de JPM Importação Cálculo da Tx de Rtn Log No Logrtn não precisamos do 1 após o shift1 Importação Os mesmos interesses de longo prazo teremos nos retornos em log de JPM Importação Plotando o gráfico de retornos log de JPM Importação A próxima tarefa é montar uma conjunto de dados de 4 colunas mostrando os AJD Close de 4 empresas JP Morgan JPM Apple AAPL Microsoft MSFT Coca Cola KO Importação Agora precisamos Normalizar os dados Sem a normalização ficamos sem referência pois os preços por si só não dão a melhor referencia na representação gráfica Normalização 𝑷𝟏 𝑷𝟎 𝟏𝟎𝟎 nameiloc0 extrai os dados da 1a linha inicial dos dados ou iloc200011 data específica Importação Gráfico de valores normalizados Importação Gráfico de Preços Valores não normalizados PyhtonJupyter Geração de números Aleatórios 27072021 Análise Anual 2 A geração de números aleatórios tem como objetivo simular cenários sob condições de incerteza Quando uma base de dados é insuficiente para se trabalhar esse tipo de função pode ajudar consideravelmente nesta tarefa Random 27072021 Análise Anual 3 O 1º passo import o módulo Random A função randomrandom irá gerar um float aleatório no intervalo de 0 1 incluindo o 0 e excluindo o 1 Random 27072021 Análise Anual 4 Outro gerador aleatório é a função randint Randomrandit gera aleatoriamente um valor inteiro sobre um intervalo determinado Random Intervalo entre 1 e 10 Número gerado aleatoriamente no intervalo determinado 27072021 Análise Anual 5 Como preencher um Array com valores O array vem da biblioteca NumPy Logo devemos import NumPy e escrever a sintaxe a seguir Random Colunas Linhas Anexa randomrandint à biblioteca NumPy Fornece um 3º parâmetro a função randint tamanho da matrix 27072021 Análise Anual 6 Dados Financeiros em Python A captação de dados tem origem em duas fonte básicas Servidor da web ou Computador Na prática para acessar dados armazenados em um servidor web você vai precisar conectar a respectiva API Application Programming Interface Random 27072021 Análise Anual 7 API Interface de programação de aplicativos ou fontes de dados financeiros Random fonte paga fonte paga Cadastrar conta p acesso 27072021 Análise Anual 8 Para a criação de conta no QuandL Random 27072021 Análise Anual 9 Pandas datareader módulo que vai ajudar você a baixar dados dessas fontes online e a preparalos para análises Principalmente Yahoo QuandL e α vantage Random 27072021 Análise Anual 10 Para os dados em computador analista precisa saber como trabalhar é o formato csv comma separated values Random Dados on line Dados CSV vantagens Atualizados diariamente Basta ter armazenado no HD desvantagens Precisa de conexão Podem parar de funcionar por períodos de tempo indeterminados determinada API pode conter apenas parte dos dados para uma análise financeira Nem sempre atualizados o que pode prejudicar a analise financeira quando o critério é analisar períodos mais longos ou atuais 27072021 Análise Anual 11 No entanto o foco do curso está em saber programar corretamente mesmo que algumas bases de dados não sejam atuais Logo organizar e minerar os dados é uma tarefa tão importante quanto as análises Random PythonJupyter PROGRAMAÇÃO ORIENTADA E IMPORTAÇÃO Programação Orientada a Objetos POO Prérequisito para o conceito de módulos Todo valor em Python é considerado um objeto Objeto Números inteiros Listas Strings Dicionários POO é o conceito de interação com um ou mais objetos POO Por isso podemos modelar uma série de dados por exemplo do número de aviões que decolam todos os dias de um determinado aeroporto em um específico período Objeto Dados Manipulações de Operações POO Classes CLASSE OBJETO ATRIBUTOS Cada objeto pertence a alguma classe que define as regras para criar esse objeto Podese anexar um certo número de atributos no objeto POO Exemplo Classe Montadora de carros Objeto Veículo da Classe Montadora de carros Atributos Pickup Vermelho CES Sensor de Estacionamento Método Resultado de uma sequência lógica aplicada ao objeto Acelerar Frear Manobrar POO Exemplo 2 Classe List do Python que pode conter vários tipos de dados Atributo o tipo de dados contidos nela Método index Ou seja é aquilo que podemos aplicar no objeto Objeto Lista de Números inteiros dos voos em Dezembro POO Devemos destacar que 1 Essas operações só podem ser executadas após a criação do objeto 2 Não podem ser confundidas com funções apesar da semelhança Método Pode ter inúmeros parâmetros Método pode ter muitos parâmetros de vários tipos de dados Uma função existe por conta própria Um método pertence a uma determinada classe função objetométodo O método irá conter o objeto list str dict que será usado com um deles Se a GM não produzir a pickup não haverá método manobrar por exemplo para ser executado Um dos parâmetros do método Manobrar deve ser um objeto da pickup Para evitar confusão entre os termos método e função a sintaxe do Python é diferente para cada situação Ex voosdezindex O nome do método não acompanha parênteses Ele vem após o nome do objeto a ser usado incluindo o ponto POO Módulos e Pacotes Módulos Código préescrito contendo definições de variáveis funções e classes Carrega todos os novos programas sem a necessidade de reescrever o código manualmente sempre que iniciarmos um novo programa Módulos CLASSEA CLASSEB CLASSEC LISTX FUNÇÃO1 FUNÇÃO2 POO Módulos e Pacotes Pacotes Biblioteca Coleção ou diretório de módulos relacionados do Python Você pode criar seus próprios módulos ou pacotes Pacotes Módulo1 Módulo2 Módulo3 Ao longo do tempo desenvolvedores criaram pacotes que podem ser feitos downloads Há pacotes para downloads de áreas específicas POO Pacotes Biblioteca A partir do momento que você instala o Python sua biblioteca padrão já possui uma coleção de módulos padrão disponíveis Exemplo Funções Nativas funções já disponíveis assim que você instala o programa As funções nativas Len Round e Pow são por exemplo funções não são necessárias escrever seus códigos manualmenteidem para os métodos por exemplo sort extend append index etc Portanto além dos pacotes presentes originalmente no Python só necessário baixar os pacotes que são necessários para seu objetivo POO IMPORTAÇÃO Importação de módulos 4 maneiras Alguns já estão dentro do Pyhton outros não POO Módulo MATH 1º Modo Ex Função Nativa de Math sqrt calcula a raiz quadrada de um argumento não faz parte da biblioteca padrão do Pyhton Importação do módulo Math Nome do módulo Função de Interesse Argumento POO 2º Modo 3º Modo Omite o nome do módulo e o operador ponto Forma muito usada por programadores Em códigos mais complexos a linguagem mais sintética economiza tempo computacional POO 4º Modo O menos recomendado Todos os recursos de Math funções classes ou métodos serão importados Essa importação pode ser problemática para o Python em algumas situações Suponha que você importou tudo de math Depois importou um segundo módulo que contém uma função sqrt O Python escolherá uma das duas funções mas você não poderá selecionar aquela que deve ser aplicada POO IMPORTAÇÃO Acesso aos recursos do Math PythonJupyter REGRESSÃO C DADOS DO SGS BACEN Analise de Regressão O primeiro passo é acesso a base ao API do Sistema Gerador de Séries SGS do Bacen para acessar a URL padrão conforme a sequência abaixo Regressão 433 27841 IPCA M 1 httpswww3bcbgovbrsgspublocalizarserieslocalizarSeriesdomethodpre pararTelaLocalizarSeries Regressão Vamos importar as bibliotecas módulos e pacote pertinentes panálise Além dos tradicionais Pandas Numpy e Matplotlib importaremos também Seaborn biblioteca de visualização de dados do Python baseado no Matplotlib Ele fornece uma interface gráfica de alto nível para gráficos estatísticos mais informativos Statsmodels Módulo do Python que fornece classes e funções para estimar diferentes modelos estatísticos Stats do Scipy Módulo que contém uma ampla gama de distribuições de PBDD função de correlação testes estatísticos etc Comando para definir previamente o tamanho dos gráficos Regressão Após as importações você pode colar a URL do SGS que possui formato json no seu Jupyter e pedir para o método read do Pandas digitando pdreadjsonurl No exemplo com dados do INPC cód16121 Regressão Para não ficar copiando diferentes URLs para cada dado a ser buscado podese montar uma configuração geral de busca via códigos 1 Definição da função consultabc via def nome da strings dentro do parênteses 2 URL Bacen Usamos para inserir formato vazio ou genérico e formatcodigobcb O format serve basicamente para criar uma string que contém campos entre chaves que são substituidos pelos argumentos de format Portanto repare que os campos de substituição na string que estão entre chaves estão associadas aos parâmetros do método format 3 Dataframe do Pandas ler os dados da URL 4 A coluna data do SGS está no formato original DMA Usamos o método Pandas todatetime ptransformar em AMD 5 dfsetindex Define a coluna data como index 0123 e usamos inplace True se quisermos confirmar as alterações no dataframe 6 Return função retorna ao df Regressão Agora basta confirmar a busca via códigos Regressão Vimos que muitos dados iniciam sua base em momentos distintos Por isso precisamos indexar para mesma base Abrimos um DataFrame vazio M1index0 indexa os dados para a série de início mais recente no caso M1 A partir disso todos os dados são indexados para iniciar a partir de startdate usando a função loc Regressão Regressão Simples Construindo as variáveis Plotandoas graficamente axis x y definição do tamanho dos eixos x e y Scatterxy plotagem em pontos xlabel x Marcação de qual variável vai no eixo x ylabel y Marcação de qual variável vai no eixo y show plotar Regressão Comandos pEstimação Método do statsmodels que forma a constante fit método estatístico de ajuste do modelo Atribui valor a regressão por OLS Regressão Quadro de resultados da Regressão Regressão Regressão Múltipla columnstack agrupamento de colunas Formação da constante Regressão Resultados Regressão Correlações Matriz deVarCov Regressão Regressão em Log nplog método Numpy para transformar todo o vetor M1 em log Regressão Regressão em Log In 235 1 x npcolumnstackx1 x2 x3 2 x smaddconstantx 3 reg3 smOLSyxfit 4 reg3summary OLS Regression Results Dep Variable M1 Rsquared 0943 Model OLS Adj Rsquared 0942 Method Least Squares Fstatistic 1267 Date Tue 20 Jul 2021 Prob Fstatistic 110e142 Time 114704 LogLikelihood 15136 No Observations 234 AIC 2947 Df Residuals 230 BIC 2809 Df Model 3 Covariance Type nonrobust coef std err t Pt 0025 0975 const 07265 0057 12787 0000 0615 0838 x1 02539 0009 29326 0000 0237 0271 x2 00037 0014 0256 0798 0025 0032 x3 05469 0047 11532 0000 0640 0453 Omnibus 23229 DurbinWatson 0132 ProbOmnibus 0000 JarqueBera JB 27666 Skew 0839 ProbJB 983e07 Kurtosis 3140 Cond No 335