Outros sites Medialivre
Caldeirão da Bolsa

Programação para Finanças (R/Python)

Espaço dedicado a todo o tipo de troca de impressões sobre os mercados financeiros e ao que possa condicionar o desempenho dos mesmos.

Re: Programação para Finanças (R/Python)

por Ex-Bender » 22/11/2018 16:13

 
Mensagens: 51
Registado: 30/1/2008 15:25

Re: Programação para Finanças (R/Python)

por Artista Romeno » 7/11/2018 20:23

VirtuaGod Escreveu:Tenho andado afastado deste mundo mas vou voltar a estudar programação nos próximos 2 meses até ao final do ano, altura em que deverei focar no nível 2 do CFA.

Avanços:

Descoberta do kernel SoS para o juyter notebook. Permite seleccionar qual a linguagem que queremos usar em cada célula do notebook. Pela primeira vez tenho usado R e Python no mesmo jupyter notebook, como se fossem a mesma linguagem.

https://vatlab.github.io/sos-docs/

Objectivo:

Aprender Julia até ao final do ano para fazer as simulação de Monte Carlo. Julia é outra linguagem, que é quase tão simples de escrever como R ou Python mas que é quase tão rápido como C++

As minhas experiências para testar a velocidade foi uma simulação de Monte Carlo com 100 milhões de iterações para descobrir o valor de "pi". Ou seja a mesma coisa nas 3 linguagens. O tempo demorado foi:

R: 5 minutos e 15 segundos
Python: 2 minutos e 16 segundos
Julia: 0.9 segundos.

Sim, menos de um segundo em Julia. Não é erro :D

Uma vez que posso usar qualquer linguagem em cada célula nos Jupyter Notebooks o objectivo é usar Julia mesmo só para as simulações de Monte Carlo, transformando o tempo que elas demoram a fazer de 3 minutos para 2 segundos!

bom pode ser que seja esse do julia que vou aprender :) o phyton para ter dados de 600 ações e um bocado pesado mais vale ver a velha do salmo a rezar, tive um estagiario que me fez o programa :idea: agora pelo menos já sei carregar F5 :mrgreen:
mas o que leva a escrever é o CFA L2 que passei este ano, eu só digo que nesta fase do campeonato já andava era a estudar ´há mais de 3 meses.... é que o nivel 2 é bem mais tramado que o 1 e apesar de nao ter tanta contabilidade do que disses-te nao gostar se me lembro a que tem é tramada e a parte mais mal explicada do curriculo todo.....o 2 faz o um parecer um brincadeira só digo isto. Fiquei no percentil 90 mas vi o caso mal parado tanto que logo ali em agosto comprei os livros de exames do kaplan :-k
As opiniões expressas baseiam-se essencialmente em análise fundamental, e na relação entre o valor de mercado dos ativos e as suas perspectivas futuras de negocio, como tal traduzem uma interpretação pessoal da realidade,devendo como tal apenas serem consideradas como uma perspetiva meramente informativa sobre os ativos em questão, não se constituindo como sugestões firmes de investimento
Avatar do Utilizador
 
Mensagens: 5385
Registado: 4/4/2014 18:06
Localização: Iberia

Re: Programação para Finanças (R/Python)

por Ingenting » 7/11/2018 17:57

VirtuaGod Escreveu:Tenho andado afastado deste mundo mas vou voltar a estudar programação nos próximos 2 meses até ao final do ano, altura em que deverei focar no nível 2 do CFA.

Avanços:

Descoberta do kernel SoS para o juyter notebook. Permite seleccionar qual a linguagem que queremos usar em cada célula do notebook. Pela primeira vez tenho usado R e Python no mesmo jupyter notebook, como se fossem a mesma linguagem.

https://vatlab.github.io/sos-docs/

Objectivo:

Aprender Julia até ao final do ano para fazer as simulação de Monte Carlo. Julia é outra linguagem, que é quase tão simples de escrever como R ou Python mas que é quase tão rápido como C++

As minhas experiências para testar a velocidade foi uma simulação de Monte Carlo com 100 milhões de iterações para descobrir o valor de "pi". Ou seja a mesma coisa nas 3 linguagens. O tempo demorado foi:

R: 5 minutos e 15 segundos
Python: 2 minutos e 16 segundos
Julia: 0.9 segundos.

