草庐IT

常见的量化交易策略

**星光* 2023-10-15 原文

一、量化策略

1、中长线趋势型

通过量化方法从多个角度进行测评,分析价格中长线的趋势,判断是上升的概率更大还是下跌的概率更大,并始终坚持做大概率成功的投资。

2、相对价值型

通过筛选分析历史数据,获取证券或者证券组合之间的价格差异,通过反复买卖来获得价差收益,就是套利交易。

二、交易频率

1、高频交易

  • 1、交易量巨大
  • 2、持仓时间很短(进入微秒、毫秒级别),日内交易次数多

2、低频交易

  • 1、成熟的交易理念
  • 2、随着资金量的增长,交易成本低
  • 3、价值投资

         高频交易者通过快人一步捕捉市场的量价信息来赚取收益,低频交易者通过对股票的深入研究,根据股票的价值和价格的偏离来进行交易。当市场价格高于价值,卖出;价格低于价值,买入。和“价值投资”默契相关。

三、常用策略

1、套利策略

利用同一商品(或相似商品)在不同市场上的差价,进行低买高卖的交易行为

量化投资中的套利策略,强调的是买入低估的同时卖出高估的。
即买入一个投资标的的同时,一定会卖空一个投资标的。

套利策略的最大优势是同时买入和卖空了相同或相似的标的,
从而几乎没有单边敞口,不会造成单边持仓的风险,
对市场的涨跌不敏感,所以套利策略风险较低且与市场相关性很低。

   只要市场没有达到强有效的状态,套利空间就一直存在,随着市场越来越有效,套利空间越来越小


2、Alpha策略

全市场所有投资者的Alpha收益的总和约为0,近似零和博弈

  • 交易成本会使全市场的Alpha收益之和偏负
  • 分红会使全市场的Alpha收益之和偏正
Alpha策略以获取Alpha收益为主,主用金融衍生品对冲掉Beta风险
一般做法是,买入一篮子股票,同时卖空等量的股指期货对冲指数下跌的风险。

股指期货对冲了指数涨跌的风险,因此Alpha策略的收益与大盘的Beta收益无关,
是一种比较稳健的策略模型。

3、多因子策略策略

多因子策略模型建立的流程

多因子模型是量化选股中最重要的一类模型,基本思想是找到某些和收益率最相关的指标,
并根据该指标构建一个股票组合,期望该组合在未来的一段时间跑赢或跑输指数。

如果跑赢,则可以做多该组合,同时做空期指,赚取正向阿尔法收益;
如果是跑输,则可以组多期指,融券做空该组合,赚取反向阿尔法收益。

多因子模型的关键是找到因子与收益率之间的关联性。
主要考虑夏普比率、年化收益、最大回撤、换手率等因素。

4、选股策略

选股策略可以仅仅以股票作为投资标的

从运作逻辑和投资目标上,可以把选股策略分两类:

相对收益型(指数增强):一般满仓运作,与指数的波动基本同一量级,以战胜指数为目标。
绝对收益型:以盈利为目标,需要通过某些方式来控制风险,如择时。

选股策略属于高风险策略,即使是绝对收益型的选股策略,回撤也可以达到10%以上,
而指数增强型的选股策略,最大回撤甚至可能超过50%。

5、CTA策略

CTA(Commodity Trading Advisors):商品交易顾问。

原来是指通过为客户提供期货、期权方面交易建议
    或通过受理期货账户直接参与交易来获取收益的投资者。
现在泛指投资各类期货、期权品种的策略。
    它主要包括趋势跟踪、套利、中性、高频等。

趋势跟踪就是所谓的追涨杀跌,即买入已经开始上涨的标的并期望它继续上涨,
卖空已经开始下跌的标的,并期望它继续下跌。
为什么?

1、市场参与者对信息的反应存在初始时刻的反应不足以及后续的反应过度,
   这种行为偏差是导致价格行为出现趋势的直接原因。
2、趋势就如同历史轮回一样周而复始,而趋势跟踪者便是利益的收割者

关键环节:投资标的的选取、买入卖出信号的产生、资金管理方法等。

6、海龟交易策略

和CTA策略的一样,名称不同,都是趋势跟踪性,跟涨杀跌。 

海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。
这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,
这基本上可以作为复杂交易策略设计和开发的模板

7、人工智能

人工智能的核心是算法,而这与量化投资所依赖的模型相吻合。把对历史数据的分析,应用于深度学习算法,逐渐训练一个愈加完善的模型,从而达到战胜市场的目的。

