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 » 25/2/2017 19:43

Varendia Escreveu:Nao e isso, queria dizer nas colunas, que estao por MSid, se nao se consegue que esse MSid (nome da coluna) seja um char ou um array com uma serie de dados la dentro, de forma a quando lhe digo (da me so as colunas que sao hedged) ele le isso directamente na informcao da coluna.

Senao vou ter de ir a um file seleccionar os que sao hedged, fazer desses uma lista e usar essa lista para limpar a base de dados para so usar os que quero.

Continuo a pensar que queres um filtro que te distingue os fundos com hedge e os sem hedge para fazeres uma lista com fundos só com hedge por exemplo certo?
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 » 25/2/2017 17:46

Nao e isso, queria dizer nas colunas, que estao por MSid, se nao se consegue que esse MSid (nome da coluna) seja um char ou um array com uma serie de dados la dentro, de forma a quando lhe digo (da me so as colunas que sao hedged) ele le isso directamente na informcao da coluna.

Senao vou ter de ir a um file seleccionar os que sao hedged, fazer desses uma lista e usar essa lista para limpar a base de dados para so usar os que quero.
"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 » 25/2/2017 15:38

Varendia Escreveu:VG, sera que consigo 'carregar' a informacao que crio via scrapping no colnames da base de dados dos fundos??? tipo chr? isso era muito bonito, para depois fazer buscas/seleccoes! Explicar ao R que o nome da coluna e na verdade um chr com n caracteristicas pelas quais posso fazer seleccoes?? tipo, pega na base de dados toda e tira todos os fundos que nao pertencem a estas categorias?

Não sei se estou a perceber a 100% o que pretendes. Dá-me um exemplo prático do que queres fazer sff. Algo para "filtrar" os fundos por categoria? Eu faria com "if clauses" para os excluir ou incluir em colunas/data frame/base de dados.

Lembra-te que podes (tens de?) usar o "==" (igual a) e o "!=" (diferente de) e em segunda linha o "&" (and) "|" (or) ou outros quaisquer "logical operators"

:arrow: http://www.statmethods.net/management/operators.html

Em relação :

sera que consigo 'carregar' a informacao que crio via scrapping no colnames da base de dados dos fundos???

Não estou a aperceber pk não consegues. Só tens de o tornar num vector e fazer colnames(data.frame.name) <- vector
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 » 25/2/2017 14:59

VG, Varendia,

Muito obrigado pelas respostas! Mensagens encorajadoras! Ja me sinto mais tranquilo.
O meu problema é que sou algo perfeccionista e impaciente. Mistura explosiva e na qual ando a trabalhar. Por vezes a tampa salta :?

Sim, realmente tenho de me focar numa só coisa de cada vez. Infelizmente, sinto que estou a perder uma excelente fase do mercado não metendo agora o dinheiro q tenho alocado para investimento em algumas EFTs. Ainda por cima a Degiro agora nao cobra nada por uma catrafada delas. https://www.degiro.pt/data/pdf/pt/lista ... missao.pdf

Vou entao ler esse livro. Para já tenho em pdf.

Cumps,
LoneWolf
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

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

por Varendia » 25/2/2017 7:28

VirtuaGod Escreveu:Acho que algumas pessoas pensavam que isto era mais simples do que o que é porque o Varendia foi sempre a andar.


Eu estou quase pronto para dar o curso "como fazer umas coisas em R sem saber nem ficar a saber ponta de cauda de como aquilo funciona"

Mas o que o VG diz e verdade, eu ja tinha 'programado' o meu excel para fazer muita coisa, sei exactamente o que quero que o R faca. Em excel tinha de fazer muito mais passos para chegar a algumas coisas que agora se faco numa linha, mas ja sei a logica que quero que o script siga e o excel da-me a forma de verificar exactamente se o resultado que estou a obter em R esta certo.

O R trouxe o potencial de fazer o mesmo que faco em excel muito mais depressa e de fazer muito mais, por isso e que me atirei, mas agora comeco a ter alguma dificuldade, comeco a precisar de usar funcoes menos basicas e demoro tempo porque nao sei o B-A-BA. Mesmo assim no meu caso acho mais facil por o R a fazer o que quero do que aprender R como deve de ser.

