小编use*_*816的帖子

Google财经API地址已更改

直到昨天,以下网址(Google财经API)

https://www.google.com/finance/getprices?q=TSLA&x=NASDAQ&i=3600&p=5d&f=d,o,h,l,c,v

将导致一个漂亮的逗号分隔数据表与TSLA股票数据.从昨天起,同一个电话被重定向到TSLA https://www.google.com/search?q=TSLA&tbm=fin的标准谷歌财经网站.有人可能知道新的API地址或有关于Google财经API状态的任何信息吗?将URL更改为

https://finance.google.com/finance/getprices?q=TSLA&x=NASDAQ&i=3600&p=5d&f=d,o,h,l,c,v

没有帮助,因为它也重定向到正常的网站.

finance google-finance quantitative-finance

5
推荐指数
0
解决办法
5536
查看次数

R包含条件和重置的累积和

我有一个由-1s和1s组成的信号位置指示器矢量。另外,我还有一些要基于Signal值求和的体数据。基本数据表如下所示:

df <- cbind(Signal, Volume)
head(df, 20)

           Signal    Volume
2016-01-04     NA  37912403
2016-01-05     -1  23258238
2016-01-06     -1  25096183
2016-01-07     -1  45172906
2016-01-08     -1  35402298
2016-01-11     -1  29932385
2016-01-12     -1  28395390
2016-01-13     -1  33410553
2016-01-14     -1  48658623
2016-01-15      1  46132781
2016-01-19      1  30998256
2016-01-20     -1  59051429
2016-01-21      1  30518939
2016-01-22      1  30495387
2016-01-25      1  32482015
2016-01-26     -1  26877080
2016-01-27     -1  58699359
2016-01-28      1 107475327
2016-01-29      1  62739548
2016-02-01      1  46132726
Run Code Online (Sandbox Code Playgroud)

我想实现的是(不使用for循环)生成一个cum Volume的矢量,每次信号改变时都会重置。此外,音量值应乘以信号值,即,当信号为-1时,应将-Volume加到当前的cum Volume。基于类似的问题,我尝试了

ave(df$a, cumsum(c(F, diff(sign(diff(df$a))) != 0)*df$Volume), FUN=seq_along) 
Run Code Online (Sandbox Code Playgroud)

会产生正确的信号分组,但由于某种原因未包括音量。没有重置,解决方案就相当简单(张贴在SO上)

require(data.table) …
Run Code Online (Sandbox Code Playgroud)

conditional r sum dplyr data.table

4
推荐指数
1
解决办法
832
查看次数

金融系列连续下跌最多

我想请你帮忙解决一个看起来很奇怪的问题.也就是说,我试图在金融时间序列中(以及它发生时)找到负回报的最长连续子序列,但我可以设法只编程具有相同符号的返回的最长连续子序列.我正在处理以下类型的财务数据:

               LgReturn
1991-08-13  0.005180647
1991-08-14  0.008555806
1991-08-15  0.004878436
1991-08-16 -0.004723199
Run Code Online (Sandbox Code Playgroud)

我的方法如下:首先使用符号获得仅1s的序列(正返回和-1s(负返回)并使用rle获取所有长度的外观列表

z <- sign(NASDAQLgRetOpen[,1])
rle(z)
Run Code Online (Sandbox Code Playgroud)

命令rle(z)产生以下输出:

Run Length Encoding
lengths: int [1:2731] 3 3 2 1 4 6 1 1 2 3 ...
values : num [1:2731] 1 -1 1 -1 1 -1 1 -1 1 -
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码找到最长的子序列:

pad <- rev(sort(rle(z)$lengths[rle(z)$values[rle(z)$lengths]==-1]))
Run Code Online (Sandbox Code Playgroud)

和以下代码提取它在我的时间序列中出现的位置

vsota <- sum(rle(z)$lengths[1:(which(unlist(rle(z)$lengths)==pad[1]))])
Run Code Online (Sandbox Code Playgroud)

这给了我时间序列中的行,所以我使用了

serija <- NASDAQLgRetOpen[(vsota+1-pad[1]):vsota,1]

plot(cumprod(1+serija), type="l")
Run Code Online (Sandbox Code Playgroud)

问题是我得到了一个情节,清楚地显示了一个增加的序列,所以我找到了最长的正序子.真正奇怪的是,无论我在行中选择1还是-1,我都得到正的子序列

 pad <- rev(sort(rle(z)$lengths[rle(z)$values[rle(z)$lengths]==-1]))
Run Code Online (Sandbox Code Playgroud)

我错过了什么?伙计们,帮助我,因为这真的令人困惑.提前感谢您的建议.

...找到一个简单的方法来解决这个问题:反转符号并应用log,使得负回报变为0并且pozitive返回变为NaN - 然后rle总是返回最长的负设置序列,因为Nan被解释为长度为1.以下代码作品; 假设您要分析的数据位于数据表的第i列:

fall <- function(data,i){
sg <- log(-sign(data[,i]))
zacetek <-  sum(rle(sg)$lengths[1:(which(rle(sg)$lengths==max(rle(sg)$lengths))-1)[1]])
podatki …
Run Code Online (Sandbox Code Playgroud)

finance r

2
推荐指数
1
解决办法
252
查看次数