Sim, menos de um segundo em Julia. Não é erro :D

Uma vez que posso usar qualquer linguagem em cada célula nos Jupyter Notebooks o objectivo é usar Julia mesmo só para as simulações de Monte Carlo, transformando o tempo que elas demoram a fazer de 3 minutos para 2 segundos!


Tem cuidado com esses benchmarks porque não contam a história toda. Para além disso, se correres as extensões C para o Python (Cython) tens uma performance completamente diferente - o teu código provavelmente não está optimizado. Eu entendo o fascínio do Julia - eu próprio aprendi Julia em dois dias, mas não estou nada rendido. Se quero ter performance, continuo a programar em C++. E o R é muito bom para testar algoritmos e para a produção de resultados gráficos. As únicas coisas que me farão migrar do R para o Julia serão a quantidade de bibliotecas, a criação de uma comunidade com massa crítica e a resolução de alguns bugs. Tenho usado o Juno como IDE e não estou muito impressionado, devo dizê-lo. Mas estes próximos dias irei explorar mais o Julia, dado que queria construir um package como exercício. Talvez mude de opinião num futuro não muito longínquo, mas a minha opinião sobre o Julia, de momento, é tépida.
Avatar do Utilizador
 
Mensagens: 394
Registado: 11/4/2017 23:13

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/11/2018 1:16

Tenho andado afastado deste mundo mas vou voltar a estudar programação nos próximos 2 meses até ao final do ano, altura em que deverei focar no nível 2 do CFA.

Avanços:

Descoberta do kernel SoS para o juyter notebook. Permite seleccionar qual a linguagem que queremos usar em cada célula do notebook. Pela primeira vez tenho usado R e Python no mesmo jupyter notebook, como se fossem a mesma linguagem.

https://vatlab.github.io/sos-docs/

Objectivo:

Aprender Julia até ao final do ano para fazer as simulação de Monte Carlo. Julia é outra linguagem, que é quase tão simples de escrever como R ou Python mas que é quase tão rápido como C++

As minhas experiências para testar a velocidade foi uma simulação de Monte Carlo com 100 milhões de iterações para descobrir o valor de "pi". Ou seja a mesma coisa nas 3 linguagens. O tempo demorado foi:

R: 5 minutos e 15 segundos
Python: 2 minutos e 16 segundos
Julia: 0.9 segundos.

Sim, menos de um segundo em Julia. Não é erro :D

Uma vez que posso usar qualquer linguagem em cada célula nos Jupyter Notebooks o objectivo é usar Julia mesmo só para as simulações de Monte Carlo, transformando o tempo que elas demoram a fazer de 3 minutos para 2 segundos!
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por JohnyRobaz » 8/6/2018 0:58

VirtuaGod Escreveu:
JohnyRobaz Escreveu:Achas que a informação fornecida é credível, sendo gratuita?

É. Aquilo tem um hedge fund por detrás. Devem gastar bom $ a fazer o sistema.

JohnyRobaz Escreveu:E para obter info de outros mercados, há fontes do género, gratuitas?

Consegues arranjar cenas gratuitas da yahoo finance ou da google finance mas se queres coisas boas tens de pagar. O Quandl é um bom sítio para começares a pesquisar o que de melhor há por aí.

Outra questão é: de entre o macOS e o Linux no Ubuntu, qual o melhor sistema para programar este tipo de coisas, mais relacionadas com algoritmos de trading, obtenção de dados online, tratamento destes, etc?

Provavelmente tanto faz. A maioria dos IDEs (software onde programas) funciona nos 3 principais sistemas (os dois que falas + windows). Se vais usar quantopian provavelmente até só precisas de um browser, por isso... usa o sistema com que te sentes mais à vontade!!


Obrigado VG, vou de facto tentar fazer alguns da Udemy depois de varrer estes leituras do Quantopian, que são gratuitas e já devem dar umas bases de partida. Infelizmente não tenho muito tempo para isto, e além do mais sou engenheiro de formação e noto que mesmo tendo algumas bases de estatística, há muita coisa que me falha e preciso de mais tempo para recordar conceitos de estatística associados ao risco e aplicar a finanças. Basicamente, há todo um mundo para desbravar em várias frentes e em simultâneo. 8-)
“E assim como sonho, raciocino se quero, porque isso é apenas uma outra espécie de sonho.”, Fernando Pessoa
“Nothing good ever comes of love. What comes of love is always something better” , Roberto Bolaño
"A ciência e o poder do homem coincidem, uma vez que, sendo a causa ignorada, frustra-se o efeito. Pois a natureza não se vence, senão quando se lhe obedece." Francis Bacon
Avatar do Utilizador
 