Do que aprendi ate agora, conselhos/dificuldades:
1. Como nao 'memorizei' coisas basicas, passo algum tempo a andar para a frente e para tras, ver como fiz em scripts anteriores para por a funcionar as coisas que preciso de fazer. De vez em quando nao fica 'bonito' mas vai funcionando.

2. Percam tempo a perceber o tipo de objectos do R, como funcionam, o que podem guardar, experimentem transformar de um tipo de objecto para outro para verem o que lhe acontece.
Grande parte das dificuldades que tenho e porque os inputs para algumas funcoes nao estao no tipo de objecto certo, e como em quase tudo vou usando resultados de uma coisa para inputs de outra, saber o que se esta a obter e o que uma funcao consegue usar faz muita diferenca. Normalmente e o que me faz perder muito tempo, agora ja sei que quando vejo uma funcao que sei que vai fazer o que quero, a primeira coisa a ver e o tipo de objecto que tem de ter o input.

3. Como nao consigo desenvolver isto regularmente (e mais nas horas vagas do trabalho, familia e mestrado), estou a fazer tudo por blocos 'quase' independentes. Acho que tem funcionado bem porque limito cada script a um ou dois passos e dessa forma nunca perco muito tempo a perceber onde estava.

4. Ate o script estar a funcionar mesmo, vou guardando em # (para nao correr) tudo o que vou tentando, passos intermedios que funcionam, etc.. assim evito estar a repetir erros. no fim, quando funciona mesmo, limpo tudo e guardo a versao final.

5. Fazer outputs para ficheiro e inputs de ficheiro. Essencial para guardar cada passo que faco, guardar historico e porque prefiro comecar por ler um ficheiro em vez de ter de correr tudo para criar uma base, assim posso correr so uma coisa que queira e martelar uma base.

De resto, entre hoje e amanha espero acabar o web scrapping !! que ate agora estou so a fazer para meia duzia de MSids para testar a funcao... quando tentar correr a base de dados toda vai ser lindo...

Para dar uma ideia do que o VG disse sobre ter um plano, aqui vai o meu, mas so para o R fazer o que o meu excel ja faz (e onde vou).

Scripts que tenho a funcionar em R:
A. Download automatico e criacao de base de dados de exchage rates, vai ao BdP e a FRED buscar dados diarios, limpa os dados que nao quero, acerta tudo por datas e exporta um csv com um tudo.
B. Download automatico e criacao de base de dados de valores diarios de fundos da minha base de dados, novamente, dados diarios, faz sair um time series.
C. Calculo de correlacoes entre fundos com base em valores mensais (falta transformar a base de dados de valores diarios em valores mensais)
D. Calculo e plotting da Efficient fronteir de um portfolio com base em n fundos e m restricoes (neste momento uso var/sharpe, weights minimos e maximos, no futuro quero usar drawdown, tail risk SMA)

Quase acabado:
E. Webscrapping dados dos fundos, ja funciona para a parte dos dados que vem da MS, ja vi ontem os ccs's da Fundinfo que quero, hoje/amanha deve ficar.
Preciso disto para seleccionar os dados dos assets por criterios que quero, e para fazer os backtests como faco agora.

VG, sera que consigo 'carregar' a informacao que crio via scrapping no colnames da base de dados dos fundos??? tipo chr? isso era muito bonito, para depois fazer buscas/seleccoes! Explicar ao R que o nome da coluna e na verdade um chr com n caracteristicas pelas quais posso fazer seleccoes?? tipo, pega na base de dados toda e tira todos os fundos que nao pertencem a estas categorias?

