R 语言金融投资:量化选股策略回测(TTR 包指标计算)
量化投资作为一种基于数学模型和算法的投资方式,在金融市场中越来越受到重视。在量化投资中,选股策略是至关重要的环节,它直接关系到投资组合的收益和风险。本文将使用 R 语言和 TTR 包,结合一系列技术指标,对选股策略进行回测,以评估其有效性。
环境准备
在开始之前,确保你已经安装了 R 语言和 TTR 包。如果没有安装,可以通过以下命令进行安装:
R
install.packages("TTR")
数据获取
我们需要获取股票的历史数据。这里我们以上证指数为例,使用 R 的 `quantmod` 包来获取数据。
R
library(quantmod)
getSymbols("000001.SS", from = "2020-01-01", to = "2023-01-01", auto.assign = FALSE)
这里我们获取了上证指数从 2020 年 1 月 1 日到 2023 年 1 月 1 日的数据。
技术指标计算
接下来,我们将使用 TTR 包中的函数来计算一些常用的技术指标。
移动平均线(MA)
移动平均线是衡量趋势的重要指标。以下代码计算了 5 日、10 日和 20 日的简单移动平均线(SMA)。
R
data$SMA5 <- SMA(data$Close, n = 5)
data$SMA10 <- SMA(data$Close, n = 10)
data$SMA20 <- SMA(data$Close, n = 20)
相对强弱指数(RSI)
相对强弱指数(RSI)用于衡量股票的超买或超卖状态。以下代码计算了 14 日的 RSI。
R
data$RSI14 <- RSI(data$Close, n = 14)
平均真实范围(ATR)
平均真实范围(ATR)用于衡量市场的波动性。以下代码计算了 14 日的 ATR。
R
data$ATR14 <- ATR(data$High, data$Low, data$Close, n = 14)
布林带(Bollinger Bands)
布林带由一个中间的简单移动平均线和两个标准差组成的上下轨组成。以下代码计算了 20 日 SMA 和 2 标准差的布林带。
R
data$BollingerBands <- BollingerBands(data$Close, n = 20, sd = 2)
data$BollingerUpper <- data$BollingerBands$Upper
data$BollingerLower <- data$BollingerBands$Lower
选股策略
基于上述技术指标,我们可以设计一个简单的选股策略:
1. 当 RSI 低于 30 且股票价格在布林带下轨下方时,买入股票。
2. 当 RSI 高于 70 且股票价格在布林带上轨上方时,卖出股票。
以下代码实现了这个策略:
R
初始化买入和卖出信号
data$BuySignal <- NA
data$SellSignal <- NA
for (i in 2:nrow(data)) {
if (data$RSI14[i] < 30 && data$Close[i] < data$BollingerLower[i]) {
data$BuySignal[i] 70 && data$Close[i] > data$BollingerUpper[i]) {
data$SellSignal[i] <- 1
}
}
回测
为了评估选股策略的有效性,我们需要对策略进行回测。以下代码计算了策略的收益和风险指标:
R
计算策略收益
data$Position <- ifelse(data$BuySignal[i] == 1, 1, ifelse(data$SellSignal[i] == 1, -1, 0))
data$StrategyReturn <- cumprod(1 + data$Position)
计算收益和风险指标
data$AnnualReturn <- (data$StrategyReturn[nrow(data)] - 1) 252
data$MaxDrawdown <- max((cummax(data$StrategyReturn) - data$StrategyReturn) / cummax(data$StrategyReturn))
data$SharpeRatio <- (data$AnnualReturn - 0.01) / sd(data$StrategyReturn)
结论
本文使用 R 语言和 TTR 包,结合一系列技术指标,实现了一个简单的选股策略,并对策略进行了回测。通过回测结果,我们可以初步评估策略的有效性。需要注意的是,这只是一个简单的示例,实际投资中需要考虑更多的因素,如交易成本、市场情绪等。
后续工作
为了进一步提高策略的有效性,我们可以尝试以下方法:
1. 优化技术指标参数。
2. 结合其他技术指标或基本面分析。
3. 使用机器学习算法进行策略优化。
4. 对策略进行多市场、多时间跨度的测试。
通过不断优化和改进,我们可以构建一个更加有效的量化选股策略。
Comments NOTHING