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 em R para Finanças

por VirtuaGod » 15/2/2017 17:33

O que pretendes fazer?

De qualquer forma R é o caminho e é bastante simples. EM duas semanas o Varendia foi de sacar o R + RStudio a fazer uma Fronteira Eficiente :shock:

Instala o R e o RStudio e lê o tópico desde o início. instala o quantmod, devtools etc e depois o meu package e começa a sacar fundos do best que aches bons para a base de dados.

Quando tiveres a base de dados o resto é simples. Se quiseres ajuda vai pedindo que o pessoal vai dando dicas (atrás deram-me uma dica brilhante). Começas com fundos mas depois podes ir incluindo o que quiseres na base de dados, só tens de arranjar os dados/cotações.

Por enquanto ainda ng é expert em R por isso seria porreiro apanhares o comboio ainda a sair da estação :wink:

A ideia será criar uma comunidade de R/Finance Portugal como a dos fundos de investimento.

A parte 1 é a única coisa que fiz mas isso não diz respeito à carteira 4 fundos. Tens apenas 2 posts da carteira 4 fundos no RPubs.

Abr
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 em R para Finanças

por LoneWolf » 15/2/2017 16:02

Obrigado pela resposta VirtuaGod!

Perguntei-te pelo webscraping/SQLite pq estou a desenvolver uma aplicação para mim em c++/c# com forte peso em interacção e visualização.
Ja tou a montar a BD para guardar tudo o q vou encontrando, mas é um bicho de sete cabeças... Ainda por cima pouco sei de estatística a nível de finanças e muito menos de finanças em geral :oops:

Lendo os teus posts começo a pensar se a tua estratégia de ir pelo R nao será mais interessante do que estou para aqui a montar (só despendi umas horitas na coisa. nada de grave ou maturo.)
E visto q nao tenho mto capital para investir (talvez 5k iniciais com reforços mensais de 500 mocas) estava a pensar usar isso para algumas acções em particular e fundos.

Tenho de ler essa tua coisa da carteira com 4 fundos. Tenho de me registar para ler as 3 partes?
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

Re: Programação em R para Finanças

por VirtuaGod » 15/2/2017 15:50

Não uso o webscrapping para a DB como pensas :mrgreen: Nunca mais saia daqui , para além de ser ridiculamente ineficiente.

O Webscrapping é para actualizar os fundos da DB (fundos, não as cotações, coisas como o nome ISIN, moeda em que é trasaccionado etc etc). Mas ideia de actualizar apenas, em vez de sacar tudo de novo é boa. Um dia implemento... Mas como só uso o webscrapping 1 vez por semana quando incluo mais fundos na base de dados por mim é na boa.

Por outro lado, a minha base de dados, que contem milhao e meio de cotações demora menos de 1 minuto a criar, daí a minha frustação com o webscrapping. Uso um ficheiro CSV com sucesso, não planeio alterar para uma base de dados SQL like no próximos tempos. O ficheiro CSV só tem 10 megas. Quando chegar a 100 megas começo a pensar nisso :mrgreen:

Outra pergunta: partilhas os teus scripts/código nalgum lado?

Não costumo partilhar, talvez um dia... Sou muito apologista de partilha de conhecimento e planeio escrever um livrito para o pessoal aprender a usar o R para finanças. Por enquanto tenho visto que pode haver um downside para mim, devido a projectos que estou a desenvolver e potencialmente rentabilizar. Reproducible Research é algo com que vejo com bons olhos e a package que desenvolvi mais atrás é um passo para isso. Mas não está nos meus planos para breve. Mas ajudo com gosto quem está a aprender, como o Varendia.

Ultima pergunta: conheces ou o que achas deste site: https://www.tradingview.com/script/ ?

Desconhecia mas tb não me parece nada que eu vá dedicar muito tempo a ver. O problema é que não consegues separar o trigo do joio. De vez em quando perco umas horas nos fóruns da quantopian mas não mais do que isso.

Abr
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 em R para Finanças

por LoneWolf » 15/2/2017 15:31

Olá VirtuaGod,
Apesar de nao ter seguido mais este tópico, voltei a cruzar-me com ele e li os ultimos posts. E queria perguntar-te (ou dar uma dica) sobre webscrapping.