优点:
人工智能模型具有自适应特性
人工智能可以充分利用快速升级的硬件和算法,深入挖掘市场深处的机遇

缺点:
人工智能擅长处理信息透明的完全博弈,这与金融市场有关本质的不同
人工智能模型的基础是复杂的数学问题,不易理解,需要高超的使用技能

四、参考 

行业轮动(股票) - 经典策略 - 掘金量化 (myquant.cn)

量化基金投资常用策略简介

有关常见的量化交易策略的更多相关文章

  1. ruby-on-rails - Ruby on Rails : . 常量化 : wrong constant name error? - 2

    我正在使用这个:4.times{|i|assert_not_equal("content#{i+2}".constantize,object.first_content)}我之前声明过局部变量content1content2content3content4content5我得到的错误NameError:wrongconstantnamecontent2这个错误是什么意思?我很确定我想要content2=\ 最佳答案 你必须用一个大字母来调用ruby​​常量:Content2而不是content2。Aconstantnamestart

  2. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  3. ruby - 将对象设置为 nil 是否很常见? - 2

    我正在构建一个应用程序,想知道是否将未使用的对象设置为nil是生产级编码中的常见做法。我知道这只是垃圾收集器的提示,并不总是处理对象。 最佳答案 根据这个thread如果您使用完一个成员对象,将其设置为nil将引发被引用对象被垃圾回收。如果它是局部变量,方法exit将做同样的事情。也就是说,如果您要求将成员显式设置为nil,我会质疑您的设计。 关于ruby-将对象设置为nil是否很常见?,我们在StackOverflow上找到一个类似的问题: https://

  4. ruby - 变量赋值后的 if 语句 - 有多常见? - 2

    我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby

  5. ruby-on-rails - 覆盖 Controller 中的 protect_from_forgery 策略 - 2

    我想使用两种不同的protect_from_forgery策略构建一个Rails应用程序:一种用于Web应用程序,一种用于API。在我的应用程序Controller中,我有这行代码:protect_from_forgerywith::exception为了防止CSRF攻击,它工作得很好。在我的API命名空间中,我创建了一个继承self的应用程序Controller的api_controller,它是API命名空间中所有其他Controller的父类,我将上面的代码更改为:protect_from_forgery:null_session.遗憾的是,我在尝试发出POST请求时遇到错误:“

  6. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  7. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  8. 最强Http缓存策略之强缓存和协商缓存的详解与应用实例 - 2

    HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地,以便下次请求时能够直接从缓存中获取资源,从而减少网络请求次数,提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。一.强缓存强缓存是指浏览器直接从本地缓存中获取资源,而不需要向web服务器发出网络请求。这是因为浏览器在第一次请求资源时,服务器会在响应头中添加相关缓存的响应头,以表明该资源的缓存策略。常见的强缓存响应头如下所述:Cache-ControlCache-Control响应头是用于控制强制缓存和协商缓存的缓存策略。该响应头中的指令如下:max-age:指定该资源在本地缓存的最长有效时间,以秒为单位。例如:Ca

  9. Streampark集成Cloudera Flink、ldap、告警,以及部署常见问题 - 2

    集成背景我们当前集群使用的是ClouderaCDP,Flink版本为ClouderaVersion1.14,整体Flink安装目录以及配置文件结构与社区版本有较大出入。直接根据Streampark官方文档进行部署,将无法配置FlinkHome,以及后续整体Flink任务提交到集群中,因此需要进行针对化适配集成,在满足使用需求上,尽量提供完整的Streampark使用体验。集成步骤版本匹配问题解决首先解决无法识别Cloudera中的FlinkHome问题,根据报错主要明确到的事情是无法读取到Flink版本、lib下面的jar包名称无法匹配。修改对象:修改源码:(解决无法匹配clouderajar

  10. ruby-on-rails - 常量化通过浏览器提交的参数是不好的做法吗? - 2

    我有一个单表继承设置,我有一个Controller(我觉得有多个Controller会重复)。但是,对于某些方法,我想调用模型的子类。我想我可以让浏览器发送一个参数,我会针对该参数编写一个case语句。像这样的东西:case@model[:type]when"A"@results=Subclass1.search(params[:term])when"B"@results=Subclass2.search(params[:term])...end或者,我了解到Ruby的所有技巧都可以用字符串创建模型。像这样的东西:@results=params[:model].constantize.

随机推荐