Jump to content
  • FORMAS DE POUPAR

  • Programação e análise dos mercados financeiros


    Recommended Posts

    NunoSousa05

    @Virtua

    Dando o pontapé de saída neste tópico e continuado a conversa do tópico Fundos de Investimento....

    Para localizar a malta, a minha questão passava por num EUPP substituir o MSCI World por MSCI World Quality Factor. 

    A ideia surgiu-me pelo facto de que os pressupostos por de trás, do Quality Factor, encaixam melhor numa estratégia de longo prazo e no site do MSCI, em termos históricos o Quality Factor tem maior retorno anualizado e menor risco anualizado, comparado com o MSCI World.

    De forma resumida, o EUPP ficaria:

    25% MSCI World Quality Factor;

    25% EU Bonds Longo Prazo;

    25% Gold

    25% D.P

    Assim que tiver tempo, coloco aqui um backtest com ambas as hipóteses.

    Edited by NunoSousa05
    Correção
    Link to post
    Share on other sites

    @NunoSousa05

    A questão é tb encontrares um ETF bom para o quality! Há?

    Usamos o IWQU mesmo sendo em USD (convertendo para euros para ser comparável, naturalmente)? ou o XDEQ?

    https://www.morningstar.es/es/etf/snapshot/snapshot.aspx?id=0P00014B9D

    https://www.morningstar.es/es/etf/snapshot/snapshot.aspx?id=0P00014E82

    Edited by Virtua
    Link to post
    Share on other sites
    NunoSousa05
    há 2 minutos, Virtua disse:

    @NunoSousa05

    A questão é tb encontrares um ETF bom para o quality! Há?

    Usamos o IWQU mesmo sendo em USD (convertendo para euros para ser comparável, naturalmente)? ou o XDEQ?

    https://www.morningstar.es/es/etf/snapshot/snapshot.aspx?id=0P00014B9D

    https://www.morningstar.es/es/etf/snapshot/snapshot.aspx?id=0P00014E82

    Olho com bons olhos para: 

    ISIN: IE00BP3QZ601

    Ticker: IS3Q

    Bolsa: Xetra

    Que achas ? 

    • Upvote 1
    Link to post
    Share on other sites

    Passo 1

    Download de Anaconda:

    https://www.anaconda.com/products/individual

    Passo 2

    Criarem uma pasta para o projecto de programação

    Passo 3

    Ir à pasta partilhada deste tópico (https://tinyurl.com/y6eaoy6j), sacar a minha biblioteca PortfolioAnalyser.py e colocar o ficheiro na mesma pasta em que estão a trabalhar

    Passo 4

    Ir à pasta partilhada deste tópico (https://tinyurl.com/y6eaoy6j), sacar os CSV dos ETFs que eu tirei do investing.com e colocar o ficheiro na mesma pasta em que estão a trabalhar

    IWDA: https://www.investing.com/etfs/ishares-msci-world---acc?cid=47285

    IS3Q: https://www.investing.com/etfs/ishares-msci-wrld-quality-factor

    Passo 5

    Instalar a biblioteca cufflinks (https://github.com/santosjorge/cufflinks) porque vai facilitar imenso a criação de gráficos

    Uma coisa que vai ser extremamente útil é trabalharem com o Anaconda Prompt. Se ao abrirem dá aqueles ecrãs pretos de normalmente nos filmes se associa aos hackers ou para os mais velhinhos faz lembrar o MS-DOS

    Vai ser preciso para instalar bibliotecas e outras coisas mais lá para a frente. Não se assustem com o ecrã preto se não são pessoas de computadores. Eu direi quais os comandos necessários e vão ver que em breve em 3 segundos estão a fazer coisas que vos demoraria 3 minutos no windows "normal"

    A primeira coisa para a qual vamos usar o prompt é instalação de bibliotecas por isso abram e façam copy paste (um de cada vez) das seguintes ordens:

    pip install quandl
    
    pip install plotly
    
    pip install cufflinks

    Para quem já tinha o anaconda recomendo também: 

    conda update conda

    Passo 6

    Abrir o Jupyter Notebook/Jupyter Lab*  e fazer um notebook novo na pasta criada no passo 2

    * Abrir o Anaconda prompt e escrever:

    jupyter lab

    Honestamente estes devem ser os passos mais complicados porque muita gente instala mal o software. A partir daqui, entre código simples do pandas ou da minha biblioteca vão fazer tudo em 3 tempos!!

    Mais logo coloco aqui código para a análise propriamente dita!

    Depois do software instalado em meia dúzia de linhas de código fazem os gráficos interactivos lindos de morrer ;)

    Edited by Virtua
    Link to post
    Share on other sites
    NunoSousa05
    há 2 horas, Virtua disse:

    Passo 1

    Download de Anaconda:

    https://www.anaconda.com/products/individual

    Passo 2

    Criarem uma pasta para o projecto de programação

    Passo 3

    Ir à pasta partilhada deste tópico (https://tinyurl.com/y6eaoy6j), sacar a minha biblioteca PortfolioAnalyser.py e colocar o ficheiro na mesma pasta em que estão a trabalhar

    Passo 4

    Ir à pasta partilhada deste tópico (https://tinyurl.com/y6eaoy6j), sacar os CSV dos ETFs que eu tirei do investing.com e colocar o ficheiro na mesma pasta em que estão a trabalhar

    IWDA: https://www.investing.com/etfs/ishares-msci-world---acc?cid=47285

    IS3Q: https://www.investing.com/etfs/ishares-msci-wrld-quality-factor

    Passo 5

    Instalar a biblioteca cufflinks (https://github.com/santosjorge/cufflinks) porque vai facilitar imenso a criação de gráficos

    Uma coisa que vai ser extremamente útil é trabalharem com o Anaconda Prompt. Se ao abrirem dá aqueles ecrãs pretos de normalmente nos filmes se associa aos hackers ou para os mais velhinhos faz lembrar o MS-DOS

    Vai ser preciso para instalar bibliotecas e outras coisas mais lá para a frente. Não se assustem com o ecrã preto se não são pessoas de computadores. Eu direi quais os comandos necessários e vão ver que em breve em 3 segundos estão a fazer coisas que vos demoraria 3 minutos no windows "normal"

    A primeira coisa para a qual vamos usar o prompt é instalação de bibliotecas por isso abram e façam copy paste (um de cada vez) das seguintes ordens:

    
    pip install jupyterlab
    
    pip install plotly==4.9.0
    
    pip install "notebook>=5.3" "ipywidgets>=7.2"
    
    pip install jupyterlab "ipywidgets>=7.5"
    
    pip install cufflinks

    Passo 7

    Abrir o Jupyter Notebook/Jupyter Lab*  e fazer um notebook novo na pasta criada no passo 2

    * Abrir o Anaconda prompt e escrever:

    
    jupyter lab

    Honestamente estes devem ser os passos mais complicados porque muita gente instala mal o software. A partir daqui, entre código simples do pandas ou da minha biblioteca vão fazer tudo em 3 tempos!!

    Mais logo coloco aqui código para a análise propriamente dita!

    Depois do software instalado em meia dúzia de linhas de código fazem os gráficos interactivos lindos de morrer ;)

    Um dia ainda quero aprender Python e trabalhar com bibliotecas para tratar dados.

    Eu trabalho na área de Revenue Management e uso muito dados para análises de performances, KPIs, etc e a partir daí desenhar planos de acções, para melhorar as performances.

    Obviamente usamos softwares de BI, mas muitas das vezes os softwares são desenhados por pessoas que não conhecem muito bem a indústria e têm algumas deficiências. 

    A solução que arranjei foi aprender SQL, para aceder às bases de dados e depois tratar tudo em Excel...

    O Excel, faz maravilhas, mas tem as suas limitações ?

    • Like 1
    • Downvote 1
    Link to post
    Share on other sites
    há 2 minutos, NunoSousa05 disse:

    O Excel, faz maravilhas, mas tem as suas limitações ?

    É como passar de fiat para ferrari ?

    Mas tratamento de dados SE for um processo repetitivo e que pode ser automatizado é python. Sem sobra de dúvidas!

    Citação

    Obviamente usamos softwares de BI, mas muitas das vezes os softwares são desenhados por pessoas que não conhecem muito bem a indústria e têm algumas deficiências.

    A maioria dos softwares BI de jeito tem ligação com Pyhton e/ou R. PowerBI da Microsoft e Tableau por exemplo!

    • Like 1
    Link to post
    Share on other sites
    Conrad Hart

    Virtua já tive oportunidade de te dar os parabéns pela iniciativa, em privado, mas não queria deixar de te agradecer outra vez.

    Queria deixar a sugestão de análise da eventual correlação entre o MSCI WORLD e o MSCI EM para analisar a relevância dos mercados emergentes num portefólio de ações mundiais.

    Tenho muita curiosidade.

    Link to post
    Share on other sites
    há 50 minutos, Conrad Hart disse:

    Virtua já tive oportunidade de te dar os parabéns pela iniciativa, em privado, mas não queria deixar de te agradecer outra vez.

    Quando li isto estava a tentar imaginar quem serias ?

    Já tens o Jupyter a bombar não já? E plotly + cufflinks?

    Sacamos os MSCI com dados mensais de muito longo prazo do site deles? https://www.msci.com/end-of-day-data-search 

    Podemos até fazer USD Gross e EURO Gross.

    Amanhã faço o IWDA vs IS3Q e Sexta a correlação entre MSCI ?

    Vou aproveitar para alterar/melhorar algumas funções da minha biblioteca para depois poderem experimentar com qualquer outros activos que achem relevantes. Há demasiadas coisas engraçadas para andarmos a repetir exercícios!! Alguns vão ser semelhantes, sim, mas espero que sempre com um twist.

    Abr

    Link to post
    Share on other sites
    NunoSousa05
    há 9 horas, Virtua disse:

    image.thumb.png.89d29edddf33e26f2f597e8bf0b2786e.pngimage.thumb.png.5fbf209877d4696d112b5c93c102d9ac.png

    image.thumb.png.9387d1aa296f2af32dc4ef81e67f07b3.png

    image.thumb.png.08d7567a101f501ba31fd907f5e47c9c.png

    image.thumb.png.bb98c7dc13213316a488909c55382731.png

    image.thumb.png.47dc794ec57a0645a2e65712398469b1.png

    image.thumb.png.822bfdbd8aa930099d7538d23f121dd9.png

    image.thumb.png.c92dcaed2021adce7bd49dbb95459c36.png

    image.thumb.png.3b5411d7c82e942cbac93cf310caa7c7.png

    image.thumb.png.2569bf38dad3e00af93f7159229c2df8.png

    image.thumb.png.eb213d89371b3f4c16b7e3229aa472b7.png

    Podem ver o ficheiro completo aqui: https://tinyurl.com/y2gdxzuy

    e o código "limpo" aqui: 

    
    # Import libraries
    import pandas as pd
    import cufflinks as cf
    
    import PortfolioAnalyser as pa
    
    # Set cufflinks offline
    cf.go_offline()
    
    # Ler IS3Q, colocar index como datetime e dar o nome do ticker à coluna 
    IS3Q = pd.read_csv('IS3Q.csv', index_col='Date', parse_dates=True)[['Price']]
    IS3Q.columns = ['IS3Q']
    
    # Ler IWDA, colocar index como datetime e dar o nome do ticker à coluna 
    IWDA = pd.read_csv('IWDA.csv', index_col='Date', parse_dates=True)[['Price']]
    IWDA.columns = ['IWDA']
    
    # Fazer dataframe ETFs com merge dos dois ETFs
    ETFs = pa.merge_time_series(IS3Q, IWDA, how='inner')
    ETFs = ETFs.sort_index(ascending=True)
    
    # Fazer o growth index
    ETFs_gi = pa.compute_growth_index(ETFs)
    
    # Fazer o gráfico plotly
    ETFs_gi.iplot(dimensions=pa.dimensions)

     

    Amanhã gráfico de drawdown e tabela de performances!

    Awesome ?

    Edited by NunoSousa05
    Correção
    • Downvote 2
    Link to post
    Share on other sites

    Se alguém conseguir reproduzir que avise sff. Tenho alguma curiosidade em saber se as dicas para instalação do software chegam. É mesmo o mais complicado porque depois como vêem são 10/12 linhas de código e que até podem fazer copy past e só alterar os ficheiros .CSV para os activos que quiserem.

    Eventualmente até 3, 4, 5 activos. Só depois lembrem-se que o merge que têm de fazer é entre o dataframe ETFs (ou o nome que quiserem) e o activo "adicional". Por acaso não costumo sacar do investing mas no limite até podemos fazer uma função em que só temos que colocar os tickers e ele faz logo tudo, incluindo o growth_index e transformamos 7 linhas numa só!! Já vai para a lista de futuros posts ? 

    Edited by Virtua
    Link to post
    Share on other sites
    Rick Lusitano
    A 04/09/2020 às 12:32, Virtua disse:

    Se alguém conseguir reproduzir que avise sff. Tenho alguma curiosidade em saber se as dicas para instalação do software chegam. É mesmo o mais complicado porque depois como vêem são 10/12 linhas de código e que até podem fazer copy past e só alterar os ficheiros .CSV para os activos que quiserem.

    Eu vou tentar instalar.

    A 02/09/2020 às 18:38, Virtua disse:

    Passo 5

     

    Instalar a biblioteca cufflinks (https://github.com/santosjorge/cufflinks) porque vai facilitar imenso a criação de gráficos

    (...)

    
    pip install jupyterlab
    
    pip install plotly==4.9.0
    
    pip install "notebook>=5.3" "ipywidgets>=7.2"
    
    pip install jupyterlab "ipywidgets>=7.5"
    
    pip install cufflinks

     

    - Como instalar do Github a biblioteca cufflinks?

    - Como tens o comando na citação "pip install cufflinks", não é a mesma coisa que ir sacar o setup para instalar a cufflinks? Se sim, pode-se ignorar ir ao GitHhub?

     

    Citação

    Passo 7

    Abrir o Jupyter Notebook/Jupyter Lab*  e fazer um notebook novo na pasta criada no passo 2

    * Abrir o Anaconda prompt e escrever:

    
    jupyter lab

     - Como já tenho o Anaconda com Jupyter Notebook e Jupyter Lab no interface que permite abrir-las, é preciso instalar o Jupyter Lab na prompt?

    Instalei Jupyter Lab usando o teu código na prompt e agora o meu interface Anaconda não me permite abrir o Jupyter Lab porque diz que instalei uma versão mais recente que a versão que tenho da Anaconda (minha versão do Anaconda já tem uns tempos e já tem o Juyter Lab instalado, logo não deverá ser necessário instalar através do prompt).

     

    - Para abrir o Jupyter Lab não se pode abrir no interface do Anaconda?

     

    - Não é preciso instalar o Python como se faz com o R, para se poder usar o Anaconda? O Anaconda já traz o Python?

     

    - Presumo que libraries do R não serão utilizadas no Python, apesar de usar o Jupyter?

     

    Citação

    Uma coisa que vai ser extremamente útil é trabalharem com o Anaconda Prompt. Se ao abrirem dá aqueles ecrãs pretos de normalmente nos filmes se associa aos hackers ou para os mais velhinhos faz lembrar o MS-DOS

    A cena dos mais velhinhos do MS-DOS é para mim? :P

     

     

     

    Edited by Rick Lusitano
    Link to post
    Share on other sites
    há 3 horas, Rick Lusitano disse:

    Se sim, pode-se ignorar ir ao GitHhub?

    Podes e deves. Instalação de bibliotecas de python deve ser via pip. Excepto se não tiverem no pypi.

    Citação

    Para abrir o Jupyter Lab não se pode abrir no interface do Anaconda?

    Pode fazer como quiseres suponho eu. Só expliquei o meu workflow.

    Citação

    O Anaconda já traz o Python?

    Já e uma carrada de bibliotecas python tb.

    Citação

    Instalei Jupyter Lab usando o teu código na prompt e agora o meu interface Anaconda não me permite abrir o Jupyter Lab porque diz que instalei uma versão mais recente que a versão que tenho da Anaconda (minha versão do Anaconda já tem uns tempos e já tem o Juyter Lab instalado, logo não deverá ser necessário instalar através do prompt).

    Podes usar o lab ou os notebooks. Podes tentar via:  

    conda install jupyterlab

    . Mas se já tinhas a funcionar nem sei se vale a pena.

    Ou então faz update a isso tudo com

    conda update conda
    
    Citação

    Presumo que libraries do R não serão utilizadas no Python, apesar de usar o Jupyter?

    O Jupyter é meio agnóstico em relação a linguagens. Antigamente chamavam-se IPython, como um enfoque em python mas alteraram o nome para Julia + python + r

    Não planeio usar R. A minha biblioteca é em python apenas por razões de uniformidade e porque a uso noutros projectos que não aceitam R. Mas ainda tenho alguns notebooks da altura em que misturava R. Agora já "traduzi" a maior parte das funções. Algumas ainda não consegui completamente mas lá chegaremos... 

    Citação

    A cena dos mais velhinhos do MS-DOS é para mim? :P

    Para qualquer pessoa acima dos 35 acho eu ?

    Edited by Virtua
    Link to post
    Share on other sites
    Rick Lusitano
    A 02/09/2020 às 18:38, Virtua disse:
    
    pip install jupyterlab
    
    pip install plotly==4.9.0
    
    pip install "notebook>=5.3" "ipywidgets>=7.2"
    
    pip install jupyterlab "ipywidgets>=7.5"
    
    pip install cufflinks

    Passo 7

    Abrir o Jupyter Notebook/Jupyter Lab*  e fazer um notebook novo na pasta criada no passo 2

    * Abrir o Anaconda prompt e escrever:

    
    jupyter lab

    Honestamente estes devem ser os passos mais complicados porque muita gente instala mal o software. A partir daqui, entre código simples do pandas ou da minha biblioteca vão fazer tudo em 3 tempos!!

    Mais logo coloco aqui código para a análise propriamente dita!

    Depois do software instalado em meia dúzia de linhas de código fazem os gráficos interactivos lindos de morrer ;)

    No Passo 5, a 1ª linha de code "pip install jupyterlab" é desnecessária, podes retirar, pois a Anaconda já traz o Jupyter Lab. E funciona.

    As outras 4 linhas para instalar são libraries?

    Não dá para instalar libraries directamente no ficheiro do script do Jupyter Lab/Notebook? Ou só podemos instalar através do prompt?

    Estou a te perguntar para perceber o que estou a fazer, e ter mais autonomia para no futuro se quiser fazer outras coisas semelhantes.

     

    Penso que podes organizar melhor o teu post sobre a instalação, ficando este post apenas para a instalação, para ser mais simples e directo para outros users. Basta teres os Passos 1 e 5 (no Passo 5, apenas as últimas 4 linhas de código). Ao instalamos o cufflinks no Prompt, podes tirar a linha que falas do GitHub, é mais confuso e não é necessário ir ao GitHub.

     

    E os Passos 2, 3, 4 e 7 podem ficar para outro post, como começar a trabalhar com o Python.  (Não tens Passo 6.)

    No Passo 7, podes simplificar o Passo, não é preciso código para abrir a aplicação:

    "Abrir Anaconda e escolher o Jupyter Notebook ou Jupyter Lab, para começar a trabalhar"

    Link to post
    Share on other sites
    Rick Lusitano

    Estive a ver os meus slides das aulas de Macroeconometria em R, e lá fala do Python:

    Citação

    Packages: Plotly, Matplotlib, Seaborn, Numpy, Scipy, Numba, Cython, StatsModels, Scikit-learn, Pandas

    O Plotly presumo que seja o mesmo do teu post, e pelo nome deve ser uma library para fazer gráficos.

     

    E tem uma imagem com nomes/logos de outros packages, separados por níveis, presumo que seja por especialidade/sector:

    • Astropy, Biopython, Dipy, Nipy, SunPy -> Ciências (Astrologia, Biologia, Física, etc)?
    • Scikit-learn, StatsModels, SymPy, NetworkX, Scikit-image (image processing in python), PyMC
    • Xarray, Bokeh, Matplotlib, Pandas, SciPy
    • Dask, IP[y]: IPython, NumPy, Jupyter, Cython, Numba

    Conheces estes packages?

    Alguns serão ou poderão ser usados nos projectos deste tópico? Se sim, não queres já incluir todos os códigos dos packages todos, no post sobre a instalação do software? (Ficava logo tudo despachado. ;) )

    O Scikit-image (image processing in python) deve ser interessante, pelo nome parece ser para tratamento de imagens.

    Edited by Rick Lusitano
    Link to post
    Share on other sites
    Rick Lusitano

    Já li o teu código para o projecto de ETFs, mas só aqui no fórum, parece-me bem (a lógica é parecida ao R), amanha testo isso.

    Posso deixar umas questões adicionais:

    - Como cortar as datas das séries, por exemplo quero analisar uma amostra, ou simplesmente cortar a data de inicio da série que começa mais cedo ou a data de fim da série que acaba mais tarde?

    - O que fazer se há buracos nas datas, ou seja, se as séries não têm as mesmas datas em comum? Tens de preparar isso, no CSV? Ou podes dizer ao Py para as datas em falta ele pôr o valor anterior na data em falta?

    - Como pôr séries de frequências diferentes para se ter os mesmos valores? Por exemplo, tens uma série trimestral (PIB) e queres pôr o S&P 500 que é de frequência diária, as 2 séries no mesmo gráfico.

     

    - Presumo que para ficheiros não CSV, que o código de importação seja diferente, podes pôr quais são, por exemplo, XLS/XLSX?

    Já tenho mais ideias, mas vou testar primeiro o teu projecto e dar tempo para tu escolheres o que queres fazer a seguir no teu Workshop de Python. ;)

     

    Malandro, já me enganaste, acabei por me meter nisto. :P

    Edited by Rick Lusitano
    Link to post
    Share on other sites
    há 34 minutos, Rick Lusitano disse:

    Não dá para instalar libraries directamente no ficheiro do script do Jupyter Lab/Notebook? Ou só podemos instalar através do prompt?

    Dá. Tens de colocar ! antes do comando na célula. Fica algo do estilo:

    !pip install cufflinks
    Citação

    Penso que podes organizar melhor o teu post sobre a instalação, ficando este post apenas para a instalação, para ser mais simples e directo para outros users. Basta teres os Passos 1 e 5 (no Passo 5, apenas as últimas 4 linhas de código). Ao instalamos o cufflinks no Prompt, podes tirar a linha que falas do GitHub, é mais confuso e não é necessário ir ao GitHub.

    Para a semana devo ter um PC novo e devo instalar tudo seguindo os meus passos e aí já melhoro tudo. Nada como termos de fazer do 0 para garantir que corre bem.

    há 15 minutos, Rick Lusitano disse:

    Conheces estes packages?

    Alguns serão ou poderão ser usados nos projectos deste tópico? Se sim, não queres já incluir todos os códigos dos packages todos, no post sobre a instalação do software? (Ficava logo tudo despachado. ;) )

    Sim. Mas a maioria do que precisamos já vem com O Anaconda. Vamos usar estes: Matplotlib, Seaborn, Numpy,  Pandas, Plotly, Cufflinks

    Acho que tirando o plotly e cufflinks estes os outros já fazem parte do Anaconda.

    Provavelmente no futuro incluirei um ficheiro requirements.txt com o nome de todos os pacotes e quem começa do zero só tem de colocar na prompt:

    pip install -r requirements.txt 

    É como tenho de fazer em produção, e o que está efectivamente correcto!!

    Link to post
    Share on other sites
    há 14 minutos, Rick Lusitano disse:

    - Como cortar as datas das séries, por exemplo quero analisar uma amostra, ou simplesmente cortar a data de inicio da série que começa mais cedo ou a data de fim da série que acaba mais tarde?

    Está para breve

    Citação

    - O que fazer se há buracos nas datas, ou seja, se as séries não têm as mesmas datas em comum? Tens de preparar isso, no CSV? Ou podes dizer ao Py para as datas em falta ele pôr o valor anterior na data em falta?

    Ver acima na situação de pa.merge_time_series().

    Tudo o que tem "pa." antes é da PortfolioAnalyser, a minha biblioteca.

    Para já só coloquei como merge='inner' que faz merge quando há datas para ambas as séries temporais, mas há o merge="outer" que usa as datas de ambas as séries temporais e quando só há 1 activo nesse dia preenche o que falta com o valor do dia anterior, como se tivesse simplesmente fechado.

    Citação

    Como pôr séries de frequências diferentes para ter ter os mesmos valores? Por exemplo, tens uma série trimestral (PIB) e queres pôr o S&P 500 que é de frequência diária, as 2 séries no mesmo gráfico.

    Isso é simples, mas vai ser mais lá para a frente. Provavelmente o mais fácil é fazermos nós um datetime index de raiz com todos os dias do calendário e depois ficarmos só com os dias em que ambos estão a "funcionar".

    Isto porque irritantemente a FED usa como dados trimestrais o primeiro dia do trimestre seguinte em vez do último dia útil do trimestre (que seria o que está correcto)!!

    Acho que me fiz entender mais para o caso de alguém não me ter compreendido. Desemprego do primeiro trimestre a FED coloca como data 2020-04-01 quando deveria ser 2020-03-31 ou 30 ou 29 dependendo de qual o último dia útil do mês de Março. Este ano teria sido 2020-03-31 porque foi dia útil. Assim alinharia perfeitamente com o fecho do trimestre no S&P mas nãaaaaao, há que fazer as coisas da forma mais complicada (e ligeiramente errada) ?

    Edited by Virtua
    • Upvote 1
    Link to post
    Share on other sites
    Rick Lusitano

    Esqueci-me de te dar feedback sobre a instalação.

    - Eu já tinha o Anaconda, mas fazendo de conta que não tinha, basta ir ao teu link, fazer o download do Anaconda e instalar. -> Check

    - Ir ao Anaconda Prompt (há 2 Prompt, mas fui ao "Anaconda Prompt", que é o que costumo usar), coloquei apenas as 4 últimas de código para instalar as libraries necessárias. -> Check

     

    A nível de instalação está tudo. Com a indicação que tudo teve sucesso. É simples, não preciso mais nada para a instalação.

    Agora é só meter as mãos na massa, que começa com a criação da pasta do projecto, sacar ficheiros de dados e o script. Que será a 2ª fase. ;)

    Edited by Rick Lusitano
    • Upvote 1
    Link to post
    Share on other sites

    Post 1.1 - Drawdowns e Tabela de performance

    Todos os Post x.y são continuação do post x e o código do post x será necessário (pode ser o código limpo). Assim e continuando o que já fizemos:

    image.png.97ee45438fc4b1d4c7314aa8190ba3bc.png  

    image.png.3796bdec4ca2122da200552e29efd9d5.pngimage.png.5d7110edd84b71dd87386ea964261907.png

    image.thumb.png.83d1ae3b9d2c991682a9753f951a60f3.pngimage.png.77fb58be8421b101f9d12b6b6e046bd1.png

    Isto está a demorar mais que o esperado porque estou a fazer as alterações à biblioteca on- the-fly de forma a ficar mais user friendly e para outras pessoas usarem. Por exemplo o título da tabela de performance não aparecia automaticamente. Também vou ter de fazer um aviso para quem tentar calcular uma tabela de performance para um período superior ao que temos (imaginemos neste caso a comparação é de mais ou menos 5.9 anos e alguém coloca "years=10"). Por enquanto ainda dá errado mas vou corrigir isso. Só não queria adiar mais e colocar aqui o que já está para tentarem testar. (O que aqui está continuará a funcionar, mesmo após algumas alterações que planeio fazer à biblioteca.)

    EDIT:

    Já criei o alerta para quando se tenta passar um período que começaria mais cedo do que o início da série temporal/DataFrame:

    image.thumb.png.7808aa911ba639e40e00b70440855518.png

    Podem ver o ficheiro completo aqui

    e o código "limpo" em baixo: 

    # Import libraries
    import pandas as pd
    import cufflinks as cf
    
    import PortfolioAnalyser as pa
    
    # Set cufflinks offline
    cf.go_offline()
    
    # Ler IS3Q, colocar index como datetime e dar o nome do ticker à coluna 
    IS3Q = pd.read_csv('IS3Q.csv', index_col='Date', parse_dates=True)[['Price']]
    IS3Q.columns = ['IS3Q']
    
    # Ler IWDA, colocar index como datetime e dar o nome do ticker à coluna 
    IWDA = pd.read_csv('IWDA.csv', index_col='Date', parse_dates=True)[['Price']]
    IWDA.columns = ['IWDA']
    
    # Fazer dataframe ETFs com merge dos dois ETFs
    ETFs = pa.merge_time_series(IS3Q, IWDA, how='inner')
    ETFs = ETFs.sort_index(ascending=True)
    
    # Fazer o growth index
    ETFs_gi = pa.compute_growth_index(ETFs)
    
    # Fazer o gráfico plotly
    ETFs_gi.iplot(dimensions=pa.dimensions)
    
    ### Devem usar nova célula ###
    
    # Fazer DataFrame dos Drawdowns e associar a uma variável
    DD = pa.compute_drawdowns(ETFs_gi)
    
    # Fazer o gráfico plotly
    DD.iplot(dimensions=pa.dimensions)
    
    ### Devem usar nova célula ###
    
    # Performance since inception
    pa.compute_performance_table(ETFs_gi)
    
    ### Devem usar nova célula ###
    
    # Performance a 3 anos
    pa.compute_performance_table(ETFs_gi, years=3)

     

    Edited by Virtua
    Link to post
    Share on other sites

    Join the conversation

    You are posting as a guest. If you have an account, sign in now to post with your account.
    Note: Your post will require moderator approval before it will be visible.

    Guest
    Reply to this topic...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...