Proximos passos para fechar o que faco em Excel:
F. Download e tratamento automatico (ou nao) das bases de dados de indices/benchmarks (esta vai dar luta, porque ou uso dados que ja tenho, ou ainda nao sei como vou fazer, tenho deixado esta para tras, .... )
G. Ligacao entre valores diarios de fundos, indices e moedas, para backtests. (este vai obrigar a fazer buscas por tipos de info do webcrapping, falta ver como funciona isso, ve la a minha ideia acima)
H. Backtests de assets individuais, portfolios e plotting grafico (acho que o VG ja viu uma vez o output do meu excel, vai dar algum trabalho). Na verdade em R posso carregar a maor parte dos calculos para a base de dados de assets, ou criar um output com todos os calculos. Em excel fazia por passos e em ficheiros separados so dos assets seleccionados porque os ficheiros ficam enormes, mas aqui ate deve dar para correr de cada vez que actualizo a base de dados. Isto basicamente e para criar um novo input para correr uma segunda vez o EF com mais criterios seleccionados atravez do backtest e depois criar os limites para rebalancing.

O que em Excel nao faco ou faco de forma limitada:
I. Followup de portfolios, triggers de rebalacing, tenho o excel a dar alguma coisa, mas nisto o R vai fazer loucuras. Ja vi algumas funcoes do PortfolioAnalitics... Alem de tornar 'facil' o rebalance automatico intra/entre portfolios, e meter os criterios de tilting e trend following a funcionar de forma automatica.
K. Criacao de historico para testar assets com 'pouco' historico, esta e bonita, faco coisas muito basicas em excel, mas sei o que quero fazer e como o fazer, e em R vai dar assim que tiver as bases de dados dos benchmarks.
L. Outputs graficos dinamicos, que o R faz muito bem e o excel nao foi feito para isso. tipo lobo mau, para te ver melhor. Eu gosto muito de ver comparacoes graficas entre assets/benchmarks, ajuda-me a selectionar formas de diversificar para testes, como no excel testava um numero fixo de assets isso era uma ajuda, talvez consiga por o R a calcular em n assets aquilo que estou habituado a procurar visualmente em 10 ou 15, vamos ver.

Fica aqui de uma forma 'simples' o que me espera nos proximos meses, e para dar razao ao VG, como sei exactamente o que quero torna-se mais facil, nao estou a aprender como a maquina funciona, estou so a usar a maquina.

VG, opina ai sobre os passos acima, se vires forma de saltar uns passos / juntar alguma coisa a festa... avisa
"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 » 25/2/2017 2:26

Ou se preferires cursos vídeo mete um destes dois links nos favoritos e entra em "incognito mode" e clica no favorito.

https://www.udemy.com/r-programming/

https://www.udemy.com/data-science-and- ... mp-with-r/

Compra um destes curos por 10 ou 15 euros. O que acho que é quase de graça!! Nenhum deles deve ter área de finanças mas é bom para aprendes a trabalhar com R, que como disse, é importante. Depois eu explico-te a usar o quantmod ou ponho aqui algum código. Neste momento o meu código está todo ligado a bases de dados etc etc e tenho de fazer alguns ajustes mas prometo que se tirares um destes cursos (ou os livros) e perceberes o que estás a fazer em R eu dou-te o mínimo de código para perceberes como usar o quantmod :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 em R para Finanças

por VirtuaGod » 24/2/2017 20:08

lonewolf Escreveu:VirtualGod,
interessante essa integraçao no visual studio. pena ser apenas para a versao 2015...

Já li maior parte dos links da outra thread. Artigos muito interessantes.

Confesso que me sinto um pouco perdido de momento.
Algumas questões:
1- é possivel fazer update ao teu pacote de analise?
2 - tens um comando "help" para se ver q funçoes tens lá?
3 - apesar de estar a achar o R fácil, estou empancado pq nao sei o q fazer agora... nao sei fazer backtestings, nem sei interagir com os dados e nao sei nada de machine learning...

pensei q o R tivesse muita coisa à mão mas estou a achar aquilo uma confusão de milhares de pacotes q dependem uns de outros... Sinto-me bastante desapontado.

Só no Verão devo começar com aulas de quantmod e de backtest. Até lá é pesquisar muito na net e ler livros se quiseres.

Um bom livro para começar é o Analyzing Financial Data and Implementing Financial Models Using R (Springer Texts in Business and Economics)

Tem os passos todos e é superclaro. Em alternativa para começar sem ser algo financeiro tens http://r4ds.had.co.nz/

