本文为量子金服原创文章,转载须授权

往期回顾:

上帝手中的骰子——无所不能的贝叶斯(上篇)

上帝手中的骰子——无所不能的贝叶斯(下篇)

机器学习(Machine Learning, ML)是时下最热门的话题之一,应用范围十分广泛。其中,对分类问题的解决,是机器学习的一个常用领域。不难想到,对于选股策略来说,其本质就是一个分类问题,即将股票分成持有和不持有两类。那么,应用机器学习的技术技术进行选股,应当是一个可以尝试的方向。本文中,我们将结合国信证券发布于2010年9月7日的研究报告《Logistic选股模型及其在沪深300中的实证》中的思路,将选股问题转化为一个二元分类问题,从而利用Logistic算法进行预测分类,完成选股。

概念简介

Logistic回归(Logistic Regression,以下简称LR)属于常用的机器学习算法之一,可以用来回归,也可以用来分类,主要用来处理二分类的问题。与传统的二分类方法(例如SVM)不同的是,LR并不是将两个不同类别的样本完全分开,非此即彼,而是返回一个概率值,即预测样本有百分之多少的概率属于正类,又有百分之多少的概率属于负类,这接近于“模糊”(fuzzy)分类的范畴。在实际应用中,LR常被用于估计某种事物的可能性。例如,它可以用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方。还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性等等。

LR的本就是一个线性分类模型,它与线性回归的不同点在于:试图将线性回归输出的很大范围的数,例如从负无穷到正无穷,压缩到0和1之间,用以表达“可能性”。而实现这个功能就需要一个映射,也就是给输出加一个logistic函数(或称sigmoid函数):

Sigmoid 函数在有个很漂亮的“S”形,如下图所示(引自维基百科):

也就是说,LR其实本质上是一个被logistic方程归一化后的线性回归过程

在使用LR模型时,我们首先需要输入一组拥有不同特征(feature)的训练数据,并对每个训练数据事先判断其类别(target)。将这样一组数据输入后,模型将会通过算法“训练”自己,拟合出数据中feature与target之间的联系。完成训练后,我们就可以输入一个预测样本,模型将通过拟合出的关系,判断该样本的feature应当对应于哪一个target,并返回分属于不同target的概率。这就完成了一次完整的LR分类。

策略思路

将选股问题转化为分类问题,预期表现优于大盘的分为正类,低于大盘的分为负类,使用LR模型计算每支股票属于正类的概率。选出属于正类的概率最高的30支股票购入,平均分配资金,每月调仓。

策略细节

1) 分类(target)

我们采用沪深300指数作为基准,研究其中个股收益超越该指数收益率的概率。以每个月为观察周期,当某支股票在整个周期内的收益率超过沪深300指数,我们就将它的target记为1(正类),否则为0(负类);

2) 特征(feature)

Feature是用来表达数据不同维度特征的量,在股票市场里,因子无疑是作为数据特征的最合适的变量。这里我们参考了东方证券发布于2015年6月26日的研究报告《单因子有效性检验》,选择了十个研报中检验为与收益率相关性最强的因子,用来刻画每一个数据(每一支股票)的不同维度的特征。因子列表如下:

因子名

简称

总市值

TMV

流通市值

FMV

22日涨跌幅

STOCKZF22

均线偏离度

STOCKPJCJ5/60

22日换手率

HSL22

营业收入同比增速(单季)

SALESGROWRATE1

净资产/总市值

BP

净利润同比增速(单季)

PROFITGROWRATE1

营业收入/总市值

SP

营业收入同比增速TTM

SALESGROWRATE

3) 极值与标准化处理

使用LR算法对数据质量有一定要求,我们首先要做的工作是数据处理。

a) 极值。极值是指偏离大部分样本群体的值,少数极值的存在就可能极大的扭曲数据分析的结果,因此去极值是必要的。这里我们采用中位数去极值法,公式表达如下:

其中Di表示第i个观察值,Dm表示每一个特征变量的中位数。Dmad为每一个观察值与中位数的偏离量的中位数。

b) 标准化