VirtuaGod Escreveu:Tenho que te dizer que o webscrapping é tão simples quanto moroso, principalmente se a tua net for tão lenta como dizes. Por cada página que o R tem de fazer o download (que acaba por ser para cada um dos fundos) demora no meu caso 1.5 segundos. Em 250 fundos acaba por ser um processo de 6/7 minutos.


Se bem entendi, webscrapping é fazer um parsing a páginas e sacar, neste caso, os valores de acçoes, ETFs, etc. ( http://stackoverflow.com/questions/3348 ... ith-r-vest ). Se estou correcto, certamente os valores do passado não se alteram. Apenas aparecem novos valores desde a ultima "visita" à página. Parece-me que nao guardas isto localmente. Daí, pergunto-te pq é q nao guardas os valores/tabelas/indicadores localmente?
Fazes uma BD simples ligada ao R e, em vez de cada vez fazeres o download de toda a info de 250 fundos, fazes apenas um update, adicionas os novos valores na BD e executas os cálculos. Cada update demoraria segundos em vez de 7 minutos 8-)

Por exemplo, tens o sqlite q é uma BD bem levezinha para se ter localmente.
https://www.r-bloggers.com/using-sqlite-in-r/

Outra pergunta: partilhas os teus scripts/código nalgum lado?

Ultima pergunta: conheces ou o que achas deste site: https://www.tradingview.com/script/ ?

Cumps!
Lone Wolf
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

Re: Programação em R para Finanças

por VirtuaGod » 15/2/2017 14:22

Tenho que te dizer que o webscrapping é tão simples quanto moroso, principalmente se a tua net for tão lenta como dizes. Por cada página que o R tem de fazer o download (que acaba por ser para cada um dos fundos) demora no meu caso 1.5 segundos. Em 250 fundos acaba por ser um processo de 6/7 minutos.

As boas notícias é que prosso ir tomar uma café entretanto porque o PC não precisa de supervisor :mrgreen:

Outra boa ideia poderá ser estudares o mínimo de RMarkdown (1 hora chega perfeitamente) para teres uns reports catitas como os que eu tenho no meu RPubs.

Estuda PortfolioAnalytics para depois me explicares :mrgreen:
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 em R para Finanças

por Varendia » 15/2/2017 8:39

Bem, ja esta. O optimizer ja esta a fazer tudo de acordo com o MPT teorico. Com o ficheiro de dados ja tratado, vai da leitura ao efficient frontier em menos de 5 segundos. Ridiculo, em vez de ter o Excel a mastigar hipoteses que nunca sao as optimas.

Como o tratar do ficheiro de dados sao outros 5 segundos ... se o web scrapping for igualmente rapido, um dia destes faco em 1 minuto o que levava uma boa semana ou duas.

PortfolioAnalytics here I come.. mas nao hoje.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por Varendia » 15/2/2017 7:08

Este exercicio em R esta a ser muito interessante, nao so pela aprendizagem rapida que a linguagem (e o RStudio que da para visualizar cada passo) como tambem porque estou a ter de reler/refazer o MPT todo e em algumas coisas o que encontro pre feito na net e o que o MPT diz nao bate certo.

Tenho dois problemas, nos modelos R que vejo online, o calculo da matriz CoVar e feita com base na media dos returns, ora bem, se usamos returns diarios, semanais, mensais ou anuais, se nao se faz nenhum acerto, a matrix CoVar e diferente em cada caso. Uma Var de returns diarios nao e o mesmo de uma de returns mensais, e embora a comparacao risk adjusted possa sempre ser feita, para ter uma leitura de medio prazo, eu olho de forma critica para uma Var / SD anualizada, nao para uma diaria.

A matriz Var/CoVAR nao e uma matriz dos mean returns, e uma matriz dos excess returns multiplicados por eles proprios tranposed e divididos pelo numero de periodos menos 1

Os comandos que tenho visto para R sao do tipo

# Calculate returns
returns.data <- CalculateReturns(prices.data)

# Save mean return vector and sample covariance matrix
meanReturns <- colMeans(returns.data)
covMat <- cov(returns.data)

Ora bem, esta matriz CoVar e muito diferente da minha VarCoVar

