R - 如何在计算调整后的股票回报之前将细价股从环境中排除



在我目前的研究中,我试图找出临时情绪对每日股票回报的影响有多大。 计算运行良好,结果也是合理的。 到目前为止,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)

然而,为了使它对低价股数据的嘈杂影响更加强大,我想知道,如何排除在一段时间内低于某个值x的股票,比如说1欧元。

我想,最好的办法是在计算回报之前排除它们并合并 xts 对象结果甚至更好,然后再使用 getSymbol 命令下载它们。 有没有人知道这如何才能最好地工作?提前谢谢。

试试这个:

  • 构建交易品种的调整收盘价的价格框架 (我使用 quantmod 附加包的PF函数qmao该函数具有许多其他有用的功能用于此类分析。(install.packages("qmao", repos="http://R-Forge.R-project.org”))

  • 按列查看是否有任何价格低于您的最低触发价格

  • 仅选择没有低于触发价格的收盘价的列

为了保持更灵活,我建议采取一个子周期 - 假设在过去 21 个交易日中没有低于 5 的价格。下面的玩具例子可以说明我的观点。

我使用AAPL,FB和MSFT作为符号宇宙。

> 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

最新更新