Mensagens: 4619
Registado: 20/8/2014 16:50

Re: Programação para Finanças (R/Python)

por VirtuaGod » 8/6/2018 0:05

JohnyRobaz Escreveu:Achas que a informação fornecida é credível, sendo gratuita?

É. Aquilo tem um hedge fund por detrás. Devem gastar bom $ a fazer o sistema.

JohnyRobaz Escreveu:E para obter info de outros mercados, há fontes do género, gratuitas?

Consegues arranjar cenas gratuitas da yahoo finance ou da google finance mas se queres coisas boas tens de pagar. O Quandl é um bom sítio para começares a pesquisar o que de melhor há por aí.

Outra questão é: de entre o macOS e o Linux no Ubuntu, qual o melhor sistema para programar este tipo de coisas, mais relacionadas com algoritmos de trading, obtenção de dados online, tratamento destes, etc?

Provavelmente tanto faz. A maioria dos IDEs (software onde programas) funciona nos 3 principais sistemas (os dois que falas + windows). Se vais usar quantopian provavelmente até só precisas de um browser, por isso... usa o sistema com que te sentes mais à vontade!!
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por JohnyRobaz » 7/6/2018 0:47

VirtuaGod Escreveu:
Thoth Escreveu:Não esquecer que para trading automático é necessário que a corretora tenha API.

Interactive Brokers + Python :wink: A API da IB até dá as cotações intraday dos últimos 15 dias ;-)

já ouviste falar da EasyLanguage? Se sim, achas que é superior ao Python no que toca a aplicar em sistemas de trading automático? Ou é menos abrangente e portanto pior?

Não vejo vantagens ou desvantagens numa ou noutra linguagem. Aqui a diferença está na comunidade e no $. A quantopian tem uma boa comunidade python e é tudo gratuito. Por outro lado a comunidade da TradeStation é fechada a clientes deles, e não é nada barato ser cliente deles. No meu tempo de trading eram 100 usd ao mês.

Penso que o mais importante no mundo da programação são as comunidades. Isso fomenta muito a existência de uma saudável troca de ideias e a existência de bons tutoriais para aprender a linguagem. Para quem está a começar e não entre naquele nível super-evoluído tanto me faz escrever em R, Python, JavaScript, Julia, Go, Java etc etc Uma diferença significativa seria se uma fosse high level e outra low level, mas não é o caso pelo que não deve fazer grande diferença em termos técnicos e de dificuldade (ambas são high level).


Ok, vou tentar abordar isto através do python.

Uma coisa que não estava à espera e que vi na primeira lecture do Quantopian é que eles têm uma API que, caso trabalhemos num notebook do próprio Quantopian, nos fornece através do get_pricing os preços e volumes das cotadas norte-americanas, tal como, através de outras funções, obter outros dados financeiros. Achas que a informação fornecida é credível, sendo gratuita? Dava imenso jeito, ainda por cima com as funções já preparadas. E para obter info de outros mercados, há fontes do género, gratuitas? Peço que percebi tu trabalhas mais com fundos, e não tanto com acções directamente, mas espero que me consigas elucidar.

Outra questão é: de entre o macOS e o Linux no Ubuntu, qual o melhor sistema para programar este tipo de coisas, mais relacionadas com algoritmos de trading, obtenção de dados online, tratamento destes, etc? Como deves estar a perceber, estou a principiar o nível principiante... :P

Abraço
“E assim como sonho, raciocino se quero, porque isso é apenas uma outra espécie de sonho.”, Fernando Pessoa
“Nothing good ever comes of love. What comes of love is always something better” , Roberto Bolaño
"A ciência e o poder do homem coincidem, uma vez que, sendo a causa ignorada, frustra-se o efeito. Pois a natureza não se vence, senão quando se lhe obedece." Francis Bacon
Avatar do Utilizador
 
Mensagens: 4619
Registado: 20/8/2014 16:50

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/6/2018 20:15