Onde isto vai bater e no calculo da Var/SD do Portfolio.
A formula para Var de um Portfolio e a multiplicacao dos pesos dos assets pela matriz Var CoVar e depois multipicados novamente pelos pesos. a SD e a sqrt disso.
Ora bem, isto nao e o que fazem os codigos que tenho visto, que ou usam algo meio estranho, ou em vez de usar a matrix Var/CoVar usam so a Cov

Como nao calculam da mesma forma a SD, a leitura da SD/Risco do portfolio nao bate com a teoria, e nao da um sharpe / outros racios tao correctos. Por exemplo ao longo da efficient frontier nao noto grandes diferencas, mas quando vou testar portfolios mais balanceados ... a SD fica um susto.

Em jeito de conclusao, o calculo de um portfolio optimo com os modelos que encontrei online nao hao de variar muito do que me da o meu em termos de returns, em termos de risk adjusted nao consigo comparar com o que ja fazia. Talvez nao tenha grande impacto na seleccao dos pesos dos assets, mas no meu caso baralha o filme porque tenho de tirar intervalos ao longo da EF para acertar os limites para rebalance e etc....

Vou ter de dar mais duas voltas no carrossel para acertar isto, os metodos que vi optimizam na mesma, mas quero o MPT.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 15/2/2017 1:15

Não discordo completamente de ti mas..

:arrow: Estamos a falar de investimento não de especulação;
:arrow: Tb sou da opinião que no curto prazo os mercados poderão ser ineficientes, mas estas aplicações são para anos;
:arrow: A maioria do tempo os mercados são eficientes, e cada vez há mais mercados eficientes;
:arrow: Backtests e fronteira eficiente, principalmente se usados por alguém que perceba os seus defeitos, é algo simples e bastante eficaz;
:arrow: A teoria é como aprender a andar, e só depois aprender a correr. Primeiro aplicas as coisas como se o mundo fosse perfeito (um modelo) depois começas a ajustar à realidade;
:arrow: Ter uma carteira de investimento e usar a FE (ou/e backtests) )para fazer as alocações de longo prazo não impede de fazer ajustes quando a oportunidade surge. O ano passado estive sobre ponderado em HY, porque achei que a oportunidade era boa demais para deixar escapar. O timming não foi perfeito mas... foi suficientemente bom :wink:

Dito isto, o que sugeres para a criação de uma carteira de investimento :?:
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 em R para Finanças

por Artista Romeno » 14/2/2017 22:00

A programação é cada vez mais importante, e hei de a aprender, mas esqueçam isso da fronteira, eficiente, os mercados não são eficientes, porque:
-os compradores em media não compram todos para o mesmo periodo temporal
-há assimetrias de informação, e mais importante nem todos têm o mesmo nível para a intrepretar
-os investidores não são todos racionais, muito longe disso
-não tem expectativas homogeneas
- não transacionam sem custos fiscais
resumindo e como se não bastasse basta ver as fortunas do munger do buffet, do soros, ou do seth klarman para vermos que os mercados são tudo menos racionais e eficientes no curto prazo, no longo prazo acredito que possam ser nas grandes ações nenhuma fica indefinidamente barata ou extremamente barata, mas a coisa pode durar anos :-k

Just my two cents :!:
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 em R para Finanças

por Varendia » 14/2/2017 19:30

Agora sim, consegui forcar dar o 'mesmo' que o meu excel. Nao acredito na formula da Sd do economist at large, a SD nao e o resultado de somas.

A formula que replica como calculo Sd no excel e:

eff[loop,"Std.Dev"] <- (sqrt(t(sol$solution) %*% covariance %*% sol$solution)) * sqrt(12)

depois no grafico tambem transformei a SD em %.

Um portfolio que se pode apresentar .. mas se juntar os dados de 2015 e 2016 ja nao tem um sharpe tao louco. Esta versao e com os dados de Jan 2008 a Dez 2014.
Em baixo da para ver o output do R e o output (valores) do mesmo no meu excel. a diferenca e porque o R se poe a meter 0.5% neste asset e 0.3% naquele ... tudo o que nao era relevante meti a zero no excel. Mesmo assim acredito que o excel faz pequenos erros nos calculos de matrizes, mas esta muito parecido.

