机器学习:我们能用机器学习来建立投资模型吗

机器学习模型能解决什么投资问题?

利用机器学习解决投资问题的思路,其实和在互联网领域解决推荐、广告问题的思路是一样的,只不过利用的特征完全变了。推荐、广告模型利用的是用户的年龄、性别,物品的类别、价格等特征,投资领域的模型利用的是技术面因子、宏观因子、基本面因子等投资领域的特征。

训练样本和特征如何生成?在训练模型之前,我们首先要解决训练样本如何生成,以及训练所需的特征和标签如何处理的问题。那么,对于一个预测股票涨跌的问题,我们一般使用滑动窗口的形式去生成训练样本。如图 2,它是某只股票半年时间内的价格走势图。在生成训练样本时,我们先选取一个滑动窗口长度,比如 10 个数据点。然后,选择一个滑动起点,从这个起点开始,逐个数据点地向右侧滑动,每滑动一次生成一个训练样本。

image.png

在滑动过程中,每个窗口内的行情数据就作为历史数据,我们可以从中提取出行情相关的特征。而窗口外右侧的第一帧数据,就作为样本的标签。如果是涨的话,就标记该样本是正样本,跌的话就是负样本。当然,如果你希望训练的是一个回归模型,也可以把股票的涨跌幅度这个连续值当作样本标签。直到向右滑动结束,处理完全部的行情数据,我们就完成了样本的生成。特征一般分为两大部分,一是场内行情特征,二是场外特征。其中,场内行情特征指的是利用滑动窗口内部的行情数据,比如股票价格、成交量、换手率等信息处理出来的特征。场外特征是当时当刻跟这只股票相关的所有其他数据,比如这家公司基本面的数据,宏观经济数据等等。

但需要注意,不管什么特征都要遵循一个基本原则,就是一定要用滑动窗口那个所在时间段的数据生成当时当刻的特征,而不能引入窗口之后的任何数据。因为这样就相当于引入了未来信息,属于模型训练中的作弊行为。

什么样的模型结构适合股价预测?
现在,我们的样本和特征已经准备好了,下一步就是选择合适的模型结构进行股价预测了。如果你有一些机器学习的背景知识,我想通过观察行情数据的特点,你一定能够猜到到底什么模型适合股票价格的预测。

因为行情数据天然是序列化的,所以序列模型自然就是最适合处理行情数据的模型。事实上,国内的量化投资公司某方,以及国外的量化巨头 two sigma,都披露过序列模型在它们投资场景下的成功应用。序列模型也曾经在 two sigma 举办的股票预测大赛中大放异彩

对于一个序列模型来说,最重要的是要清楚它的基本结构和输入输出。下面的图 4 就是一个经典的序列模型结构示意图。其中 x1 到 xt+1 就是它的输入,y1 到 yt+1 是它的输出,每个蓝色模块间的 at,就是不同状态间传递的权重信息。

image.png

图4 序列模型的结构示意图那序列模型是如何应用在预测股价这个问题上的呢?其实这个过程是很直观的。输入 xt 其实就代表每一时刻股价相关的特征向量,你可以把我们准备好的多因子特征都放到这个向量中去。比如,向量的第一个维度代表成交量,第二个维度代表上一刻的涨跌幅度,第三个维度代表动量因子,等等。输出 yt 代表的就是我们希望利用 xt 预测出的结果,就是 t 时刻下一刻的股票涨跌结果。

现在你清楚这两点就可以,关于序列模型的具体结构先不用多想。因为成熟的机器学习工具,如 TensorFlow、PyTorch 等,都已经为你封装好了模型结构,你直接调用就可以了。

清楚了输入和输出,下一步就是利用上面介绍的滑动窗口的方法,准备好每个时刻的训练样本,然后调用 TensorFlow 等平台的训练接口,训练好一个序列模型。接下来,我们就可以利用训练好的序列模型进行预测了。在实盘预测中,由于序列模型依赖于当前时刻前 t 个时刻的所有输入特征,所以我们也要准备好 x1 到 xt+1 的输入,然后利用这些输入去预测 yt+1 这个输出,也就是下一刻的股票涨跌。

