初学者的量化 “利器”,哪种策略才是你的菜?

news/2025/2/19 13:00:36/文章来源:https://www.cnblogs.com/sljsz/p/18716243

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。

写在前面

这篇文章专为量化投资领域的小白精心打造,量化大神们请自动略过哦。

本文将从中低频交易方向展开,对于入门小白,不建议从高频交易入手。想要在高频交易稳定盈利,要么你是计算机大神,能用普通(公开)策略做出全市场最快的速度,要么你是模型大神,能挖掘出市场微结构中真正无效、低效市场的盈利点,并且在高频交易内卷的当下,无论是最快速度还是最强模型,均需要硬件、算力等基础设备的大规模投入。

中低频策略的分类

几乎所有的中低频策略都可以归为这两大类:单边、套利。单边,顾名思义,只持有单一方向的头寸,做多或多空;套利,同时持有做多做空双边头寸,双边头寸不一定完全对冲,也可能存在敞口,我们也归为套利类。

在常规理解中,通常认为单边策略风险比套利策略更大,其实未必,单边策略不一定风险大,套利也不一定风险小,风险大小与策略实际交易的杠杆倍数相关。如果单边策略不用Margin、甚至只用1倍以下Margin,也可以将回撤控制在很小的比例;反之,像长期资本那样在套利策略上加上百倍杠杆,即使标的物是较安全的国债价差,仍然遭遇基金的爆仓清盘。因此,我们只能说,在相同杠杆倍数下,单边策略相比较套利策略才呈现高收益高风险的状态。

单边、套利的分类,是基于策略标的的持有方向来讲的。除此以外,中低频策略根据策略交易的信号来源,还可以分为时间序列、横截面两大类。所谓时间序列,是指信号的计算来源于过去一段时间某组历史数据或几组历史数据所计算得到的某个结果;而所谓横截面,是指信号基于某个特定的时间点,只对该时间点所需数据计算得到的某个结果。

通过上述两种不同分类方式,事实上,我们可以把中低频策略归为4类,即单边时间序列策略、单边横截面策略、套利时间序列策略、套利横截面策略。下面,我们将就这4类策略一一举例。

单边时间序列策略

单边时间序列策略是在量化投资中,基于时间序列数据,针对资产价格等变量只在单一方向上进行预测和操作的一种投资策略。这类策略可以说是最常见的策略,也是新手最容易上手的策略。常见是因为这类策略,有许多经典的基础策略,如双均线、肯特那、布林通道、海龟等等,可供我们魔改;容易上手是因为许多三方平台,如TBQ、文华财经等,都支持这类策略很方便的回测、实盘。

我们就以最基础的双均线策略举例,这是TBQ平台的自带源码。可以这么说,即使只对编程略懂一二的初学者,也能大致看懂代码的逻辑:短均线高于长均线时做多、段均线低于长均线时做空。

仔细观察上述代码,你会发现它其实少了很多东西,比如历史行情数据是怎么接入、存储、清洗的,实时行情数据又是怎么接入的,下单算法怎么保证成交的,又是怎么记录成交、撤单的,回测的资金曲线与回测指标又是怎么计算的。

其实,上面这些除策略核心逻辑以外的部分,都在三方平台的底层帮你实现了,让你无需关注除策略核心逻辑以外的细节,专注于策略逻辑的开发,这对新手来说是十分友好的。要知道,自己从零开始,动手搭建一个从数据到逻辑、到交易执行最后风控的整套交易系统,是需要大量经验的,里面也有很多坑要踩(这个我们在后续的文章会教大家如何避坑,敬请关注)。

看到这里,你可能会问,那么像这样简单的策略,还能盈利吗?我们分别挑了商品、股指里交易比较多的品种:螺纹钢、IC进行了测试。测试周期选了4小时K线,手续费滑点按常规扣除。

1手螺纹钢的表现:

1手股指IC的表现

可以看到,这样最基础、最简单的策略,从超长期来看,是能够盈利的,但是策略效率极低,对于执行者的心态是一个极大的考验,需要做好连续几年不开张的准备。

因此,如果你是一位量化的初学者,希望通过单边时间序列策略进入这个赛道,有两种努力的方向:1,充分了解策略的利弊,利用超强的执行力和心态,执行简单的或稍加改动的经典策略,长期执行会有收获,这一个方向难在修心上。2,通过各种方法,挖掘有效因子,提高策略盈利能力和效率(这里需要特别注意,避免陷入过度优化),有了高夏普策略,执行心态上自然会比较容易过关。

单边横截面策略

单边横截面策略是指在某个特定时间点上,对一组具有不同特征的资产(如股票、债券等)进行分析和筛选,根据资产在这一时刻的横截面数据所反映出的特征来构建投资组合,而不考虑这些资产在时间序列上的变化情况,并且投资方向通常是单边的,即只做买入或只做卖出操作,而不同时进行双向交易。