Ver se dou uma olhadela ao Portfolio Analytics. Preciso de poder meter mais variaveis que nao seja so o forcing de um peso maximo por asset. Nao esta mal para ja consigo replicar os calculos que fazia em excel, se conseguir impor mais umas constraints passo a fazer a optimizacao tal e qual faco no excel com a vantagem das contas ficarem melhor e de conseguir correr coisas muito mais depressa.
A juntar a isso a quantidade de dados tratados que se conseguem ter... the sky is the limit.
Anexos
Portfolio.png
Portfolio.png (15.97 KiB) Visualizado 10697 vezes
port excel.JPG
port excel.JPG (30.61 KiB) Visualizado 10697 vezes
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 14/2/2017 18:52

ohhhhh Bem bonita 8-)

Mais um pouco e ficas à minha frente em termos de report da carteira 8-) últimos 3 meses tenho-me dedicado a outro projecto e parei com Portfolio Management/Reporting. Queria estudar o PortfolioAnalytics que sei que dá para fazer tudo e mais alguma coisa (carteira via optimização de drawdowns em vez de desvio padrão por exemplo :wink: ) mas só sei (e uso) o PerformanceAnalytics que é o irmão mais pobre!!

:arrow: https://cran.r-project.org/web/packages/PortfolioAnalytics/PortfolioAnalytics.pdf
:arrow: https://cran.r-project.org/web/packages/PortfolioAnalytics/vignettes/portfolio_vignette.pdf
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 em R para Finanças

por Varendia » 14/2/2017 18:34

Ja consegui por a coisa a funcionar mas ainda nao estou convencido com o calculo da SD anual. PAra os valores optimos fica perto dos valores do meu excel, mas parece-me muito alterada para outras combinacoes.

Mesmo depois de corrigir isso, ainda nao faz bem o que quero, tenho de alterar a formula para tambem poder obrigar a uma allocation minima. A formula so permite forcar um valor maximo por asset, nos meus testes tambem forco um valor minimo por asset para forcar diversificacao, mesmo reduzindo um pouco o sharpe.

Vamos ver onde isto vai.
Anexos
Portfolio.jpg
Portfolio.jpg (24.06 KiB) Visualizado 10716 vezes
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 14/2/2017 0:47

Varendia Escreveu:Portanto usaste weekly returns para dar certo.

Usei monthly usando a função to.monthly() do XTS
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 em R para Finanças

por Varendia » 14/2/2017 0:35

Portanto usaste weekly returns para dar certo.

Tenho de mudar as formulas de calculo dos returns e SD que ele tem na funcao. Ver como faco operacoes entre matrizes.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 13/2/2017 19:12

De 3 ou 4 sitios em que pesquisei para fazer a EF esse foi o único que consegui usar com sucesso e as contas bateram certinhas com as do Portfolio Visualizer!! :mrgreen:
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 em R para Finanças

por Varendia » 13/2/2017 18:30

A funcao que me deste para o eff. frontier esta a dar-me umas horas de diversao.

Ja tive de ir resolver um erro descobrindo o que sao atomic e recursive objects.
e agora percebi como sacar o plot (criando uma variavel para levar com o ggplot). Que bonito.

Agora tenho de ir ver como ele calcula o raio dos valores da SD porque nao me bate certo. E a forma como ele calcula a Std. Dev visto que ele usa um file de media de returns semanais e eu uso os returns em meses.
Amanha olho para isto.

Muito bom.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por Varendia » 11/2/2017 19:32

Ha ciencia que de facto e 'impossivel' mas desde que se tenha vontade suficiente, a logica e processo do MPT e perfeitamente compreensivel para alguem que sabe zero de matematica. Para o colocar a funcionar com uma ferramenta como excel ou outra, ja nao e facil sem matematica. Nao venho de financas, sou engenheiro e investimento so me interessou quando percebi que nos bancos o que me propunham para investir nao fazia sentido nenhum e quando fazia perguntas ficavam a olhar para mim.

Sim Portugal e demasiado pequeno para qualquer projecto deste tipo, mas ha espaco para fazer muita coisa na europa porque, como dizes, faz-se muito pouco, e quem faz bem no USA nao vem para aqui, o mercado la e de grande dimensao, para que vir aqui procurar 'clientes' quando ja os tem la.