然后,再根据预测结果来决定当前的投资行为,比如买入或卖出。这就是利用序列模型预测股票的全过程。在实际操作中,当然有大量细节工作需要准备,比如特征的选取,样本的处理,预估相关服务的搭建,等等。此外,模型结构的选择也对预测结果有关键性的影响,比如经典的序列模型就包括 RNN、LSTM、GRU 等等。

机器学习模型的局限性
虽然机器学习模型已经在投资领域取得了不小的成功,但我们要清楚的是,机器学习也不是解决投资问题的“银弹”。在实际应用中,机器学习模型,特别是深度学习模型还是存在着一定的局限性。这里,我结合专业团队的一些经验总结,列出了三点主要的局限性,供你参考。

  • 复杂模型容易产生严重的过拟合现象。
  • 由于深度学习的黑盒特征,在模型效果变差时,我们很难给出有效的解释。
  • 和推荐系统数据相比,金融数据里的噪声更大,很多数据点都是杂乱的随机波动。而且,埋藏在杂乱数据下的潜在规律也在随时变化,这让深度学习模型学习到稳定数据模式的难度变大,且模型的有效期更短。这三点局限性,不仅会困扰散户投资者,而且也让一线的量化投资团队相当头疼。

为了尽量规避这三点局限性,专业的量化团队会在模型结构优化、数据清洗、模型实时更新等多个方向上进行改进。我们可以在技术上学习这些做法,但同时也要牢记:作为散户,我们的时间、精力和资源都是有限的,一定要把有限的时间用在解决一个规模较小的问题上,这样才有可能在一个点上击败专业投资者。

此文章为7月Day25学习笔记,内容来源于极客时间《程序员的个人财富课 》,强烈推荐该课程



喜欢的朋友记得点赞、收藏、关注哦!!!

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

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

相关文章

ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力

新版本发布 ClkLog在上线近1年后,获得了客户的一致肯定与好评,并收到了不少客户对功能需求的反馈。根据客户的反馈,我们在今年三季度对ClkLog的版本进行了重新的规划与调整,简化了原有的版本类型,方便客户进行选择。 与…

【Java设计模式】16-26章

行为型模式: 第16章 12模板方法模式(Template) 16.1 豆浆制作问题 16.2 模板方法模式基本介绍 16.3 模板方法模式原理类图 16.4 模板方法模式解决豆浆制作问题 package com.atguigu.template;//抽象类,表示豆浆 public abstract class SoyaMilk {//模板…

上市公司环境信息披露质量评分数据王婉菁版(2008-2023年)噪声光污染辐射废水减排等治理

数据来源基础数据来源于上市公司年报、社会责任报告、环境报告以及证监会和统计局。时间跨度2008-2023区域跨度企业及行业层面 核心解释变量:环境信息披露质量,是由上市公司环境管理、负债、业绩于治理、披露载体等各项信息披露质量评分加总。 被解释变…

Llama 3.2 Vision Molmo:多模态开源生态系统基础

编者按: 视觉功能的融入对模型能力和推理方式的影响如何?当我们需要一个既能看懂图像、又能生成文本的 AI 助手时,是否只能依赖于 GPT-4V 这样的闭源解决方案? 我们今天为大家分享的这篇文章,作者的核心观点是&#xf…

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…

Windows的MySQL开机自动启动问题

标题 问题描述 问题描述 在Windows系统中,我设置好了MySQL服务为自动启动,但在开机后发现MySQL服务任没有自动运行。我有点苦恼,每次连接MySQL,都要进入计算机管理,手动打开。 解决方法: 1.前提安装好MySQ…

私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?