O R não é SPSS ou SAS que têm GUI. Se não tiveres um bom plano vais andar às aranhas. Tens de perceber como as coisas funcionam. Por isso, tal como eu fiz, recomendo que comecem por um livro. Acho que algumas pessoas pensavam que isto era mais simples do que o que é porque o Varendia foi sempre a andar. Ali há uma linha de pensamento por detrás que muita gente não se apercebe, ele tinha já um excel super evoluído. Ele já sabia o que fazer e como, só aprendeu o código. Vocês ainda têm de perceber o que fazer (o mis complicado).

Em vez de andares com 200 mil coisas foca-te numa. Pega num dos dois livros e estuda do inicio ao fim. Aposto que quando eu começar com o quantmod e assim no Verão vai ser sempre a andar, se já tiveres percebido o básico.

Para veres as funções que tenho no meu package tens de ir ao github:

https://github.com/VirtuaGod/AnaliseFI/blob/master/R/AnaliseFI.R
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 VirtuaGod » 24/2/2017 19:55

Varendia Escreveu:Para depois ir so buscar o que te falta, deve ser mais facil listar so os MSids novos no script, correr so para esses e ficar com um file novo e depois juntar ao ficheiro que ja tem os dados anteriores tratados, e o que fazes?

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

por Varendia » 24/2/2017 17:39

Que caneco, 2 horas para por o teu script a funcionar.
E depois deste tempo todo fico sem preceber porque nao funcionou a primeira.

Bem, tenho de alterar uma serie de dados que nao quero e juntar outros que quero.

Para depois ir so buscar o que te falta, deve ser mais facil listar so os MSids novos no script, correr so para esses e ficar com um file novo e depois juntar ao ficheiro que ja tem os dados anteriores tratados, e o que fazes?

E depois vamos para a parte divertida de comecar a fazer contas entre objectos para fazer os backtests...
"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 LoneWolf » 24/2/2017 17:19

VirtualGod,
interessante essa integraçao no visual studio. pena ser apenas para a versao 2015...

Já li maior parte dos links da outra thread. Artigos muito interessantes.

Confesso que me sinto um pouco perdido de momento.
Algumas questões:
1- é possivel fazer update ao teu pacote de analise?
2 - tens um comando "help" para se ver q funçoes tens lá?
3 - apesar de estar a achar o R fácil, estou empancado pq nao sei o q fazer agora... nao sei fazer backtestings, nem sei interagir com os dados e nao sei nada de machine learning...

pensei q o R tivesse muita coisa à mão mas estou a achar aquilo uma confusão de milhares de pacotes q dependem uns de outros... Sinto-me bastante desapontado.
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

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

por VirtuaGod » 24/2/2017 16:59

Varendia Escreveu:VG, na tua rotina de scrapping porque vais buscar o valor dia, e as rentabilidades? tiras isso todos os dias??
Informação que vou buscar:

:arrow: ISIN
:arrow: Nome do fundo
:arrow: Moeda em que é transaccionado

Isso não altera, por isso só corro o script de webscrapping quando incluo um fundo na base de dados. Seguindo um conselho acima (já nem sei quem me deu) alterei o script para só ir buscar os dados do novo fundo. Pelo que agora para além de só correr quando incluo um novo fundo na base de dados, demora uns 5 segundos a correr :mrgreen:

Varendia Escreveu:E como e que encontro um campo para saber se e hedged ou nao, e para saber se e accuml ou distrib/ essas e que me esta a lixar.
Ja dei duas voltas ao site e nao consigo arranjar forma.
Vou ter de ir procurar a outro lado.


ACC ou Inc vejo pelo valor da distribuição. Se o valor da distribuição for 0.00 é porqe é ACC. Por definição só trabalho com fundos ACC. Desisti dos INC porque não consigo incluir as distribuições, pelo que a rentabilidade apenas tendo em consideração o valor da UP estaria bastante errada. Ter trabalho com fundos que por si já não são bons devido a razões fiscais fez-me desistir deles.

Se é hedge ou não vejo pelo nome. Mas há quem veja na fundinfo.