Thoth Escreveu:Não esquecer que para trading automático é necessário que a corretora tenha API.

Interactive Brokers + Python :wink: A API da IB até dá as cotações intraday dos últimos 15 dias ;-)

já ouviste falar da EasyLanguage? Se sim, achas que é superior ao Python no que toca a aplicar em sistemas de trading automático? Ou é menos abrangente e portanto pior?

Não vejo vantagens ou desvantagens numa ou noutra linguagem. Aqui a diferença está na comunidade e no $. A quantopian tem uma boa comunidade python e é tudo gratuito. Por outro lado a comunidade da TradeStation é fechada a clientes deles, e não é nada barato ser cliente deles. No meu tempo de trading eram 100 usd ao mês.

Penso que o mais importante no mundo da programação são as comunidades. Isso fomenta muito a existência de uma saudável troca de ideias e a existência de bons tutoriais para aprender a linguagem. Para quem está a começar e não entre naquele nível super-evoluído tanto me faz escrever em R, Python, JavaScript, Julia, Go, Java etc etc Uma diferença significativa seria se uma fosse high level e outra low level, mas não é o caso pelo que não deve fazer grande diferença em termos técnicos e de dificuldade (ambas são high level).
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por JohnyRobaz » 1/6/2018 17:18

Thoth Escreveu:Não esquecer que para trading automático é necessário que a corretora tenha API.

Cumprimentos e bons negócios


Sim, mas o meu objectivo para já nem é a realização das operações em concreto, mas mais a parte da obtenção de ordens de compra/venda, e a realização de backtests com diversos sistemas analisando a maior rentabilidade com base em vários parâmetros. Mas sim, no futuro, talvez associar a uma corretora com API.

VirtuaGod Escreveu:Tens acesso "eterno" aos vídeos e apontamentos (Jupyter Notebooks muito bons). Mas a isso tens de associar a comunidade. Há sempre alguém a tirar o curso e se as coisas ficarem deactualizadas ou o código quebrar "chateiam-no" logo e ele tenta resolver.


Boa, isso é bom. Outra questão, ja ouviste falar da EasyLanguage? Se sim, achas que é superior ao Python no que toca a aplicar em sistemas de trading automático? Ou é menos abrangente e portanto pior?

Cumps!
“E assim como sonho, raciocino se quero, porque isso é apenas uma outra espécie de sonho.”, Fernando Pessoa
“Nothing good ever comes of love. What comes of love is always something better” , Roberto Bolaño
"A ciência e o poder do homem coincidem, uma vez que, sendo a causa ignorada, frustra-se o efeito. Pois a natureza não se vence, senão quando se lhe obedece." Francis Bacon
Avatar do Utilizador
 
Mensagens: 4619
Registado: 20/8/2014 16:50

Re: Programação para Finanças (R/Python)

por Thoth » 1/6/2018 17:09

Não esquecer que para trading automático é necessário que a corretora tenha API.

Cumprimentos e bons negócios
“O que está em cima é como o que está em baixo, e o que está em baixo é como o que está em cima”
Avatar do Utilizador
 
Mensagens: 1925
Registado: 29/9/2016 16:38
Localização: Antigo Egito

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/6/2018 17:02

Tens acesso "eterno" aos vídeos e apontamentos (Jupyter Notebooks muito bons). Mas a isso tens de associar a comunidade. Há sempre alguém a tirar o curso e se as coisas ficarem deactualizadas ou o código quebrar "chateiam-no" logo e ele tenta resolver.

Para ser honesto não tirei (ainda) a parte de Trading mas sei que é com base no quantopian e por isso terás acesso simples e grátis a acções/ETFs americanos. Não sei qual a facilidade de transformar isso em trading para fora da plataforma quantopian mas não deverá ser nada do outro mundo.

Se estás a começar com python recomendo seguires o curso todo pois mesmo que faças/vejas coisas que não te interessam muito vais aprendendo python com os projectos dele (sempre ligados a finanças nesse curso). Por 10 euros não tens muito a perder mas a udemy ainda te dá um money-back-guarantee de 30 dias se ficares insatisfeito :shock:
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por JohnyRobaz » 1/6/2018 16:52

VirtuaGod Escreveu:Para mim aprender python tem um nome. Jose Portilla.

