ADM-201 dump PMP dumps pdf SSCP exam materials CBAP exam sample questions

使用Q学习算法实现自动交易 – 译学馆
未登陆,请登陆后再发表信息
最新评论 (0)
播放视频

使用Q学习算法实现自动交易

Q Learning for Trading

大家好 我是西拉杰
自动交易机器人
是一种流行的
获得被动收入的方式
基于互联网上的各种可用工具
任何人只需简单操作几下
就可以给自己做一个
在这个视频中
我将解释如何使用所谓的“Q learning”
的强化学习策略
来通过几个数据点
在一个投资组合中同时预测
三支不同股票的价格
如果我们观察金融产业报告
我们会发现股票的交易
绝大部分是自动生成的
并且蕴含在交易执行和优化背后的算法
产出了上百万美元的收益
使那些早在90年代和00年初
就研究机器学习的少数几家公司获利颇丰
这意味着他们已经在这方面
工作了长达二十年之久
远远早于2012年开始的深度学习热潮
实际上 金融行业中的人工智能应用
可能是在所有行业环境中最成熟的
而且 正因为这些公司都资金充足
因此他们可以负担
运行机器学习算法所需的硬件
随着硬件费用的下降
并且随着开源文化成为主流
这些算法也更易获得
我们可以看到这种形式
也开始进入创业公司的领域
通过浏览像neotic AI
这种的公司的首页
为交易者提供一个AI系统
通过自动交易进行回溯测试和每日预测
另一个例子是alpaca.AI
我喜欢这个名字
它创建了一个深度学习引擎
来确定什么是你的成功交易
然后基于你自己的数据
生成一个独特的交易算法
你甚至可以使用滑块调整算法
而无需使用代码
我们有许多在不同程度上
影响价格的数据
比如新闻和谣言 微观因素 宏观因素
经济周期 新的法律
但还是从简单的开始
我们的起始数据集是三个CSV文件
其中每个都包含过去17年中
IBM 微软和高通公司的股票价格
数据集是使用
Alpha Vantage API创建的
该API允许我们访问
实时和历史股票数据
我们想要构建一个
可以从这个数据集中学习的算法
首先我们来考虑一下如何构建这个问题
我们拥有历史数据以及
通过API获取实时数据的访问权
从而使我们的CSV文件加入
不断更新的价格
这是一个以时间作为一个维度的实时环境
然后我们知道要使用强化学习
因为它把时间作为考虑要素
使用强化学习 我们可以
将我们的问题构建为马尔可夫决策
其中包括状态 操作和收益
我们的agent将能够在此环境中执行操作
幸运的是
我们的例子中的操作空间非常简单
对于任何给定的股票
它只能执行三个操作
买入 卖出 或者持有
买入会根据当前股票价格和 我们拥有的
现金数量 购买尽可能多的股票
卖出将卖出股票的所有股份
并将生成的现金加到我们的现金余额中
如果我们购买多种股票
我们会给股票平均分配可支配的现金
持有则什么也不做
在任何给定时间的行动数量是从3^n
其中n是我们投资组合中的股票数量
现在每一个时间点
我们的agent会处在一个状态
我们会从该状态来做出相应的操作
就我们在这个例子中的状态来说
可以考虑为一个包括当前股票价格
我们账户余额
以及我们拥有的股票数量的组合
就比如说
如果我们拥有50股IBM股票
100股微软 20股高通
以及1500美元的余额
我们可以将我们的状态表示为一个数组
其中包含各股的数量和价格
以及我们的总余额
因此这个MDP的状态类别
将包含我们算法可以学习的任何数据
之后我们也可以再加一些
我们从简单的开始
如果我们简单地绘制出
三个时间点中我们有的资本金额
我们会看到前两个收益的构想
不会帮助agent
从每个时间点之间的价值差异中学习
所以我们会从第3个开始
我们定义的这种交换环境
其实包含着多个agent
这意味着还有其他交易者
拥有各自的账户余额和开放限价订单
这都会影响价格
不幸的是 我们没法获取他们数据
所以我们要处理的是部分可观察的
马尔可夫决策
因为它仅部分可见
我们不知道全局是怎样
我们也不知道收益函数
或转换概率是什么样的
如果我们事先知道这两个函数
我们就会使用动态规划算法
来计算最优决策
但因为我们事前不知道它们
我们可以使用另一种基于模型的
强化学习技术
来确定这两个函数
这样做后 我们就能够计算最优决策
因为我们最终会了解
在特定状态采取特定行动的影响会是什么
如果我们不需要
明确地学习这两个函数呢?
如果我们可以知道
从状态到操作的映射呢?
我们可以在不需要构建完整的
环境模型的情况下计算策略
也就是 免模型强化学习
这样计算效率会高得多
所以 让我们从这开始
在所有免模型技术中
“Q learning”是最受欢迎的
在“Q learning”中
我们定义了一个关于s和a的Q函数
这代表了 当我们在s状态下进行操作时
最大的加权未来收益
并从该点自动继续
它也被称为操作值函数
因为它衡量一个操作的价值
我们可以将此函数视为结束一次交易后
能得到的最高帐户余额
在状态s中进行a操作之后
它代表特定状态下某项操作的质量
我们 可能进行操作无非就是
“买入” “卖出”或“持有”
一旦我们有了这个Q函数
那三个都可被评估
然后我们可以选择具有最高Q值的操作
那么我们如何计算这个Q值呢?
我们可以将在s状态下a操作的Q值
表达为下一状态的Q值
这被称为贝尔曼方程式
该方程称某一状态和操作下的
最大未来收益
就是即刻收益加上
下一个状态下的的最大未来收益
贝尔曼方程式好就好在
它让我们通过下一状态的值
来表达给定状态下的值
它从数学层面上定义了状态间的关系
让我们得以估计Q函数
最简单的例子是把Q函数作为一个表格
其中状态作为行 操作作为列
随机初始化Q然后观察初始状态s
s会是一个数组
然后我们迭代计算以下四个步骤
我们选择并执行一项操作
然后观察收益和下一个状态
通过这三个值
我们使用贝尔曼方程来更新我们的q函数
然后把下一状态设作当前状态
我们会在每次交易的for循环中
不断重复这个过程
基于我们给出的模型数据
我们可以在这个图中查看其表现
红线是我们的初始投资
绿线则是2000个回合后的平均值
看起来我们在1000天中
挣得了4000模拟币
但请注意 投资组合价值非常不稳定
这表明我们的agent的不稳定
所以尽管这是相当好的收益
在长期交易中其变化幅度
对我们来说还是太高
更多数据肯定会帮助我们
我们可以为每个股票
添加二元的公司实况消息
也就是积极或消极的推文
我们还可以添加一些公司绩效元数据
比如市场份额 增长率 市值 利润率
诸如此类
所以我们的状态数组会更大
包含更多的值
这意味着我们的状态操作空间会更大
因此 我们在估测Q函数时
会花费指数级更长的时间
然而 存在一种可以估测任何函数的算法
你能猜到是什么吗?
是的 就是神经网络
如果我们使用神经网络去估测Q函数
我们就可以把这种方法视作深度Q学习
当然还有很多其他高级的强化学习技术
比如policy gradients
Actor-Critic以及逆强化学习等
我们都会在以后的视频中讨论
这个视频中需要记住三件事情
部分可见的马尔可夫决策 是一种
我们不知道全局状态是什么样的决策
但是我们可以观察其中一部分
Q表格是一个状态为行 操作为列的表格
它帮助我们决定针对
某一状态下的最优操作
Q学习则是直接决定Q表格的学习
无需学习转移概率或收益函数
感谢收看我的视频
请订阅我的节目
现在我要去找Q表格了 谢谢观看

发表评论

译制信息
视频概述

讲解在自动交易中Q算法的使用

听录译者

收集自网络

翻译译者

Perambula

审核员

审核员YT

视频来源

https://www.youtube.com/watch?v=rRssY6FrTvU

相关推荐