Exemplo: https://www.fundinfo.com/fr/search/?q=LU0094560744

Estou a testar a ver se consigo colocar o meu R a usar os servidores da microsoft porque seria muito mais rápido face ao meu portátil lentinho. Achei piada a este post:

https://www.r-bloggers.com/preview-r-tools-for-visual-studio-1-0/

O package remote é outra opção, e corria no servidor AWS que já tenho!!
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 gfaseed » 24/2/2017 14:41

Eu também dentro do possível tentarei contribuir para este tópico. :D
Avatar do Utilizador
 
Mensagens: 90
Registado: 24/2/2017 13:53

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

por Varendia » 24/2/2017 14:38

Depois de uns dias em viagem aqui estou com mais umas questoes.

VG, na tua rotina de scrapping porque vais buscar o valor dia, e as rentabilidades? tiras isso todos os dias??

E como e que encontro um campo para saber se e hedged ou nao, e para saber se e accuml ou distrib/ essas e que me esta a lixar.
Ja dei duas voltas ao site e nao consigo arranjar forma.
Vou ter de ir procurar a outro lado.
"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 LoneWolf » 20/2/2017 13:12

Nao tarda temos aqui um bom grupinho de trabalho!

Já vou na aula de matrizes. Tudo a correr bem até agora.

Edit: Ja fiz as aulas q propões, VG. Espero pelas proximas. Entretant, após 2horas às turras, instalei uma pancada de libs para ter o highchart a correr. Nao sei se é melhor q o ggplot2. Também ja tenho este último.
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

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

por FredericoRocha » 20/2/2017 11:33

Ontem fiz a instalação de todo o ambiente R (R + RStudio + alguns packages) e comecei a ver umas coisas.

Achei muito porreiro os cursos que existem no datacamp, possivelmente vou subscrever ao serviço.

P.s - Sou Eng. Electrotécnico e de Computadores e basicamente trabalho como programador (outras linguages de programação) e espero contribuir um pouco para este post.
 
Mensagens: 235
Registado: 11/8/2016 14:08

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

por LTCM » 19/2/2017 13:06

VirtuaGod Escreveu:Umas boas estratégias market neutral


Nos últimos 20 anos, que eu me lembre, só em 2008 existiu algo a que se possa chamar uma boa estratégia de market neutral. Em temos genéricos, médias, tem sido um área de uma pobreza franciscana.
Remember the Golden Rule: Those who have the gold make the rules.
***
"A soberania e o respeito de Portugal impõem que neste lugar se erga um Forte, e isso é obra e serviço dos homens de El-Rei nosso senhor e, como tal, por mais duro, por mais difícil e por mais trabalhoso que isso dê, (...) é serviço de Portugal. E tem que se cumprir."
Avatar do Utilizador
 
Mensagens: 3030
Registado: 28/2/2007 14:18

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

por VirtuaGod » 18/2/2017 20:12

Varendia Escreveu:E ja agora porque tiras de espanha e nao de de pt?

Parte da base de dados são fundos que não estão na morningstar.pt

A grande parte até vou buscar à morningstar.it porque é mais estável do que as ibéricas. Mas os sites da morningstar são bem mauzinhos... volta e meia dão erro. Sempre que faço o scrapping dos 250 fundos fica sempre 1 ou outro pelo caminho :lol:

Vou tentando corrigir ao ir buscar a PT ou ES aqueles que falham mais na IT. Tenho os 3 loops no script.
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 » 18/2/2017 19:39

Obrigado. pelo menos ja poupou parte do resto do trabalho! \:D/

E ja agora porque tiras de espanha e nao de de pt?
"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 » 18/2/2017 18:33

O For Loop que uso para webscrapping da morningstar espanhola:

## ES ##
MSid_es <- c("F0GBR04E8N", "F0GBR04AG5", "F00000MVSI", "F000002XVG", "F000000NWX",
"F0GBR05XJ0")