Nos USA veem-se grupos a fazer wealth management / a criar e vender os proprios fundos / fazer gestao de clientes de forma profissional / ha um servico de advisory dirigido a pessoa, etc. Na europa ha um mercado virado para expatriados (acima de tudo casas britanicas e suicas) que cobram taxas completamente inacreditaveis, e o resto e muito pouco e muito pouco profissional ou com pouca capacidade de gerar empatia e credibilidade.

A minha estrategia de investimento na europa para medio prazo faz todo o sentido, ainda mais nos ultimos 2 anos em que se via que os USA iam sair da crise mais cedo, e facil de explicar mas muito dificil de 'vender'. Por ser muito diferente e interessante, tambem precisa de mais esforco para testar e ir melhorando. Nao precisa de ser controlada diariamente, so actualizo uma vez por mes, mas quando o tilt da sinal, preciso de fazer alguma coisa. Em 4 anos esse sinal apareceu pela terceira vez em Novembro/Dezembro de 2016. Fiz o que tinha de fazer mas pela primeira vez em 4 anos deste portfolio, a ganacia quase que ganhava contra a tactica.

Pior, percebi que estrategia continua a ter logica, mas a tactica que me serviu 4 anos ja nao tem grande potencial.
Isto e muito off topic mas para chegar ao que me levou a tentar o R foi, ver o teu thread aliado ao facto da minha estrategia ter corrido bem demais, de acreditar que o revert to mean me vai dar um 2017 ok e depois uns anos muito fracos. Por isso queria testar outras tacticas dentro da mesma estrategia, mas sei o que custou a primeira vez em excel e neste momento nao tenho tempo para fazer o mesmo outra vez.

Decidi dar a hipotese ao R com a funcao para descarregar dados, foi como a crianca na loja de brinquedos, do que vi, o R tem um potencial bestial.
Hoje programacao parece me so logica e pouco da linguagem propriamente dita.
Nada como a unica cadeira de programacao que fiz na vida ... Pascal..mas isso ja foi noutro seculo.
Nao e por acaso que nos USA as casas que gerem os seus fundos fechados contratam mais informaticos que nao sabem nada de financas/investimento do que contratam corretores / fund managers e outros. Quando apanho uns papers que mostram de forma basica como portfolios com parte de buy & hold + parte trend following + parte tilt sao tao melhores (risk adjusted) do que o que ja faco, e saber que com o meu excel nunca conseguiria la chegar... :evil:

Continuo a achar que um projecto desses nao aparece feito em part time, acima de tudo porque basta aparecer alguem com uma ideia parecida e que o faca com mais $ ou em menos tempo ... e pode logo ganhar a corrida, mas posso (e espero) estar enganado!

Nos proximos dias vou de volta ao topic
Ja agora, foste ver mais coisas dos Log returns?
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 11/2/2017 16:08

centenas de linhas?? isso deve ser para calcular orbitas terrestres ..

Não precisarias concerta de centenas de linhas para escrever algumas (poucas) equações matemáticas. Quem sabe se um qualquer especialista não escreve um " Newton's "The Principia" using R" :mrgreen:

Varendia Escreveu:o que e incrivel e o que se vende por esse mundo fora de advisory, os fees que se cobram (e eu mesmo assim pago bem mais do que devia) em alguns casos para uns tipos aplicarem coisas nao muito diferentes do se pode fazer em casa com um algum estudo de uns meses a noite depois do trabalho.

You're selling yourself short. Não só me pareces uma pessoa com vontade de aprender e inteligente, como tens bases muito melhor que a média em termos de estatística e à vontade com números. Se a isso juntares alguém que já trilhou o caminho e te pode dar umas dicas por onde deves ir acabas por aprender coisas bastante rápidamente. Muitas das coisas no mundo financeiro é mais capacidade de vender/marketing e contactos.

Sou muito critico de muitas coisas em finanças e sei que é muito Smoke and Mirrors mas a verdade é que ao longo dos anos me vou apercebendo que a maioria das pessoas não quer aprender algo novo e/ou pensa que tudo o que tem a haver com números extremamente complicado. Obviamente que quem sabe se faz pagar bem, tal como um mecânico. Independentemente de as pessoas sairem das oficinas a achar que foram "roubadas" ng vai aprender a fazer revisão ao próprio carro. Procura e oferta. Neste caso, muito da primeira e pouco da segunda.