Tenho quase todos os cursos dele na Udemy que costumo comprar por cerca de 10 a 12 euros (pesquisem no google por "udemy coupon 10" e/ou usem o incognito mode por causa das cookies). Para a qualidade e QUANTIDADE de informação fornecida 10 euros é praticamente grátis e poupa-me o tempo que poderia perder (e perdi) com tutoriais inferiores e/ou desactualizados.

Ajuda obviamente terem um projecto que vão desenvolvendo ao mesmo tempo que vão aprendendo pois absorver a informação só vendo os vídeos não vão a lado nenhum!! Por isso é que eu faço tantos projectos e partilho aqui na comunidade :wink: Terem uma ideia clara do que querem fazer com o que vão aprender é meio caminho andado!!

Tem DOIS cursos em python que são brilhantes e que efectivamente foram 100% em linha com o que eu queria:

Python for Data Science and Machine Learning Bootcamp: https://www.udemy.com/python-for-data-science-and-machine-learning-bootcamp

Python for Financial Analysis and Algorithmic Trading: https://www.udemy.com/python-for-finance-and-trading-algorithms


Sim, concordo que aprender só por aprender é um pouco perder tempo. Eu queria aprender com foco exactamente para desenvolver um sistema de trading automático / algorítmico. Ou algo realmente próximo disso. Vejo que o segundo curso que propões está relacionado com isso. Se comprares esse curso, ficas com acesso aos vídeos/artigos etc por tempo indeterminado? Ou passados uns dias ficas sem acesso? Estou a ponderar seriamente nesse.

Nunca uso versões de nada com mais de um ano e se possível sempre as mais actuais. Python 3, pandas, matplotlib etc etc


Pois também penso assim, vale sempre mais ter as versões mais actualizadas, mas pronto, poderia ir dar ao mesmo.

Obrigado pelas respostas.
“E assim como sonho, raciocino se quero, porque isso é apenas uma outra espécie de sonho.”, Fernando Pessoa
“Nothing good ever comes of love. What comes of love is always something better” , Roberto Bolaño
"A ciência e o poder do homem coincidem, uma vez que, sendo a causa ignorada, frustra-se o efeito. Pois a natureza não se vence, senão quando se lhe obedece." Francis Bacon
Avatar do Utilizador
 
Mensagens: 4619
Registado: 20/8/2014 16:50

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/6/2018 16:35

Para mim aprender python tem um nome. Jose Portilla.

Tenho quase todos os cursos dele na Udemy que costumo comprar por cerca de 10 a 12 euros (pesquisem no google por "udemy coupon 10" e/ou usem o incognito mode por causa das cookies). Para a qualidade e QUANTIDADE de informação fornecida 10 euros é praticamente grátis e poupa-me o tempo que poderia perder (e perdi) com tutoriais inferiores e/ou desactualizados.

Ajuda obviamente terem um projecto que vão desenvolvendo ao mesmo tempo que vão aprendendo pois absorver a informação só vendo os vídeos não vão a lado nenhum!! Por isso é que eu faço tantos projectos e partilho aqui na comunidade :wink: Terem uma ideia clara do que querem fazer com o que vão aprender é meio caminho andado!!

Tem DOIS cursos em python que são brilhantes e que efectivamente foram 100% em linha com o que eu queria:

Python for Data Science and Machine Learning Bootcamp: https://www.udemy.com/python-for-data-science-and-machine-learning-bootcamp

Python for Financial Analysis and Algorithmic Trading: https://www.udemy.com/python-for-finance-and-trading-algorithms

Nunca uso versões de nada com mais de um ano e se possível sempre as mais actuais. Python 3, pandas, matplotlib etc etc

P.S. Se dinheiro não for muito um problema e poderem investir 30 euros mês recomendo o datacamp :wink: Tb tem coisas interessantes ligadas a finanças.
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por JohnyRobaz » 1/6/2018 16:11

Boas,

Tenho andado a ver se começo a ambientar-me no python direccionado para sistemas automáticos de trading, e comecei por aqui:

https://www.quantstart.com/articles/Installing-a-Desktop-Algorithmic-Trading-Research-Environment-using-Ubuntu-Linux-and-Python