for (i in MSid_es) {
tryCatch({
Fund <-
paste0("http://www.morningstar.es/es/funds/snapshot/snapshot.aspx?id=",i)
Fund_html <- read_html(Fund)

Fund_valor <- Fund_html %>%
html_node("#overviewQuickstatsDiv tr:nth-child(2) .text") %>%
html_text() %>%
str_sub(start = 5, end = 9)

Fund_moeda <- Fund_html %>%
html_node("#overviewQuickstatsDiv tr:nth-child(2) .text") %>%
html_text() %>%
str_sub(start = 1, end = 3)

Fund_date <- Fund_html %>%
html_node("tr:nth-child(2) .heading .heading") %>%
html_text()

Fund_name <- Fund_html %>%
html_node("h1") %>%
html_text()

Fund_percentage <- Fund_html %>%
html_node("tr:nth-child(3) .text") %>%
html_text()

Fund_YTD <- Fund_html %>%
html_node("#overviewTrailingReturnsDiv tr:nth-child(2) .number") %>%
html_text()

Fund_ISIN <- Fund_html %>%
html_node("#overviewQuickstatsDiv tr:nth-child(5) .text") %>%
html_text()

Fund_3anos <- Fund_html %>%
html_node("#overviewTrailingReturnsDiv tr:nth-child(3) .number") %>%
html_text()

Fund_5anos <- Fund_html %>%
html_node("tr:nth-child(4) .number") %>%
html_text()

Fund_10anos <- Fund_html %>%
html_node("tr:nth-child(5) .number") %>%
html_text()

Fund <- cbind(i, Fund_ISIN, Fund_name, Fund_date, Fund_valor, Fund_moeda,
Fund_percentage, Fund_YTD, Fund_3anos, Fund_5anos, Fund_10anos)

Fundos <- rbind(Fundos, Fund)
}, error=function(e){cat("Ooops, parece que houve um problema com o fundo", i,"\n")})
}


em versão code:
Código: Selecionar todos
## ES ##
MSid_es <- c("F0GBR04E8N", "F0GBR04AG5", "F00000MVSI", "F000002XVG", "F000000NWX",
             "F0GBR05XJ0")

for (i in MSid_es) {
  tryCatch({
    Fund <-
      paste0("http://www.morningstar.es/es/funds/snapshot/snapshot.aspx?id=",i)
    Fund_html <- read_html(Fund)

    Fund_valor <- Fund_html %>%
      html_node("#overviewQuickstatsDiv tr:nth-child(2) .text") %>%
      html_text() %>%
      str_sub(start = 5, end = 9)
   
    Fund_moeda <- Fund_html %>%
      html_node("#overviewQuickstatsDiv tr:nth-child(2) .text") %>%
      html_text() %>%
      str_sub(start = 1, end = 3)

    Fund_date <- Fund_html %>%
      html_node("tr:nth-child(2) .heading .heading") %>%
      html_text()

    Fund_name <- Fund_html %>%
      html_node("h1") %>%
      html_text()

    Fund_percentage <- Fund_html %>%
      html_node("tr:nth-child(3) .text") %>%
      html_text()

    Fund_YTD <- Fund_html %>%
      html_node("#overviewTrailingReturnsDiv tr:nth-child(2) .number") %>%
      html_text()

    Fund_ISIN <- Fund_html %>%
      html_node("#overviewQuickstatsDiv tr:nth-child(5) .text") %>%
      html_text()

    Fund_3anos <- Fund_html %>%
      html_node("#overviewTrailingReturnsDiv tr:nth-child(3) .number") %>%
      html_text()

    Fund_5anos <- Fund_html %>%
      html_node("tr:nth-child(4) .number") %>%
      html_text()

    Fund_10anos <- Fund_html %>%
      html_node("tr:nth-child(5) .number") %>%
      html_text()

    Fund <- cbind(i, Fund_ISIN, Fund_name, Fund_date, Fund_valor, Fund_moeda,
                  Fund_percentage, Fund_YTD, Fund_3anos, Fund_5anos, Fund_10anos)

    Fundos <- rbind(Fundos, Fund)
  }, error=function(e){cat("Ooops, parece que houve um problema com o fundo", i,"\n")})
}


P.S. Usa a biblioteca stringr para tratamento dos strings
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 » 18/2/2017 17:44