在使用不同因子数据时,必须将其标准化(即映射到[0,1]区间内),否则所有组合将毫无意义,因为每一个因子的单位都是不同的。这里的标准化方式为:

即以0位均值,1位标准差的正态标准化。

策略实现

1) Logistic选股

交易标的:股票

调仓周期:每月

回测时间:2012.01.01~2017.01.01

回测时长:5年

收益曲线

收益归因

业绩分析

回测显示,在五年的回测期内,我们的策略表现良好,取得了31.8%的年化收益率,跑赢沪深300与中证500两个指数。但是也存在回测过大,波动率过高的问题。下面我们将加入回撤控制进行检验。

2) Logistic选股,全时间段回撤控制

交易标的:股票

调仓周期:每月

回测时间:2012.01.01~2017.01.01

回测时长:5年

回撤控制:20%

收益曲线

收益归因

业绩分析

加入全时段的回撤控制后,相较于策略(1),收益率伴随回撤、波动率大幅下滑,夏普率上升,策略表现更加稳健。不过值得注意的是,在2015年下半年的熊市中,投资组合的持仓量降为0,即彻底退出股市,虽然这一定程度上躲开了股市大跌可能带来的损失,但也放弃了之后的潜在收益。为了避免这种情况,我们将回撤控制更改为月度,即控制每月回撤不超过一定阈值。

3) Logistic选股,月度回撤控制

交易标的:股票

调仓周期:每月

回撤控制:每月最高20%

回测时间:2012.01.01~2017.01.01

回测时长:5年

收益曲线

收益归因

 

业绩分析

相比于策略(2),策略(3)的收益率、回撤率、波动率都有所上升,夏普率略优于策略(2),相差不大。二者最大的差别在于,策略(3)采用每月控制回撤,每个月都是一个新的开始,在股灾平仓后,下个月仍将参与投资,仍然是资本市场的参与者。而策略(2)在平仓后不再开仓。使用哪种控制方式,应当取决于对策略的信心以及对市场大势的判断。

小结

LR是用机器学习技术处理分类问题的经典方法,将其应用在选股策略上是一个有趣的尝试。从回测结果上看,LR选股策略是行之有效的。值得注意的是,虽然LR模型在机器学习的方法中属于比较简单也比较成熟的模型,但是仍然有很多不同的参数可以设置、调整,本文未多做探索,直接使用了默认设置。此外,因子的选取对模型的预测效果至关重要,在挑选因子的过程中,除了关注因子与收益直接的相关性之外,还应该考量因子彼此直接的相关性,选取本身相关性较低的因子组合,有利于提升模型的稳定性。最后,LR模型只是给出了因子组合与跑赢大盘之间的定量关系,而这样的关系其背后的逻辑是很难合理的解释的,也因此可能无法保证未来选股结果的可靠性与稳定性。

相关课程推荐

三个月教你从零入门人工智能!!| 深度学习精华实践课程:

点击“阅读原文”开启新姿势