Vou registando conversas que me mostram isso. Normalmente até é mais sobre xadrez uma vez que socialmente não é costume falar de estística ou matemática. Duas pessoas já me disseram "Não gosto de jogos que me fazem pensar muito" e outra "isso envolve muita matemática" (não é preciso saber matemática para ser bom jogador de xadrez mas foi um estereótipo criado porque normalmente as pessoas são boas a ambas as coisas, devido a gostar de pensar, coisas com ordem e capacidade de abstração e concentração).

Não penses que aquilo que estás a fazer é fácil. Temo que a maioria das pessoas olhasse para uma linha de código e nem quisesse saber mais de computadores :mrgreen: Mas tb sei que não é própriamente rocket science e dai eu estar sempre a tentar puxar os limites do que se faz em termos financeiros neste jardim à beira mar plantado.

Próximos projectos incluem trazer aquilo que de melhor se faz nos EUA para este velho continente, sempre a pensar em grande, pois Portugal começa a parecer demasiado pequeno :!: Vamos lá ver. Mas de facto este mundo da programação tem-me permitido fazer coisas que embora soubesse ser possível nunca pensei que eu praticamente sozinhno conseguiria, principalmente quando não sabia programar. Lembro-me de há uns meses de falarmos em projectos e me responderes "acho que dois tipos a fazer isso só nos tempos livres não conseguiriam fazer isso". Mas tb acredito que agora é que te começaste a aperceber das potencialidade e facilidade de programar coisas que há 10 anos atrás seria preciso ser pro em programação. O mundo evolui a uma velocidade impressionante :shock:

Costumo pensar muitas vezes (em programação), "se eu consigo fazer isto imagino uma equipa que saiba realmente o que está a fazer". No meu próximo projecto sei que "uma equipa que sabe o que está a fazer" resultou num dos mais visitados sites em termos financeiros. Eu ficaria feliz se conseguisse 5 a 10% do sucesso deles :wink:

Abr

P.S. 99.9% das pessoas não financeira não sabe o que é o MPT e 90%+ das pessoas na área financeira (pelo menos em PT) não fazem ideia o que é o MPT. Uma pequena elite (onde não me incluo) estuda activamente e corrige deficiências no modelo.
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 em R para Finanças

por Varendia » 11/2/2017 5:34

VirtuaGod Escreveu:
Já te viraste para o webscrapping?


Ainda nao. estou muito targeted, fiz um step by step do que queria fazer e vou segui-lo. Primeiro ter isto a funcionar, que a este ritmo deve demorar mais uma semana, talvez ainda sem rebalances/warnings. Depois ver como faco uns outputs basicos para ter uma leitura grafica facil como tenho agora.

Depois e uma questao de dados em que tenho duas fases, uma o download (que ja esta em parte feito, agora e mais uma questao de saber o que quero mais) e o web scrapping para ir buscar os filtros e variaveis que uso, com isso crio uma db geral.
Segundo as operacoes para transformar/tratar os dados para serem comparaveis, simular historicos quando nao ha, ou seja tenho de criar outputs no R que facam operacoes entre eles mas so em determinadas condicoes.

Para por o MPT a funcionar com tudo o que uso tenho de aprender como faco operacoes entre partes de xts ou data.frames que so se fazem quando ha determinadas condicoes na coluna, ou conseguir que o R perceba que aquela coluna tem X caracteristicas e permitir-me seleccionar que so faz algo naquela coluna quando uma determinada caracteristica esta la.
Nao deve ser melhor nem pior do que o excel, mas nesta fase estou so a aplicar funcoes existentes a outputs, numa segunda fase posso ter de 'inventar' a funcao para fazer exactamente o que preciso. Esse e o segundo salto.

VirtuaGod Escreveu: Já imaginaste as potencialidades quando se começa a fazer programas com algumas centenas de linhas de código? Tenho aqui coisas que estão praticamente paradas por causa do estudo para o CFA mas estou mortinho para partilhar aqui no fórum. Para mim isto é todo um Admirável Mundo Novo.


Nao aconselharia a ninguem comecar pelo R. Se soubesse so que o MPT e uma forma de preparar um portfolio esperando que em prazos medios / longos se comporte da mesma forma que fez no passado, e que isso se verifica quando testado contra dados reais, e agora toma la o R, seria como aparecer ai uma teoria totalmente nova em que so poderia acreditar com fe..