Agora nos meus scripts de recolha de dados (por exemplo no de cotacoes de moedas) tenho no fim a seguinte linha:

write.csv2(Forexf, file = paste0("~Forex",Sys.Date(),".csv"))

Fico com o file guardadinho com a data em que o fiz. O mesmo nos fundos, assim se precisar no futuro de ir buscar dados passados que ja nao existem, ha um csv guardado.

Vim editar o que escrevi sobre o webscrapping, claro que os exemplos que se encontram sao faceis... mas tirar da pagina do fundo da MS deu luta.

Depois de mais uma hora la consegui tirar o nome do fundo, depois quando passava do node para um chr fica com <h1> a frente e atras.
la me salvei ao fim de mais 5 minutos.

Agora tenho de ir ver quais os nodes para as outras coisas que quero, depois fazer um funcao para ir apanhar tudo e um loop para correr o meu file de MDids... e juntar la os dados todos.

Do que vi tenho de fazer node a node certo? ou entao, loop nos nodes todos que quero....
Editado pela última vez por Varendia em 18/2/2017 19:38, num total de 1 vez.
"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 » 18/2/2017 16:07

Os eurizon easyfunds já não existem por isso esperem erros na actualização de base de dados.

O TryCatch() apanhou 2 na minha base de dados, o Eurizon consumer staples (MSid <- F0GBR04EZQ ) e o pharma (MSid <- F0GBR04V6Q )
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 » 17/2/2017 21:21

Vou comecar a entrar numa fase menos 'directa'.

Comecei a ler o webscraping, nao vai ser uma descraca, mas mais do que isso, e como se guardam os dados.
No excel, uma base de dados e uma worksheet, mas em R podemos ter todo o tipo de objectos, posso ter um vector de MSids em que cada um e um chr com nao sei quantas caracteristicas la carregadas..

Qual e a melhor forma? fazer um data frame para cada MSid ter uma coluna/linha com os dados que queremos para cada um? ou e fazer um vector com chrs la dentro um por MSid?

Porque depois vou querer que essas caracteristicas vao parar aos 'colnames' da base de dados .. para quando chamar essa variavel, possa seleccionar por todos esses selectors.

Isto ja parece muito para 2 semanas disto.
"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 » 17/2/2017 20:39

lonewolf Escreveu:VG,
Ja tenho instalado a versao Microsoft, ja instalei o teu package e ja correu alguns dos exemplos desta thread! \:D/ 8-)

Este fim de semana parto o R ao meio! :D

Boa!! Espero que tenhas instalado o RStudio. Não é estritamente necessário mas transforma bastante a experiência para melhor!!
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 » 17/2/2017 19:55

VG,
Ja tenho instalado a versao Microsoft, ja instalei o teu package e ja correu alguns dos exemplos desta thread! \:D/ 8-)

Este fim de semana parto o R ao meio! :D
Avatar do Utilizador
 
Mensagens: 1333
Registado: 29/4/2015 16:02

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

por VirtuaGod » 17/2/2017 19:48

Varendia Escreveu:
VirtuaGod Escreveu:Já que estamos numa de dar dicas, se usam um computador de 64 bits saquem o Microsoft R Open. É mais rápido.
:arrow: https://mran.microsoft.com/open/


Uso 64 bit, mas quando instalei o R meti so a versao 64 bit (R x64 3.3.2)
Mas esse microsoft e para substituir o R.

Como isso se faz? depois tem de se explicar ao R Studio onde esta o microsoft R? tem de se desinstalar o R?

Mas alguma coisa é complicado no mundo do R? Só desistalei o R normal e instalei a versão da Microsoft. Logo ao ligares o RStudio aparece:

R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

Microsoft R Open 3.3.2
The enhanced R distribution from Microsoft
Microsoft packages Copyright (C) 2016 Microsoft Corporation

Using the Intel MKL for parallel mathematical computing(using 2 cores).
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

AnteriorPróximo

Quem está ligado:
Utilizadores a ver este Fórum: aaugustobb_69, bento.jp13, Bing [Bot], Google [Bot], malakas, niceboy, perneta e 180 visitantes