近年来,很多量化基金普遍采用的股票指数增强策略,就是一类典型的单边横截面策略。在某一交易日,策略算法根据市场上所有上市公司的财务数据、量价数据、高频数据、舆情数据等横截面信息,挑选出那些未来大概率跑赢基准指数的股票,构建一个只包含买入这些股票的投资组合,这就是典型的单边横截面策略的应用。

举个例子,中证、国证和华证发布了三只全市场自由现金流指数,这是一个典型的单边横截面策略。三个指数的编制规则整体大同小异,我们一起来看看算法:

(1)全部A股中剔除属于金融及地产行业的股票,剔除成交额后20%的股票。

(2)剔除样本空间中过去几年自由现金流或经营活动产生现金流为负的公司(各指数公司对其年数及具体指标限定有所差异);国证和中证对样本空间股票的盈利质量及ROE稳定性略作负面剔除。

(3)选取自由现金流率(自由现金流\企业价值)排名前100的公司构成指数成分(其中,自由现金流 = 过去一年经营活动产生的现金流量净额 − 过去一年购建固定资产、无形资产和其他长期资产支付的现金)。

(4)季度调仓,自由现金流金额加权。

那么,这个策略的效果如何,我们再一起看基金发布的场自由现金流指数的收益率表现:

可以看到,在2014-2024年的这个时间跨度内,自由现金流指数不仅战胜了300、500指数,也同样战胜了中证红利、红利低波等10年内表现较好的指数,说明上述由自由现金流作为核心因子构建的单边横截面策略,具有长期战胜市场的优秀能力。

那么作为量化初学者,如果选择单边横截面策略这条赛道,需要要哪些准备?技术宅认为,首先是规模相对较大起始资金,因为对于横截面策略来说,筛选出一揽子标的,进行组合投资是必须的。第二是具有持续的因子挖掘能力,横截面策略是否有效,背后是因子是否有长期战胜市场的能力,并且有效因子也随着时间的推移而发生改变,需要开发者不断进行迭代。第三是长期执行,尤其是像上面例子这样的基本面类型因子,他的有效周期必定不会很短,需要在较长的时间才能发挥应有的威力,因此在确定因子后,坚定、长期的执行力,也是必须的条件。

套利时间序列策略

套利时间序列策略,最经典的是统计套利策略,统计套利是一种利用资产价格之间(价差)的统计关系进行套利的交易策略。其原理主要基于资产之间的协整关系以及资产价差的均值回归特性。

协整关系:协整关系是指两个或多个非平稳时间序列的线性组合是平稳的。在统计套利中,通常寻找具有协整关系的资产对进行交易。如果两个资产的价格序列具有协整关系,那么它们的价差在长期来看会围绕一个均值波动。

均值回归原理:相关资产的价差在短期内可能会受到各种因素的影响而偏离其长期均值,但从长期来看,价差有向均值回归的趋势。这一原理是统计套利的重要基础之一。在统计套利中,通过对资产价差历史数据的分析,可以确定价差的均值范围。当价差偏离均值一定程度时,就可以进行相应的套利交易操作。例如,如果价差高于均值一定幅度,可以考虑做空该价差;如果价差低于均值一定幅度,可以考虑做多该价差。

对于量化初学者来说,可以先从对简单有效的低维统计套利策略入手,而非一开始就用机器学习的方式来做套利。例如在期货市场,均值回归原理具有普遍适用性。章涵在其论文《基于均值回归的超额价差套利策略研究》中,基于均值回归理论的基本逻辑,构建带有前期价格信息的移动权重模型,该模型打破了原先对均值回归主次资产组合的限制,围绕避免过拟合的思路,对模型的复杂部分进行简化,并设计出可行的基于均值回归的超额价差套利策略,该策略在2013—2020年螺纹钢期货的历史回测中取得220.0%的总收益率和27.5%的年化收益率。

关于上述策略的具体细节,推荐大家上维普资讯等文献查询网站,搜索该论文标题,即可找到对应文献进行查阅。

套利横截面策略

套利横截面策略是一种利用同一时间截面上不同资产之间的价格关系或其他特征因子,通过做多某些资产同时做空另一些资产,以获取相对稳定收益的投资策略。它不依赖于市场的整体上涨或下跌趋势,而是专注于资产之间的相对价格变动,旨在从资产之间的价格错配或差异中获利,是一种相对价值投资策略。

我们研发的数字多空策略:数字多空策略交易系统(实盘+回测+数据),就是一个典型的套利横截面策略。策略在某个时间节点,计算所有挂牌数字货币合约的横截面信号因子,并根据信号因子的强弱顺序,筛选未来最有可能上涨的币种以及最有可能下跌的币种,同时分别做多、做空上涨和下跌潜力最大的币种,通过多空对冲掉数字货币市场整体的方向性波动,赚取多、空币种之间的价差收益。上述多空策略不论是在样本内的回测,还是样本外的实盘交易中,都表现出良好的鲁棒性。

