让策略回归本质--把同花顺放到本地飞起来~

用户头像DUKE2017
2024-05-13 发布

量化交易实际上是金融与计算机的结合,所需的各自专业知识都特别强,学习成本无论时间还是成本都需要慢慢积累。但是其实量化还是拼的是大家的金融理论,编程也只是一套工具帮助大家分析理论或者因子的可行性,以及在过去历史的实际表现。因此工具显得十分重要,云端的策略编写受限于资源硬件,用起来确实有些弊端,因此我们将数据拉到本地,让同花顺在本地能够帮助我们进行策略编写和因子分析。

本地化主要做了哪些事情我简单概述一下:

  • 数据本地化存储、数据每日更新(目前仅日频数据)
  • 因子计算公式化
  • 数据处理(空值处理、去极值、标准化)
  • 引用了一些经典的机器学习、深度学习模型
  • 本地的策略回测
  • 本地策略模拟、实盘

因子

因子作为量化交易里非常重要的因素,直接决定量化策略的质量如何。每个因子都代表一些有效的(产生正超额收益,即最高分位)和无效的投资策略(产生负超额收益,即底部分位),因子之所以如此重要,是因为一旦认定一个因子具有投资价值,它就可以与其他因子相结合创建复杂的模型,从而产生强大且稳定的超额收益。

同花顺以及通达信的因子表达式实际就可以理解为因子,在这些软件上其实扮演这及其重要的作用,无论是画线参考,还是技术选股、形态识别之类的一些直播奥,实际都是通过公式和参数去进行计算的。那么在量化策略开发中,我们就可以把这些指标、公式直接转换成公式去进行计算,做分析验证。实际上金融的工作本应如此,把精力放在因子挖掘、因子计算、因子分析,因子组合、因子测试等等,好的因子以及相互组合,无论在传统策略,或者配合上AI模型(机器学习、深度学习),都会有一些不错的收益。

目前云端策略开发上受限于技术平台(服务器资源,例如CPU、内存等因素),很多因子计算都需要自定义方法去做大量去计算,从获取基础数据、基础特征,再去计算因子值,这样的计算耗时耗力。那能不能通过简单的公式表达式去计算一些因子呢?

我这里给出一些示例:

#当天收盘价/20日内最低的收盘价
Factor1=close_0/ts_min(close_0,20)
#3日内最高价的最大值/当日收盘价
Factor2=ts_max(high_0,3)/close_0 
#alpha101中的经典因子
Alpha001=(rank(correlation((high_0+low_0+close_0+open_0)/4,volume_0,4))*rank(correlation(rank(low_0),rank(mean(volume_0,50)),12)))

这里是我举得几个简单的例子,下面我在本地通过开发的因子计算引擎去通过表达式计算:

Img

效果还可以,2013年~2023年的11年A股的全部数据,三个因子计算耗时在1min4s左右。

本地化代码研究当然少不了硬件加持,i9-14900K+128G内存,让代码飞起来~~

对于通达信、同花顺的指标公式,只需转换成表达式的形式,就可以进行计算,计算结果可以在程序中分析、组合、回测来看看实际的效果如何,还是十分方便的。

下面我来举个通达信的例子

Img

这是通达信的梅斯线指标,根据这个公式我来编写表达式:

tdx_MAMASS=ta_sma(sum(ta_sma(high_0-low_0,9)/ta_sma(ta_sma(high_0-low_0,9),9), 25), 6)

用本地代码来获取

from CTQuantPlatform import M
t=['tdx_MAMASS=ta_sma(sum(ta_sma(high_0-low_0,9)/ta_sma(ta_sma(high_0-low_0,9),9), 25), 6)']
features_block = M.input_features(None,t)
xl_date_block = M.input_date('20130101','20231231')
g_feature_block = M.general_feature_extractor(feature_list_input=features_block.get_data(), input_Date=xl_date_block.get_data(), shift_days=100)
d_feature_block = M.derived_feature_extractor(input_data=g_feature_block.get_data(),input_feature_list=features_block.get_data_1(),input_Date=xl_date_block.get_data())
d_feature_block.read()

11年的数据量9230337条,耗时在44s左右。

Img

计算结果和通达信、同花顺一致。


因子分析

因子的值计算出来,那就可以通过代码去分析、测试、验证等等一系列操作,这个我相信有很多讲解文章都会提到,下面我就针对因子简单的做一些分析尝试。

Img

这个就是针对同花顺概念板块的因子分析图表,持仓收益目标是1天,经典的十分位分析图,即将因子值分为十个分位,统计每个分位的一定时间范围内的累乘收益,发现一分为较其他分位优势还是很明显的,因此我们可以用此因子来做个初步的筛选。过两天我会以此清洗来做个策略来测试下效果如何,各位朋友感兴趣的话可以关注后续。

我们的beta版本已发布,欢迎有兴趣的大佬来体验,对与使用过程中的建议和意见,我们会及时优化,希望能更快帮助大家更好的开发策略。链接

评论

用户头像
2024-05-15 15:59:33

数据本地化存储,是存储到数据库中吗?supermind客户端是否能连接数据库呢

评论

需要帮助?

试试AI小助手吧