私有化视频平台EasyCVR视频汇聚平台兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 有用户反馈,项目现场使用RTMP协议接入EasyCVR平台,但是视频却不…

Python小白学习教程从入门到入坑------第二十三课 封装(语法进阶)

面向对象的三大特征:封装、继承、多态 一、封装 1.1 何为封装 封装:在Python中指的是隐藏对象中一些不希望被外部所访问到的属性或者方法。将复杂的信息、流程给包起来,内部处理,让使用者只需要通过简单的操作步骤,…

Rust 力扣 - 643. 子数组最大平均数 I

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的最大和即可&#xff0c;遍历过程中刷新最大值 结果为窗口长度为k的最大和 除以 k 题解代码 impl Solution {pub fn find_max_average(nums: Vec<…

Vscode使用launch.json进行传参调试代码

目录 1 操作2 后记 1 操作 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","…

Fooocus图像生成软件本地部署教程:在Windows上快速上手AI创作

文章目录 前言1. 本地部署Fooocus图像生成软件1.1 安装方式1.2 功能介绍 2. 公网远程访问Fooocus3. 固定Fooocus公网地址 前言 本篇文章将介绍如何在本地Windows11电脑部署开源AI生图软件Fooocus&#xff0c;并结合Cpolar内网穿透工具轻松实现公网环境远程访问与使用。 Foooc…

#渗透测试#SRC漏洞挖掘#自动化脚本的编写01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

python 使用进程池并发执行 SQL 语句

这段代码使用了 Python 的 multiprocessing 模块来实现真正的并行处理&#xff0c;绕过 Python 的全局解释器锁&#xff08;GIL&#xff09;限制&#xff0c;从而在多核 CPU 上并发执行多个 SQL 语句。 from pyhive import hive import multiprocessing# 建立连接 conn hive.…

SpringBoot+VUE2完成WebSocket聊天(数据入库)

下载依赖 <!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- MybatisPlus --><dependency><groupId>com.ba…

电子电气架构 --- 车载诊断的快速入门

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

继承的内容

封装&#xff1a; 1.在类中&#xff0c;把数据和方法放在一起&#xff0c;只展示成员函数&#xff0c;不展示定义的数据为私有。 2.一个类型放到另一个类型里面&#xff0c;通过typedef成员函数调整&#xff0c;封装另一个全新的类型。相当于是一个包装。 继承&#xff1a; st…

设计模式之结构型模式---装饰器模式

目录 1.概述2.类图3.应用场景及优缺点3.1 应用场景3.2 优缺点3.2.1 优点3.2.2 缺点 4.实现4.1 案例类图4.2 代码实现4.2.1 定义抽象构建角色4.2.2 定义具体构建角色4.2.3 定义抽象装饰器角色4.2.4 定义具体装饰角色4.2.5 装饰器模式的使用 1.概述 装饰器模式是指在不改变现有对…

接口测试(十一)jmeter——断言

一、jmeter断言 添加【响应断言】 添加断言 运行后&#xff0c;在【察看结果树】中可得到&#xff0c;响应结果与断言不一致&#xff0c;就会红色标记

vue-i18n国际化多国语言i18n国际语言代码对照表

uniapp是自带有i18n这个插件 需要自己去给每一个需要国际化的字符去手动配置key&#xff0c;所以如果是已经完成的项目可能工作量就稍微有点大了 第一步&#xff1a; 语言命名是有规范的不能乱取名&#xff0c;具体可以参考国际语言代码 i18n国际语言代码对照表 zh_CN 中文(简体…

GitHub | 发布到GitHub仓库并联文件夹的方式

推送到Github 推送步骤如果你只想更新单个文件&#xff0c;只需在第 4 步中指定该文件的路径即可。可能问题一 效果 推送步骤 更新 GitHub 仓库中的文件通常涉及以下步骤&#xff1a; 克隆仓库&#xff1a; 首先&#xff0c;你需要将 GitHub 上的仓库克隆到本地。使用 git …