Nesse vídeo, que penso ser de 2013, eles instalam o python 2 e que supostamente ainda funciona com o iPython, e as instalações por pip são feitas usando no ubuntu, o "pip".
No entanto, actualmente já existe o Python 3, que eu (não sei porquê, pareceu-me razoável) decidi instalar, e vez do 2, como está no vídeo. No entanto, claro que no final não consegui abrir o iPython. E pelo que percebi as instalações de bibliotecas e etc por pip no Python 3 são feitas usando "pip3" em vez de "pip". Mesmo assim, o iPython não abre como no final do vídeo, e pelo que percebi, agora nesta versão 3 o iPython foi substituido peplo Jupyter... No entanto, não sei se os tutoriais disponíveis e artigos (nesse mesmo site, por exemplo) estarão feitos de uma forma abrangente a este novo Jupyter, ou se devia instalar o Python 2 como fazem no vídeo, mesmo sendo uma versão supostamente desactualizada...

Vocês usam que versão?

Cumps!
“E assim como sonho, raciocino se quero, porque isso é apenas uma outra espécie de sonho.”, Fernando Pessoa
“Nothing good ever comes of love. What comes of love is always something better” , Roberto Bolaño
"A ciência e o poder do homem coincidem, uma vez que, sendo a causa ignorada, frustra-se o efeito. Pois a natureza não se vence, senão quando se lhe obedece." Francis Bacon
Avatar do Utilizador
 
Mensagens: 4619
Registado: 20/8/2014 16:50

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/6/2018 15:42

LaTeX é de facto uma das melhores formas de fazer PDFs bonitos. É o que o RStudio usa. Dá muito jeito principalmente nas fórmulas matemáticas que ficam escritas como se fosse à mão (pretty print).

Ainda não sei usar com python mas à velocidade que a data science está a convergir para software poliglota, não tarda nada estarei a fazer RNotebooks em Python :D :D
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por LoneWolf » 1/6/2018 9:17

És incansável VG! Mais uma vez parabens!
Para PDFs muito bonitos, dá uma olhadela ao LaTeX. E isto aqui tb: https://www.youtube.com/watch?v=AETwIlDZyak

Cumprimentos!
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

Re: Programação para Finanças (R/Python)

por VirtuaGod » 1/6/2018 0:25

Acho que tenho de actualizar o título porque tenho andado a brincar com JavaScript :D

JavaScript permite que os gráficos plotly sejam directamente integrados num site continuando a ter a interactividade com que já estamos habituados em python.

Para além disso tenho aprendido novos tipos de funcionalidades como animação. Sigam o link e cliquem em play :wink:

http://portfolioanalyser.net/4Fundos

Isto permite, entre outras coisas, a evolução de apresentações para terem um elemento de história pois dá sempre para parar o gráfico e perguntar "O que faria agora?" em vez de se ver um gráfico que se vê logo que foi "sempre" a subir ;-)

O "gráfico" está a usar todo o browser por isso se o quiserem mais pequeno tornem a janela do browser mais pequena e cliquem em refresh (depois podem voltar a maximizar a janela se quiserem).

Código: Selecionar todos
<!DOCTYPE html>
<html>

<head>
  <!-- Plotly.js -->
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>

<body>
  <!-- Plotly chart will be drawn inside this DIV -->
    <div id="myDiv"></div>
    <script>
    /* JAVASCRIPT CODE GOES HERE */
