如何从零开始设计一套⌈中性策略回测系统⌋?

最近接到新任务,需要开发一套⌈中性策略回测系统⌋。

首先老实交待,策略方面,更多是投研部的工作,我不太懂。中性策略,平时工作中多多少少有些接触,全名为市场中性策略,我理解,凡是有对冲的策略便是市场中性策略,构建多头和空头头寸,其中空头即为对冲端。之所以被称为中性策略,也是因为与市场相关性低,无论牛市和熊市,只要有基差,即多空两头波动不均衡,便能获利,一度被认为是能穿越牛熊的黄金策略。我司的中性策略,主要是股票多因子Alpha策略,基于量、价及基本面范围的多因子量化策略(基本面因子不算量化范畴?),而对冲端,主要有股指、融券和场外期权三类。

相应地,回测也分两块,即多头回测和空头回测。本次回测系统开发,优先开发对冲端的回测,当前公司有一个在用的多头回测系统,勉强能先用着,对冲端开发完成后,再小改一下,将两边融合起来,最终作为一套完整的中性策略回测系统交付投研部使用。

回测系统,顾名思义,即回溯行情,测试交易。交易基于策略,策略有简单复杂之分,最简单的策略可以简单到一句话,比如每天按MA5(5日移动均线)下单,低买高卖,再比如每天早上10点市价挂单,虽然简单,但都算交易策略。而复杂策略,可以多到成千上万行代码,可以是一个独立且庞大的系统,形形色色,各有千秋。殊途同归的是,反映的都是投研/基金经理等交易者的清奇思路,策略是一种信仰,最终可以赚大钱的信仰。

回测,无非是计算历史区间内策略每日的收益。收益可分为两部分,一是持仓收益,二是交易收益。对于股票:

持仓收益:当日未交易的票,因为行情波动而产生的收益。收益率=收盘价/昨收-1。

交易收益:当时买入的票持有到收盘,或卖出的票从开盘到卖出时点,这个时段内的收益。其中,买入的收益率计算公式为:收盘价/买入价-1,卖出的收益率为:卖出价/昨收价-1。

期货与股票略有差异,股票实行的是逐笔结算制度,浮动盈亏是一买一卖之间累计的,与持仓天数无关。期货实行的是逐日盯市结算制度,即每天的盈亏会在当天结算时结清,盈利的钱会在结算后体现在账户总资金(权益)中,作为第二天的本金,而对于亏损的,需要在收盘后及时补充保证金,否则期货公司会执行强制平仓以降低暴仓可能引发的资不抵债风险。

另外期货交易比股票更为复杂,最明显的是期货允许做空(股票当然也可以,但是融资融券是另外一回事暂且忽略),交易方向又分为开仓、平仓,交易类型分为买和卖,因此有买开、卖平、卖开、买平这四种交易,之所以用这顺序,是因为买开的合约是通过卖平来平仓,卖开的合约则通过买平来平仓,这样结对便于记忆否则容易混淆。

显然,回测系统的核心,是计算每日交易盈亏(后文简称为PNL,即Profit and Loss)。

对于回测系统,若按策略类型划分,有以下两类:

1、择时策略回测:这类涉及到策略定义,按策略的成交规则进行择时交易。

2、择股策略回测:这类回测是无关下单时间的,适用于选股策略,导入股票组合和权重,指定成交价格,比如开盘价、时段twap/vwap等,再指定交易区间(起始/截止日),即可启动回测。

大部分回测系统属于第一类,而中性策略属于选股策略,显然适用第2类回测。

相关推荐
阡之尘埃8 天前
Python量化交易12——Tushare全面获取各种经济金融数据
python·金融·数据分析·pandas·量化交易·宏观经济
TGITCIC20 天前
AI量化交易是什么?它是如何重塑金融世界的?
量化交易·量化·ai金融·deepseek量化交易·大模型金融·ai量化·大模型理化
人大博士的交易之路2 个月前
今日行情明日机会——20250409
人工智能·数学建模·分类·数据挖掘·量化交易
breakloop2 个月前
量化交易从0到1(理论篇)
笔记·学习·量化交易
船长@Quant2 个月前
Airflow量化入门系列:第四章 A股数据处理与存储优化
python·量化交易·airflow·dask·工作流编排·ta-lib·vectorbt
船长@Quant2 个月前
PyTorch量化进阶教程:第六章 模型部署与生产化
pytorch·python·深度学习·transformer·量化交易·sklearn·ta-lib
船长@Quant2 个月前
PyTorch量化进阶教程:第五章 Transformer 在量化交易中的应用
pytorch·python·深度学习·transformer·量化交易·sklearn·ta-lab
船长@Quant2 个月前
PyTorch量化进阶教程:第二章 Transformer 理论详解
pytorch·python·深度学习·transformer·量化交易·sklearn·ta-lib
船长@Quant2 个月前
PyTorch量化技术教程:第四章 PyTorch在量化交易中的应用
pytorch·python·深度学习·机器学习·量化交易·ta-lib
船长@Quant2 个月前
PyTorch量化技术教程:第三章 PyTorch模型构建与训练
pytorch·python·深度学习·机器学习·量化交易·ta-lib