V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ITrecruit1
V2EX  ›  机器学习

交易中的强化学习

  •  
  •   ITrecruit1 · 349 天前 · 820 次点击
    这是一个创建于 349 天前的主题,其中的信息可能已经有所发展或是发生改变。
    FinTech 社区是 5 万+专注于量化投资 /区块链 /金融科技 /AI 行业的国际招聘社区,欢迎加微信:smilejin689

    加入社区交流!

    官网:www.fintechgl.com
    B 站视频 : https://space.bilibili.com/1426020404
    小红书: https://www.xiaohongshu.com/user/profile/63620ca1000000001f014d66?xhsshare=CopyLink&appuid=63620ca1000000001f014d66&apptime=1681374159
    公众号:FinTech 社区咨询

    什么是强化学习?
    “像人类一样,我们的机器自己学习如何实现成功的策略,从而获得最大的长期回报。这种通过对正确和错误的学习,进行奖惩的范式,被称为强化学习( RL )--谷歌 Deepmind”

    在金融市场上,我们使用强化学习算法的目的,是通过观察交易行为的回报情况,从而学会如何获得最大的回报交易策略。

    如何在交易中应用强化学习?
    在交易领域我们追求的无非是利润最大化。因此强化学习算法应用到交易领域的目的也是,学习最大化长期回报的策略。

    例如,从 2018 年末到 2020 年初,Amazon 的股价几乎持平。正常思维会认为 mean-reverting 策略在这里更有效。

    但从 2020 年初,Amazon 股价回升,出现趋势。如果 2020 年初开始,采用 mean-reverting 策略将导致亏损。从上一年的 mean-reverting 市况来看,大多数交易者在市场开始趋势化时都会退出市场。

    但如果你做多并持有股票,从长远来看这种策略是有益的。在这种情况下,为了将来的长期收益而放弃你当下的回报。

    这种行为类似于 AlphaZero[实现“将死”这个目标,游戏时必须遭受失子的损失]。

    强化学习算法通过从 2017 年和 2018 年 Amazon 股价变动学习到的模型,并且更宏观的考虑“思考”,模型会因此持有 Amazon 的股票,从而在未来获得巨额利润。

    强化学习与传统的机器学习算法有何不同?
    正如在上面的示例中所看到的,我们不必在强化学习算法的每个时间点都提供标签。强化算法首先通过试错学习交易,并在交易结束时计算获利回报。

    然后优化策略,使回报最大化。这与传统的 ML 算法不同,后者需要在每个时间点或按频率添加标签。

    强化学习的组成部分

    强化学习主要有以下部分组成:

    行动:行动就是 RL 算法要解决的问题,对应到交易市场就是买、卖。
    策略:1 、exploration policy:通过随机学习,RL 算法学会要采取的行动。2 、exploitation policy:RL 算法学习过去的经验,并采取行动,从而最大化长期回报。
    状态:增强学习需要有意义的信息,才能采取行动。这里有意义的信息就是状态。例如,你要决定是买入还是卖出微软股票,那怎样的信息才是有用的?可能历史价格数据、基本面数据等等所有这些数据汇总在一起就是需要的状态。
    奖励:奖励可以被认为是希望通过强化系统实现的最终目标。例如,你的目标是建立一个可盈利的交易系统,这时的奖励就是利润。定义奖励函数对于一个强化学习系统是极其重要的,以下指标可用于定义奖励:Profit per tick 、Sharpe Ratio 、Profit per trading
    环境:强化学习系统观察状态的一个“世界”,当 RL 系统要采取行动,环境会执行相关动作后,计算奖励并且进入入下一状态。可以把环境理解为一局象棋比赛或交易微软股票的过程。
    代理:RL 模型的代理是接收输入状态(特征)并且决定要采取的行动。例如 RL 代理把 RSI 和过去 10 天的回报作为输入,然后告诉你是否要继续持有微软股票还是要卖出。下面结合图片简要对代理的工作原理介绍。
    图片: https://uploader.shimo.im/f/lpQFcifST0YOXNCq.gif?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2ODM4OTEzNDAsImZpbGVHVUlEIjoiaDhna1d2d1JoQ0dDV1BZNiIsImlhdCI6MTY4Mzg5MTA0MCwiaXNzIjoidXBsb2FkZXJfYWNjZXNzX3Jlc291cmNlIiwidXNlcklkIjo3NTIxMjcwMH0.BU-OKWEyfQIATtAVJwllXuudbPFT8-lHgx4D52-6E94

    步骤 1:
    状态&行动:假设微软的股票在当日收盘价是 92 美元,基于状态( RSI 和 10 天回报),代理给出买入信号。
    环境:为简单起见,我们说该订单在下一个交易日(即 1 月 27 日)开盘。该订单以 92 美元的价格成交。因此,环境告诉我们,要以 92 美元的价格买入了微软股票。
    奖励:这里不会有任何奖励,因为我们交易还在进行中。
    步骤 2:
    状态&行动:次日微软股票收盘价为 94 美元,这时代理会分析状态并给出卖出的信号。
    环境:将新增一个卖出订单,该订单将平掉多头头寸。
    奖励:代理将记录 2.1%的奖励。

    为让大家更直观的认识强化学习系统,下图是强化系统的一个简要总结。

    图片: https://uploader.shimo.im/f/DSgNvJUc32zUiQqX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2ODM4OTEzNDAsImZpbGVHVUlEIjoiaDhna1d2d1JoQ0dDV1BZNiIsImlhdCI6MTY4Mzg5MTA0MCwiaXNzIjoidXBsb2FkZXJfYWNjZXNzX3Jlc291cmNlIiwidXNlcklkIjo3NTIxMjcwMH0.BU-OKWEyfQIATtAVJwllXuudbPFT8-lHgx4D52-6E94
    Q 表和 Q 学习
    什么是 Q 表和 Q 学习?这两个概念听起来可能有点迷惑,但蕴含的概念是非常简单的。

    在每个交易时刻,RL 代理都需要决定要采取的操作。如果 RL 代理有一张表,告诉它哪一个动作会得到最大的回报?然后简单地选择那个动作。这张表就是 Q 表。

    这里举个 Q 表简单例子,让大家对其有更直观的感受。

    下面的 Q 表行是状态(在本例中是天),操作是列(在本例中是持有和卖出)。此表中的值称为 Q 值。
    上面的 Q 表中,1 月 23 日那天 RL 代理要采取怎样的行动?持有的 Q 值为 0.966 ,则采取“持有”行动,卖出的 Q 值 0.954 ,持有的 Q 值大,因此采取持有。

    如何创建 Q 表?
    让我们通过例子创建一个 Q 表。为了简单起见,让我们以 2021 年 1 月 22 日至 1 月 31 日的价格数据为例。我们已经添加了回报率和累计回报,如下所示。

    上面表格代表你买了某只股票,你已经没有更多的资本。你唯一的两个选择是“持有”或“卖出”。作为第一步,需要创建一个简单的奖励表。

    如果我们决定“持有”,那么我们将在 1 月 31 日之前得不到任何奖励,最后我们将得到 1.09 的奖励。如果我们决定在任何一天出售,那么回报将是截至当天的累计回报。奖励表( R 表)如下所示。如果我们让 RL 模型从奖励表中选择,RL 模型将出售股票并获得 0.95 的奖励(显然这不是我们想要的)。
    预计 1 月 31 日价格将升至 106 美元,涨幅达 9%。因此,你应该把股票持有到那时。我们必须提供这些信息。这样 RL 代理可以做出持有的决定而不是出售。

    我们为了做到这一点,需要创建一个 Q 表。先将奖励表复制到 Q 表中,然后使用 Bellman 公式计算每天行动的奖励。

    Bellman 公式
    图片: https://uploader.shimo.im/f/HNSeI4chHuiQIg04.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2ODM4OTEzNDAsImZpbGVHVUlEIjoiaDhna1d2d1JoQ0dDV1BZNiIsImlhdCI6MTY4Mzg5MTA0MCwiaXNzIjoidXBsb2FkZXJfYWNjZXNzX3Jlc291cmNlIiwidXNlcklkIjo3NTIxMjcwMH0.BU-OKWEyfQIATtAVJwllXuudbPFT8-lHgx4D52-6E94

    在这个方程中,s 是状态,a 是时间 t 的一组动作,ai 是这个动作集中的一个特定动作。R 是奖励表。Q 是 state action 表,但随着我们通过经验对系统了解的加深,它会不断更新。γ是学习率。

    我们将首先从 R 表中,1 月 30 日的“持有”行动的 q 值开始计算。
    1 、计算采取行动的回报:从 R 表可见为 0.
    2 、假设γ=0.98 。第二天,即 1 月 31 日,卖出和持有操作的最大 Q 值为 1.09 。
    3 、根据 Bellman 公式,1 月 30 日的“持有”行动的 Q 值为 0+0.98*( 1.09 )=1.06 。

    以此类推,得到 Q 表如下所示
    这时 RL 模型将选择“持有”动作以使 Q 值最大化。这个更新 Q 表的过程称为 Q 学习。
    这里我们只使用了行动和状态这两个状态变量。但现实中,我们面对的将是巨大的状态空间,因此,建立一个 Q 表既耗时又耗计算资源。

    为了克服这个问题,我们可以使用深度神经网络。 也可称它们为深度 Q 网络( DQN )。

    深度 Q 网络从过去的经验中学习 Q 表,当以状态作为输入时,它们可以为每个行动计算 Q 值。 我们可以选择最大 Q 值采取的行动,从而得到最大的回报。

    小结
    最后你可以构建自己的 RL 系统来对真实市场数据进行回测和实际交易,从而使强化学习在交易领域更好的发展。

    职位:量化研究员 /交易员 /PM (期权 /期货 /股票 /Crypto 等方向,高中低频都可)
    公司介绍:70+家对冲基金
    关键词:量化策略研究、实盘管理
    地点:沪 /京 /深 /杭 /新 /美 /远程
    推荐奖:RMB 3000-30000 元
    薪资:RMB 40-800 万+奖金
    工作职责:
    1.发掘金融市场运行的客观规律,形成投资策略、验证交易策略并实盘,具体涉及交易想法的策略化、数据处理、策略历史回测、实盘交易等
    2. 对量化投资策略的表现进行跟踪、分析、评估和改进
    任职要求:
    1.国内外顶级大本科及以上学历,数学、计算机等相关专业毕业; 0-10 年相关工作经验(应届生需具备量化实习经验)
    2.精通 python/C++/C#中至少一门语言;
    3.研究任一领域均可:CTA 、A 股、港股、美股、期权、加密货币,高中低频均可;交易执行算法 ; 深度学习 ;金融场景下的 NLP 研究和应用 ;高频交易 ;波动率预测等

    职位:系统开发 /量化开发 Quant Developer/数据开发 Data Engieer
    推荐奖:rmb 5000-20000 元
    地点:沪 /京 /深 /杭 /新 /美 /远程
    年薪:RMB 40-200 万+
    公司:70+家对冲基金
    关键词:c++, 量化系统开发、回测系统开发、Linux 、数据开发、量化开发、量化实现
    职责描述(以下任一):
    1.负责期货 /期权 /股票 /数字货币等的交易系统的开发、优化和维护
    2.对研究员策略实现过程提供数据和技术支持
    3. 开发数据生产任务,对原始数据进行采集、检查、清洗、加工
    任职要求:
    国内外知名院校本科及以上学历,计算机、软件工程等相关专业,有量化行业经验优先
    具备以下任一相关经验:
    1.熟练掌握 C++/Python/JAVA/C#中的一两种语言,懂 Shell ,熟悉常用的数据结构和算法
    2.熟悉 C++和 Python 开发,理解量化策略,过往具备量化策略代码化经验优先
    3.熟练使用 python 进行数据分析及处理,具备一定 c++能力;
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3286 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:52 · PVG 20:52 · LAX 05:52 · JFK 08:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.