Por ter lido bastante dos fundamentos teoricos e aprendido o passo a passo de MPT (versao simples, para algumas das coisas que leio), por ja fazer testes e aplicar ha mais de 4 anos (isto passa depressa) consigo ter algum espirito critico do que faco em cada passo no R e mais do que isso, saber o que quero fazer.
Acredito que para quem comeca e quer aprender MPT, o passo a passo em excel e muito mais simples de explicar e de desenvolver a versao do it yourself percebendo o que se esta a fazer.

centenas de linhas?? isso deve ser para calcular orbitas terrestres ..
Sempre tive muitas ideias para fazer portfolios novos com mais trend following / tactical tilting mas o excel (a acima de tudo a dificuldade de criar/tratar dados) fizeram-me desistir rapidamente de o fazer. Para o nivel de conhecimentos que sinto que tenho de portfolio theory (talvez bom para a media mas muito pouco quando me ponho a ler) e enquanto do it yourself investor, passar para R abre oportunidades de fazer muito mais e muito melhor em muito menos tempo, incluindo fazer muitas coisas que sempre quis mas nao tinha ferramenta.

Por isso muito obrigado por este thread que desmistificou (pelo menos para mim) o R e me fez voltar a ter vontade de evoluir.

Por outro lado se fosse facil, todos sabiam e saber nao tinha valor nenhum :lol:, o que e incrivel e o que se vende por esse mundo fora de advisory, os fees que se cobram (e eu mesmo assim pago bem mais do que devia) em alguns casos para uns tipos aplicarem coisas nao muito diferentes do se pode fazer em casa com um algum estudo de uns meses a noite depois do trabalho.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 10/2/2017 20:31

Varendia Escreveu:Proximos capitulos sao o Efficient Frontier e acertar pesos.

Fácil fácil :wink:

Tens aqui a função que uso:
http://economistatlarge.com/portfolio-theory/r-optimized-portfolio

Já te viraste para o webscrapping?
Para quem ja faz isto no excel, e completamente ridiculo o quao pouco codigo e preciso saber.

Já imaginaste as potencialidades quando se começa a fazer programas com algumas centenas de linhas de código? Tenho aqui coisas que estão praticamente paradas por causa do estudo para o CFA mas estou mortinho para partilhar aqui no fórum. Para mim isto é todo um Admirável Mundo Novo.
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 em R para Finanças

por Varendia » 10/2/2017 20:06

Pareco um viciado...
Var/CoVar ja ca canta.. outra vez a bater 'certo' com o Excel. Ja da para calcular o IPC.

Proximos capitulos sao o Efficient Frontier e acertar pesos.
Nem quero ir ver isso agora, deve haver uma ou duas funcoes ja feitas para fazer o que o meu excel se parte todo em nao sei quantas matrizes

Para quem ja faz isto no excel, e completamente ridiculo o quao pouco codigo e preciso saber. Ou entao e o VG que em 10 licoes ensina tudo .. :clap:

VirtuaGod Escreveu:Não respondeste à questão importante. Porque usas log returns em vez de discrete returns? Sempre vi discrete em finanças e o PortfolioAnalitycs até o tem por defeito. Até fico a pensar que eu é que estou a fazer mal.


A maior parte das pessoas usa discrete. Eu calculo os dois e tenho uma coluna de controlo para ver se nao tenho algum estoiro, mas como estou so a replicar o sistema...
Uso os log returns para Correlacoes e Var/CoVar.
Para dados diarios sera melhor usar discrete porque tens muito mais dados e o teu bell tem tendencia a ser heavy tailed. Com dados mensais, ha uns papers academicos que demostram que usar log returns 'normaliza' a distribuicao. Nao faz muita diferenca. Por exemplo no portfolio que estou a usar para ver se consigo por o R a dar o mesmo que o excel, com 7 anos de dados tenho:

| Av. Monthly return | Monthly SD | Rough Anual SD | CARG | Geometric SD | Theoretical Max DD + 6 Sigma
Log | 0.61% | 1.96% | 6.79% | 7.55% | 7.03% | 11.85%
Discrete | 0.63% | 1.94% | 6.73% | 7.82% | 6.97% | 11.87%