Plotly.d3.csv("https://raw.githubusercontent.com/LuisSousaSilva/Articles-and-studies/master/4Fundos%20(R%20and%20Python)/Portfolios.csv", function(err, rows){

  function unpack(rows, key) {
  return rows.map(function(row) { return row[key]; });
}

  var frames = []
  var x2  = unpack(rows, '')
  var y2  = unpack(rows, '4Fundos DEF')
  var x = unpack(rows, '')
  var y = unpack(rows, '4Fundos EW')
  var x3 = unpack(rows, '')
  var y3 = unpack(rows, '4Fundos AGR')
 
  var n = 2755;
  for (var i = 0; i < n; i++) {
    frames[i] = {data: [
      {x: [], y: []},
      {x: [], y: []},
      {x: [], y: []},
                 ]     }
    frames[i].data[1].x = x.slice(0, i+1);
    frames[i].data[1].y = y.slice(0, i+1);
    frames[i].data[0].x = x2.slice(0, i+1);
    frames[i].data[0].y = y2.slice(0, i+1);
    frames[i].data[2].x = x3.slice(0, i+1);
    frames[i].data[2].y = y3.slice(0, i+1);
  }
 
  var trace1 = {
    type: "scatter",
    mode: "lines",
    name: '4Fundos Def',
    opacity: 0.8,
    x: frames[5].data[1].x,
    y: frames[5].data[1].y,
    line: {color: 'royalblue', width: 1.3}
  }

  var trace2 = {
    type: "scatter",
    mode: "lines",
    name: '4Fundos Mod',
    opacity: 0.8,
    x: frames[5].data[0].x,
    y: frames[5].data[0].y,
    line: {color: 'dimgrey', width: 1.3}
  }
 
   var trace3 = {
    type: "scatter",
    mode: "lines",
    name: '4Fundos Agr',
    opacity: 0.7,
    x: frames[5].data[0].x,
    y: frames[5].data[0].y,
    line: {color: '#4b0082', width: 1.3}
  }

  var data = [trace1, trace2, trace3];
   
  var layout = {
    title: 'Carteiras 4Fundos',
    xaxis: {
      range: [
              frames[2754].data[0].x[0],
              frames[2754].data[0].x[2754]
             ],
      showgrid: true,
      tickvals:[2008,
      2009, 2010, 2011, 2012, 2013, 2014,
      2015, 2016, 2017, 2018],
      ticktext:[2008,
      2009, 2010, 2011, 2012, 2013, 2014,
      2015, 2016, 2017, 2018]
    },
    paper_bgcolor: 'rgb(250,250,250)',
    plot_bgcolor: 'rgb(250,250,250)',
    yaxis: {
      range: [50, 220],
      showgrid: true,
      dtick: 25
      },
    legend: {
      orientation: 'h',
      x: 0.5,
      y: -0.15,
      xanchor: 'center'
    },
    updatemenus: [{
      x: 0.5,
      y: 0,
      yanchor: "top",
      xanchor: "center",
      showactive: true,
      direction: "left",
      type: "buttons",
      pad: {"t": 87, "r": 10},
      buttons: [{
        method: "animate",
        args: [null, {
          fromcurrent: true,
          transition: {
            duration: 0,
          },
          frame: {
            duration: 1,
            redraw: false
          }
        }],
        label: "Play"
      }, {
        method: "animate",
        args: [
          [null],
          {
            mode: "immediate",
            transition: {
              duration: 0
            },
            frame: {
              duration: 0,
              redraw: false
            }
          }
        ],
        label: "Pause"
      }]
    }]
  };

  Plotly.newPlot('myDiv', data, layout).then(function() {
    Plotly.addFrames('myDiv', frames);
  });
})

 /* JAVASCRIPT CODE GOES HERE */
  </script>
</body>

</html>

P.S. O gráfico pode ser um pouco lento porque são as cotações diárias e são muitos pontos. Provavelmente transformarei as cotações em semanais mas acho que não precisam de esperar até ao fim para perceber a ideia do que fiz :wink:
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por VirtuaGod » 27/4/2018 14:56

É ridículo a quantidade de alegria que tenho quando vejo algo deste tipo :-)
Anexos
Django_works.PNG
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por VirtuaGod » 27/1/2018 1:58