数字套利横截面策略回测:

数字套利横截面策略实盘:

对于想要在套利横截面策略方向有所建树的量化投资者来说,有两方面的问题尤为重要:第一是因子的有效性,能有效地、高胜率地筛选出最大化价差的因子,也是真正有效的因子,我们也可以通过因子组合、因子迭代等方式,延长这类策略的稳定性与生命周期。第二是风险控制,价差不如预期的反方向运行,此时的应对预案(风控)很重要,有时候不在回测周期内出现的反向极端行情,会在实盘交易中发生,参考美国长期资本管理公司(LTCM)破产的例子。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/883946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt实现速度仪表盘GaugeSpeedWidget

目标基于QWidget绘制速度仪表盘, 仪表盘颜色为渐变色, 可指定当前显示的文字内容和文字颜色 可指定当前指针旋转的数值效果图控件完整代码 GaugeSpeedWidget.h #pragma once#include <QWidget> #include <QMap>class QPaintEvent; class QPainter;/// /// @brie…

pcie报文

PCIE的四种请求memory、IO的地址编码posted、no-postedTLP包类型缩写MRD举例TLP包格式TLP HEADTLP HEAD byte0memory操作

P1107 [BJWC2008] 雷涛的小猫

链接 https://www.luogu.com.cn/problem/P1107 题目思路因为在取h+delta的max时会一直遍历,所以直接加个记忆,就不用一直遍历了。 代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<queue> #include<cmath> #in…

PVE8.3.1开启核显虚拟化SR-IOV

本来想集成到前面的文章,但是被网上一些文章误导从而浪费了3H之后决定还是单开一篇专门说说PVE8.3.1开启核显虚拟化的过程。所以建议大家还是参考更有价值的唯一的官方指南 https://github.com/strongtz/i915-sriov-dkms 交代一下背景: 发文日期2025年2月14日,以下所有操作均…

【C】单链表

单链表 声明一个指向自身的结构体 struct Test {int x;int y;struct Test test; };输出结果: error!程序报错,因为这样会造成无限的循环。当编译器解析到struct Test test时test是结构体Test的成员,定义test成员需要Test,而结构体Test自身又是不完整的,那么程序就无法定义一…

所有Ollama用户请注意!!!你的IP可能已泄露

刚刚学到一项非常硬核的“黑”科技,只要几个关键词,就能实现 Ollama 自由。全世界几万台高性能带显卡的电脑供你使用。 添加图片注释,不超过 140 字(可选)看看这个页面,美国,中国,德国,英国....一个独立 IP 背后就是一台电脑,有些可能还是服务器。我实测了,随便找一…

【C】内存布局

动态内存管理 动态内存管理的几个函数malloc -- 申请动态内存空间 free -- 释放动态内存空间 calloc -- 申请并初始化一系列内存空间 realloc -- 重新分配内存空间malloc函数原型:void *malloc(size_t size);malloc函数向系统申请分配size个字节的内存空间,并返回一个指向这块…

【C】指针

指针 变量在内存中的存放 在内存中,字节是最小的存储单元。对于一个内存单元来说,指针就是单元的地址,每个地址可以存放一个字节的数据。存放一个整形变量(int)就需要动用到四个存储单元。 在内存中完全没有存储变量名的必要。 因为编译器知道具体每一个变量名对应的存放地址…

VMwareWorkstation pro 17下载与安装

‌VMware Workstation Pro 17‌是一款功能强大的虚拟机软件,专为开发者和IT专业人士设计。它允许用户在一台物理计算机上创建和运行多个虚拟操作系统,从而实现跨平台的开发、测试和部署。VMware Workstation Pro 17采用了先进的虚拟化技术,能够在单个物理主机上运行多个虚拟…

我的“ DeepSeek 越来越闲了”!讯飞星火无限调用 API 攻略来了

最近DeepSeek 确实挺忙,网页繁忙,API资源紧张。 添加图片注释,不超过 140 字(可选) 开源模型也很忙,被下载了 267万次!!! 添加图片注释,不超过 140 字(可选) 但是,我的 DeepSeek 要越来越闲了。腾讯云的接口刚用上,讯飞星火的又来了。 添加图片注释,不超过 1…

【C】数组

数组 数组的定义语法:类型 数组名[元素个数] (方括号内只能是常量或者常量表达式) int a[6]; char b[24]; double c[3];上面几个类型分别占用内存的字节数为: int a[6] ==> 4 * 6 = 24 char b[24] ==> 1 * 24 = 24 double c[3] …

【牛客训练记录】牛客小白月赛110

训练情况赛后反思 C题没看到偶数,导致打错表了TAT,然后浪费了一点时间 A题 编号每 \(500\) 一组,我们分别除 \(500\) 和取模 \(500\) 就行了点击查看代码 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;void solve(){int x;…