Neste portfolio fui ver tambem as correlacoes e nao muda grande coisa. Correndo o portfolio de 16 assets, mudava as alocacoes de uns para outros em muito pouco. Ha uns anos testei o teu moderado e acho que a unica coisa que nos meus testes mudava eram as %s em 2 dos fundos. Completamente lotaria.

Tens um texto curto (com formulas a mais) em Why Log Returns
Se quiseres uns papers de investigacao tambem arranjo, mas acho que nao e por ai.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 10/2/2017 19:12

Varendia Escreveu:Encontrei outra funcao chamada CalculateReturns e pimba .. faz a matrix toda .. lindo, fica igualzinho ao excel para os mesmos dados.
ExRet <- CalculateReturns(x, method = "log")

Olha, boa, nem conhecia a função. Nos próximos já passarei a usar :wink:

Não respondeste à questão importante. Porque usas log returns em vez de discrete returns? Sempre vi discrete em finanças e o PortfolioAnalitycs até o tem por defeito. Até fico a pensar que eu é que estou a fazer mal.
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 em R para Finanças

por Varendia » 10/2/2017 18:53

Momento de loucura!!!
ainda nem tinha visto que ja havia resposta do VG.

Encontrei outra funcao chamada CalculateReturns e pimba .. faz a matrix toda .. lindo, fica igualzinho ao excel para os mesmos dados.
ExRet <- CalculateReturns(x, method = "log")
e ja esta, cria um xts com os returns e mantem as colunas certinhas.

E como estava a ganhar, dobrei a aposta e a matriz de correlacoes saiu a primeira.

Tentei a funcao cov para fazer a var/covar, mas nao deu nada... amanha atiro-me a essa.

Como dizia um professor meu, para copiar e preciso saber copiar so o que esta certo.. no meu caso quer dizer que o 2 + 2 esta muito bem sabido :lol:

Ate aqui nada que o excel nao fizesse de forma automatica se os dados la estivessem .. mas ja me estou a ver a fazer matrixes de correlacoes de 1000 indices :twisted: e pedir que me mostre so determinados criterios.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

Re: Programação em R para Finanças

por VirtuaGod » 10/2/2017 18:37

Varendia Escreveu:Como e que eu faco o periodReturn calcular coluna a coluna sem rebentar o xts todo!! :(

Funções avançadas quando ainda só sabes fazer o 2 + 2 = 4 :mrgreen:

A função que pretendes é da família apply()

Using apply, sapply, lapply in R

Exemplo directamente dos meus scripts onde "Portfolio é um xts com as cotações dos fundos e o Return.Calculate() é uma função do PerformanceAnalytics para calcular retornos, basicamente o mesmo que estás a fazer com periodReturn()

Código: Selecionar todos
Returns <- xts(apply(Portfolio, 2, FUN = Return.calculate), order.by = Date)

P.S. Porque estás a usar LOG em vez de discrete?
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 em R para Finanças

por Varendia » 10/2/2017 18:18

Outra vez on topic..

2 horas e ainda nao cheguei la.

A tentar calcular os excess returns.

Primeiro foi o filme de dar erros porque o meu ficheiro de dados importado nao era uma time series... depois era uma time series mas esperava periodos fixos e nao conseguia que assumisse a primeira coluna como a time series (ultimo dia de cada mes).

Ao fim de uma hora consegui fazer em 4 linhas ... :wall:
BaseforER <- xts(Base[,-1], order.by = Base[,1]) # o Base e um data frame importado e com a primeira coluna formatada como data.

Depois faco um:

ExRet <- periodReturn(BaseforER, lype = "log") e em vez de me manter as colunas todas, faz alguma coisa e sobra so uma coluna.

Fui testar .. se a minha Base so tiver uma coluna de dados bate certo.
Como e que eu faco o periodReturn calcular coluna a coluna sem rebentar o xts todo!! :(

ando a ver uma serie de paginas a fazer portfolio optimization .. mas que calculam matrizes de var/covar com medias?
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." Sun Tzu
 
Mensagens: 215
Registado: 10/12/2012 12:12

AnteriorPróximo

Quem está ligado:
Utilizadores a ver este Fórum: Bing [Bot], Google [Bot], iniciado1, Jmdm, navaldoc, PAULOJOAO, PIKAS, Shimazaki_2, Xacal e 224 visitantes