我正在用R弄湿我的脚,经过我目前的任务经过多次反复试验后,我仍然陷入困境。我有股票代码的价格数据。我试图在我的数据中找到熊市,定义为定价数据点<= 20%,低于之前的点(但不是太早)。这是一个时间序列任务吗?我希望这不是太模糊;我还在学习这些能力,所以这是我所知道的最好,最简洁的方式。
提前致谢..
答案 0 :(得分:3)
这是一个版本,可以检测价格比以前的价格小一些比例的天数(例如,20%) 对于一些回顾期(例如,60天)。
## Some prices
set.seed(321)
prices <- cumprod(1 + rnorm(300, 0.005, 0.05))
## Detection of "bear" periods
threshold <- 0.2
lookback <- 60 # Set to length(prices) for no lookback restriction
is.bear <- sapply(1:length(prices),
function(i, prices, threshold = 0.2, lookback = length(prices)){
(prices[i] / max(tail(prices[1:i], lookback))) < (1 - threshold)
},
prices = prices, threshold = threshold, lookback = lookback)
## Result
plot(prices, type = "l")
rug(which(is.bear), col = "red", lwd = 2)
答案 1 :(得分:1)
看看PerformanceAnalytics,特别是DrawdownPeak,它可能就是你要找的东西