Tenho andado a experimentar os R Notebooks (http://rmarkdown.rstudio.com/r_notebooks.html)

Primeiro output em PDF que fiz em anexo. Bom para apresentação de relatórios e/ou trabalhos em papel/PDF.
Anexos
Capture.PNG
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por VirtuaGod » 15/1/2018 22:41

Estas últimas 24 horas foram extremamente produtivas.

Depois do avanço que dei ontem (ver posts acima) hoje consegui implementar algo que queria fazer há meses mas não estava a ver como.

Filtros:

    .Peso máximo por fundo
    .Peso máximo permitido no TOP3
    .Drawdown máximo permitido à carteira

Um progresso para a minha análise de risco e diversificação na construção de carteiras. Possivelmente irei partilhar mais para a frente.

Simulação sem filtros:

Imagem

Simulação com filtros de sobre-optimização:

Nenhum fundo com peso superior a 20% e nenhuns 3 fundos com peso superior a 50%. Notem como aquelas carteiras "malucas" mais longe da "nuvem" desapareceram:

Imagem

Simulação com limite de drawdown da carteira:

À simulação anterior acrescentei um limite ao drawdown máximo da carteira, neste caso 30%. Reparem como as carteiras com mais retorno (e por isso mais arriscadas) desapareceram:

Imagem

P.S. - Estas simulações usam 11 fundos seleccionados por mim com activos desde obrigações governamentais a small caps, passando por obrigações convertíveis
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por VirtuaGod » 15/1/2018 15:48

LoneWolf Escreveu:Tu és uma máquina! :clap: :clap:

Não sei. Foi sem querer. Estou sempre a ler que estas linguagens são lentas (python/R) e que se deve minimizar o uso delas optando por bibliotecas como o numpy que é escrito em c++ e tem coisas rápidas que nem compreendo (bibliotecas BLAS). Nunca pensei que a diferença fosse tão grande.

A grande mais valia destas linguagens é mesmo a ligação com bibliotecas escritas em c++, javascript etc etc

Um script bem escrito fica assustadoramente rápido!! É que nesses 70 segundos a máquina não faz só 500 mil cálculos. Tem de fazer atribuições aleatórias de pesos, fazer uma multiplicação de matrizes para criar o portfolio, calcular a rentabilidade (e só aqui tem uma divisão e uma multiplicação por 100), desvio padrão (aqui tem que calcular as variações diárias, uma raiz quadrada e fazer uma multiplicação) e sharpe para cada um dos 500 mil portfolios :shock: Resumidamente faz alguns milhões de cálculos!!
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por LoneWolf » 15/1/2018 10:05

Tu és uma máquina! :clap: :clap:
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

Re: Programação para Finanças (R/Python)

por FredericoRocha » 14/1/2018 22:07

Espectáculo !! :clap: :clap:
 
Mensagens: 235
Registado: 11/8/2016 14:08

Re: Programação para Finanças (R/Python)

por VirtuaGod » 14/1/2018 22:05

Recentemente tive a oportunidade de corrigir uma biblioteca de cálculos financeiros em python. Este pessoal percebe muito de programação mas matemática financeira passa um pouco ao lado às vezes.

Mas NUNCA pensei que como hoje chegasse ao ponto de não só corrigir a matemática financeira mas em simultâneo tornar o código dezenas de vezes mais eficiente. Com o código antigo fazer uma simulação de Monte Carlo com 25 mil carteiras demorava:

CPU times: user 51.2 s, sys: 172 ms, total: 51.3 s

Com o novo código (alterado por mim) demora:

CPU times: user 3.68 s, sys: 12 ms, total: 3.69 s

Há algo de muito gratificante quando fazemos algo deste género :wink:

EDIT: A mega simulação de 500 mil portfolios, que ocasionalmente faço, passou de 24 minutos para 70 segundos :shock: :shock: :shock:
Editado pela última vez por VirtuaGod em 14/1/2018 22:39, num total de 2 vezes.
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Programação para Finanças (R/Python)

por VirtuaGod » 2/1/2018 23:25

SFT Escreveu:Aproveito para informar que o DataCamp está com promoção de princípio do ano, para quem estiver interessado.

E valem bem a pena. É uma das minhas principais fontes para cenas financeiras. Têm em python e R. Para além de que estão o sempre a meter cursos novos. Financeiros é mais ou menos um todos os meses se contarmos com cursos em R e Python (cada curso é de aproximadamente 4 horas). Mas os que lá tem já são bastantes. O mais recente até apliquei cenas que do currículo do CFA nível 1 como net present value, IRR e tomadas de decisão com base nisso (foi em python e obviamente já fiz :D ). Têm várias coisas de finanças e análise e tratamento de séries temporais em pipeline para o primeiro trimestre do ano.

https://www.datacamp.com/courses/intro-to-financial-concepts-using-python

Em R centram-se mais em bibliotecas existentes, pois a comunidade open source financeira está mais desenvolvida. Em Python cria-se algumas funções novas, o que também tem a sua utilidade e é interessante.

Têm imensas coisas de estatística (principalmente em R) que infelizmente ainda não explorei como deve ser. Mas tenho bastantes cursos financeiros e de manipulação de dados já feitos (e os que faltam devo fazer em breve).
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Próximo

Quem está ligado:
Utilizadores a ver este Fórum: aaugustobb_69, Bing [Bot], GamesOver, Google [Bot], Xacal e 147 visitantes