DolphinDB实现动量交易策略详解
动量策略是流行的量化策略之一。商品期货的CTA策略,绝大多数都是基于动量策略。在股票市场,动量策略也是常用的量化因子之一。通俗地讲,动量策略就是“追涨杀跌”。下面我们将介绍如何在DolphinDB中测试动量交易策略,并计算动量交易策略的累积回报。
DolphinDB database 是一款高性能分布式时序数据库。与其它通常的数据库不同,DolphinDB不仅可以存储和检索数据,而且具备强大的编程和分析功能,可以直接在数据库内完成策略回测等复杂的工作,便捷且高效。
常用的股票动量因素是基于过去一年中扣除近一个月的收益率。动量策略通常是一个月调整一次并且持有期也是一个月。本文的例子中,每天调整1/21的投资组合,并持有新的投资组合21天。为了简化起见,本文的回测没有考虑交易成本。
假设原始数据是一个CSV文件。它包含以下列:
PERMNO:股票代码
date:日期
PRC:每股价格
SHROUT:流通股数
RET:股票日收益
VOL:每日交易量
步骤1. 加载股票交易数据,对数据进行清洗和过滤,然后为每只股票构建过去一年扣除近一个月收益率的动量信号。
US = loadText("C:/DolphinDB/Data/US.csv")
def loadPriceData(inData){
USstocks = select PERMNO, date, abs(PRC) as PRC, VOL, RET, SHROUT*abs(PRC) as MV from inData where weekday(date) between 1:5, isValid(PRC), isValid(VOL) order by PERMNO, date
USstocks = select PERMNO, date, PRC, VOL, RET, MV, cumprod(1+RET) as cumretIndex from USstocks context by PERMNO
return select PERMNO, date, PRC, VOL, RET, MV, move(cumretIndex,21)\move(cumretIndex,252)-1 as signal from USstocks context by PERMNO
}
priceData = loadPriceData(US)
相关文章