在我目前的研究中,我试图找出,特殊情绪对每日股票回报的影响有多大。计算运行良好,结果也是合理的。到目前为止,quantmod包和雅虎财务数据的计算如下所示:
getSymbols(c("^CDAXX",Symbols) , env = myenviron, src = "yahoo",
from = as.Date("2007-01-02"), to = as.Date("2016-12-30")
Returns <- eapply(myenviron, function(s) ROC(Ad(s), type="discrete"))
ReturnsDF <- as.data.table(do.call(merge.xts, Returns))
# adjust column names
colnames(ReturnsDF) <- gsub(".Adjusted","",colnames(ReturnsDF))
ReturnsDF <- as.data.table(ReturnsDF)
然而,为了使其更加强大,以便对pennystock数据的嘈杂影响我想知道,如何排除曾经在该时间段内低于某个值x的股票,假设1欧元。
我想,最好的办法是在计算返回值之前将它们排除并合并xts对象结果,甚至更好,然后再使用getSymbols命令下载它们。有谁知道这怎么可能最好?提前致谢。
试试这个:
PF
的qmao
函数,它具有许多其他有用的函数用于此类分析。(install.packages("qmao", repos="http://R-Forge.R-project.org”)
)为了保持更灵活,我建议采取一个子期间 - 假设在过去21个交易日内没有低于5的价格。下面的玩具示例可能说明我的观点。
我使用AAPL,FB和MSFT作为符号Universe。
> symbols <- c('AAPL','MSFT','FB')
> getSymbols(symbols, from='2018-02-01')
[1] "AAPL" "MSFT" "FB"
> prices <- PF(symbols, silent = TRUE)
> prices
AAPL MSFT FB
2018-02-01 167.0987 93.81929 193.09
2018-02-02 159.8483 91.35088 190.28
2018-02-05 155.8546 87.58855 181.26
2018-02-06 162.3680 90.90299 185.31
2018-02-07 158.8922 89.19102 180.18
2018-02-08 154.5200 84.61253 171.58
2018-02-09 156.4100 87.76771 176.11
2018-02-12 162.7100 88.71327 176.41
2018-02-13 164.3400 89.41000 173.15
2018-02-14 167.3700 90.81000 179.52
2018-02-15 172.9900 92.66000 179.96
2018-02-16 172.4300 92.00000 177.36
2018-02-20 171.8500 92.72000 176.01
2018-02-21 171.0700 91.49000 177.91
2018-02-22 172.5000 91.73000 178.99
2018-02-23 175.5000 94.06000 183.29
2018-02-26 178.9700 95.42000 184.93
2018-02-27 178.3900 94.20000 181.46
2018-02-28 178.1200 93.77000 178.32
2018-03-01 175.0000 92.85000 175.94
2018-03-02 176.2100 93.05000 176.62
假设您希望在过去6个交易日内交易低于175.40的任何工具被排除在您的分析之外:-)。如您所见,它将排除AAPL和FB。
apply
和基本函数any
应用(!)为6天的prices
子集将给我们准确的我们想要的。显示最近3天的价格,不包括不符合我们条件的工具:
> tail(prices[,apply(tail(prices),2, function(x) any(x < 175.4)) == FALSE],3)
FB
2018-02-28 178.32
2018-03-01 175.94
2018-03-02 176.62