机器学习初探:Logistic选股模型实证相关推荐

  1. logistic回归模型python_【机器学习速成宝典】模型篇03逻辑斯谛回归【Logistic回归】(Python版)...

    目录 一元线性回归.多元线性回归.Logistic回归.广义线性回归.非线性回归的关系 什么是极大似然估计 逻辑斯谛回归(Logistic回归) 多类分类Logistic回归 Python代码(skl ...

  2. 请你介绍下Logistic回归模型?

    请你介绍下Logistic回归模型? 逻辑回归(Logistic Regression)是机器学习中的一种分类模型(注意,不是回归模型,虽然叫logistic Regression),由于算法的简单和 ...

  3. 如何用R语言在机器学习中建立集成模型?

    来源:拓端数据部落 本文约2400字,建议阅读5分钟 本文向您介绍集成建模的基础知识.另外,为了向您提供有关集合建模的实践经验,我们将使用R对hackathon问题进行集成. 1.什么是集成? 通常, ...

  4. 短小精悍-机器学习核心概念、模型、基础知识点简明手册-免费分享

    该手册只有130页,整理了几乎所有关机机器学习的概念.模型.基础知识点,它将帮助读者快速回顾关于机器学习相关的核心知识点和重要公式.模型.概念.涉及概率模型.处理离散数据的生成模型.高斯模型.贝叶斯模 ...

  5. AWS机器学习初探(1):Comprehend - 自然语言处理服务

    AWS机器学习初探(1):Comprehend - 自然语言处理服务 1. Comprehend 服务简介 1.1 功能 Amazon Comprehend 服务利用自然语言处理(NLP)来分析文本. ...

  6. 【机器学习】Logistic Regression逻辑回归原理与java实现

    [机器学习]Logistic Regression逻辑回归原理与java实现 1.基于概率的机器学习算法 2.逻辑回归算法原理 2.1.分离超平面 2.2.阈值函数 2.3.样本概率 2.4.损失函数 ...

  7. 什么是多因子量化选股模型?

    量化投资中经常听到的"多因子模型"是个什么鬼?因子是影响因素的简称,或简单理解成指标.我们都知道股票收益受到多重因素的影响,比如宏观.行业.流动性.公司基本面.交易情绪等等.所谓& ...

  8. 基于支持向量机的量化选股模型

    要求开发一个基于支持向量机技术的多因子量化投资模型,以近五年沪深300成分股的交易与财务数据为样本,结合大数据相关技术进行数据清洗,整理,存储,并构建投资策略与回测框架,输出量化投资模型的结果,为投资 ...

  9. 机器学习中训练的模型,通俗理解

    概率统计(建模.学习) 很多新手在初学机器学习/深度学习中,会产生这样的疑问?为什么要训练模型,模型是什么,如何训练- 本人刚开始接触时也产生过类似地疑问,现在为大家排解这些疑问. 1.机器学习中大概 ...

  10. 机器学习:Logistic回归处理用气象数据预测森林火灾的数据挖掘方法

    文章目录 线性模型与回归 最小二乘与参数求解 1.一维数据: 2.多维数据 最大似然估计 Logistic回归 基本介绍 基于Logistic回归和Sigmoid函数的分类 基于最优化方法的最佳回归系 ...

最新文章

  1. trunk中继链路,以太网通道
  2. Android---Android 屏幕尺寸与密度
  3. 33.文件与 IO.rs
  4. 测试GPU的材质填充率
  5. Java 调用EXE
  6. 汇编 cmp_汇编复习
  7. 制图折断线_CAD制图初学入门之CAD标注时必须要区分的两个概念
  8. VLFeat在matlab中的使用
  9. Spark Architecture
  10. 微信小程序/js上传图片值腾讯云cos
  11. java代码实现PDF转DOC文档
  12. python人脸融合_使用 python 进行 面部合成
  13. java 图层,图层Layers的介绍
  14. 华尔街日报评亚洲10大商界人物 王建宙等上榜
  15. 斐波那契数列python编程_fibonacci数列-斐波那契数列-python编程
  16. 大二学生基于Html+Css+javascript的网页制作——动漫设计公司响应式网站模板 (10个页面)
  17. 电脑编程和计算机编程有什么区别,机器人编程与电脑编程有何区别?官方专家为你详细解说!...
  18. tinymce上传图片php,图片文件上传
  19. 为什么要开发问卷调查APP?
  20. 137、易燃固体的火灾危险性

热门文章

  1. 面试了一个 35+ 岁的大佬,一言难尽......
  2. 领导叫我要好好带新人。。。
  3. SpringBoot2.x炫酷吊炸天前后端分离的后台管理系统实例
  4. 如何设计一个本地缓存,涨姿势了!
  5. 不知道这十项Linux常识,就别说自己玩过Linux!
  6. 小程序发布,你方了么?
  7. 5个导致主线程卡顿较鲜为人知的元凶
  8. python函数可以改变哪种数据类型的实参_表达式1+2*3.140的结果类型是():_学小易找答案...
  9. redis scan 效率太慢_阿里云的redis规范
  10. 学习日记12、list集合中根据某个字段进行去重复操作