DolphinDB实现动量交易策略详解

2022-04-28 00:00:00 交易 策略 权重 动量 投资组合

动量策略是流行的量化策略之一。商品期货的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)

相关文章