(9-3)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):数据预处理

这篇具有很好参考价值的文章主要介绍了(9-3)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):数据预处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1.6  数据预处理

数据预处理是训练高质量机器学习模型的关键步骤,在这一步需要检查缺失数据并进行特征工程,以将数据转换为适合模型训练的状态。本项目的数据预处理江湾城以下工作:

  1. 添加技术指标:在实际交易中,需要考虑各种信息,例如历史股价、当前持仓股票、技术指标等。本文演示了两个趋势跟踪技术指标:MACD和RSI。
  2. 添加紧急指数:风险厌恶反映了投资者是否选择保留资本,它还在面对不同市场波动水平时影响交易策略。为了在最坏的情况下控制风险,比如2007-2008年的金融危机,FinRL使用了金融紧急指数来衡量极端资产价格波动。

注意:风险厌恶是指个体或投资者对于面临潜在风险时的心理和行为倾向。在金融领域,风险厌恶通常表现为投资者更倾向于选择相对较低的风险投资,即使这可能意味着较低的收益。

1. 技术指标

(1)使用类FeatureEngineer对金融数据进行预处理和特征工程。通过设置参数use_technical_indicator=True,启用了技术指标(如MACD和RSI),为模型提供更多市场趋势和力量的信息。通过user_defined_feature = False禁用了风险紧急指数,表示不考虑极端波动对模型的影响。最后,通过preprocess_data方法对数据进行标准化和处理缺失值等操作,为后续的强化学习模型训练提供准备。这些步骤旨在提高模型的性能和对金融市场行为的理解。

fe = FeatureEngineer(
                    use_technical_indicator=True,
                    use_turbulence=False,
                    user_defined_feature = False)
df = fe.preprocess_data(df)

(2)获取数据框 df 的形状,返回一个表示数据框维度的元组(行数,列数)。

df.shape

上述代码的目的是查看数据经过预处理和特征工程后的规模,即数据框中的行数和列数。通过df.shape,可以确认处理后的数据的规模,确保数据准备步骤没有导致数据维度的意外变化。执行后会输出:

(97524, 17)

(3)通过如下代码显示 DataFrame df 的前几行数据,目的是展示经过预处理和特征工程后的数据的头部,以便查看数据的结构和内容。

df.head()

执行后会输出:文章来源地址https://www.toymoban.com/news/detail-823841.html

# 将协方差矩阵作为状态添加
df = df.sort_values(['date', 'tic'], ignore_index=True)
df.index = df.date.factorize()[0]

cov_list = []  # 存储协方差矩阵
return_list = []  # 存储收益率

# 回看窗口为一年
lookback = 252
for i in range(lookback, len(df.index.unique())):
    # 提取过去一年的数据
    data_lookback = df.loc[i - lookback:i, :]
    price_lookback = data_lookback.pivot_table(index='date', columns='tic', values='close')
    return_lookback = price_lookback.pct_change().dropna()
    return_list.append(return_lookback)

    # 计算协方差矩阵
    covs = return_lookback.cov().values 
    cov_list.append(covs)

# 创建包含协方差矩阵和收益率的数据框
df_cov = pd.DataFrame({'date': df.date.unique()[lookback:], 'cov_list': cov_list, 'return_list': return_list})
df = df.merge(df_cov, on='date')
df = df.sort_values(['date', 'tic']).reset_index(drop=True)

2. 将协方差矩阵添加为状态

在金融建模的背景下,特别是在投资组合优化和风险管理中,协方差矩阵是一个关键的度量标准。它捕捉了投资组合中不同资产之间运动关系的程度,为整体风险和分散化提供了洞察。通过将协方差矩阵添加为状态,模型能能够更全面地理解不同资产之间的相互关系和依赖性。这有助于提高模型对整体市场风险和资产关联性的认识。

(1)如下代码将协方差矩阵作为状态加入数据集,实现了对金融数据的处理。通过对过去一年的股票收益率数据计算协方差矩阵,提取了相应的协方差和收益率信息,并将其添加到数据框中。这有助于模型更全面地理解股票之间的关联性和风险特征,为后续强化学习模型的训练提供更丰富的状态信息。

# 将协方差矩阵作为状态添加
df = df.sort_values(['date', 'tic'], ignore_index=True)
df.index = df.date.factorize()[0]

cov_list = []  # 存储协方差矩阵
return_list = []  # 存储收益率

# 回看窗口为一年
lookback = 252
for i in range(lookback, len(df.index.unique())):
    # 提取过去一年的数据
    data_lookback = df.loc[i - lookback:i, :]
    price_lookback = data_lookback.pivot_table(index='date', columns='tic', values='close')
    return_lookback = price_lookback.pct_change().dropna()
    return_list.append(return_lookback)

    # 计算协方差矩阵
    covs = return_lookback.cov().values 
    cov_list.append(covs)

# 创建包含协方差矩阵和收益率的数据框
df_cov = pd.DataFrame({'date': df.date.unique()[lookback:], 'cov_list': cov_list, 'return_list': return_list})
df = df.merge(df_cov, on='date')
df = df.sort_values(['date', 'tic']).reset_index(drop=True)

(2)通过df.shape获取 DataFrame df 的形状,返回一个表示数据框维度的元组(行数,列数)。

df.shape

上述代码的目的是查看数据框 df 经过协方差矩阵添加后的规模,即数据框中的行数和列数。通过df.shape,你可以确认处理后的数据的规模,确保数据维度的正确性。执行后会输出:

(90468, 19)

(3)通过如下代码显示 DataFrame df 的前几行数据。这行代码的目的是展示经过协方差矩阵添加后的数据的头部,以便查看数据的结构和内容。通过这种方式,你可以快速了解处理后数据的格式,包括日期、股票代码、技术指标、协方差矩阵等信息。这有助于确保数据准备过程的正确性,为后续建模和分析提供良好的基础。

df.head()

执行后会输出:

	date	open	high	low	close	adjcp	volume	tic	day	macd	boll_ub	boll_lb	rsi_30	cci_30	dx_30	close_30_sma	close_60_sma	cov_list	return_list
0	2008-12-31	3.070357	3.133571	3.047857	3.048214	2.602662	607541200	AAPL	2	-0.097446	3.649552	2.895305	42.254771	-80.847207	16.129793	3.243631	3.375887	[[0.001348968986171653, 0.00042841264280825875...	tic AAPL AMGN AXP ...
1	2008-12-31	57.110001	58.220001	57.060001	57.750000	43.587837	6287200	AMGN	2	0.216368	58.947401	56.388599	51.060614	51.895357	10.432018	56.671334	56.044333	[[0.001348968986171653, 0.00042841264280825875...	tic AAPL AMGN AXP ...
2	2008-12-31	17.969999	18.750000	17.910000	18.549999	14.852879	9625600	AXP	2	-1.191668	23.723023	16.106977	42.521170	-74.811722	25.776759	20.030000	22.412000	[[0.001348968986171653, 0.00042841264280825875...	tic AAPL AMGN AXP ...
3	2008-12-31	41.590000	43.049999	41.500000	42.669998	32.005894	5443100	BA	2	-0.391219	42.894634	38.486366	47.290375	157.922391	5.366299	40.432000	43.304500	[[0.001348968986171653, 0.00042841264280825875...	tic AAPL AMGN AXP ...
4	2008-12-31	43.700001	45.099998	43.700001	44.669998	30.416977	6277400	CAT	2	0.979845	45.785565	38.404435	51.073052	98.904653	26.331746	40.266000	39.918333	[[0.001348968986171653, 0.00042841264280825875...	tic AAPL AMGN AXP ...

未完待续

到了这里,关于(9-3)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):数据预处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 量化策略交易软件开发 智能量化机器人 量化高频交易app开发

    美团秋招意向 某量化私募-社会招聘/校园招聘/应届生招聘-C++开发工程师 上海农商行Fintech的Offer到底值不值得?不完全指北 周六加班..-_-(来自dogsbody的怨气,呜呜呜) 【字节跳动】抖音支付实习生| 流程快 8月就20万简历了,还能投递吗焦虑啊 小米正式批 快手秋招今年大动

    2024年02月07日
    浏览(23)
  • Python量化交易策略--双均线策略及代码

            双均线策略是比较经典的策略,股票的价格均线是投资参考的重要指标。均线有快线和慢线之分,当快线向上穿过慢线则是金叉,一般执行买入操作,当快线向下穿过慢线时则形成死叉,一般执行卖出操作。基于这个基本思路,出于兴趣爱好,便使用python复现了这个

    2023年04月11日
    浏览(51)
  • 【python量化交易】qteasy使用教程04 -使用内置交易策略,搭积木式创建复杂交易策略

    @ 目录 使用内置交易策略,组合成复杂策略 开始前的准备工作 本节的目标 多重策略以及策略组合 定义策略组合方式 blender blender 示例 使用四则运算符定义blender表达式 使用逻辑运算符定义blender表达式: blender表达式中还可以包含括号和一些函数: blender 表达式中每个策略可

    2024年04月14日
    浏览(20)
  • ChatGPT生成量化交易策略,真好玩

    OK,还有没有更好玩的对 量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。 源码: 源码: 源码:   源码: 编写期货收益率预测模型的过程可能比较

    2024年02月06日
    浏览(25)
  • 【量化交易01】CTA策略 菲阿里四价+空中花园策略

    CTA策略(Commodity Trading Advisor Strategy),称为商品交易顾问策略,又称管理期货策略(Managed Futures),简单理解——CTA策略是指投资于期货市场的策略,这是与投资于股票市场的投资策略的最大不同。它是指由专业管理人投资于期货市场,利用期货市场上升或者下降的趋势获利

    2024年02月02日
    浏览(26)
  • 量化交易策略的未来:如何融合人工智能与金融

    量化交易策略的未来:如何融合人工智能与金融 量化交易策略已经成为金融市场中最受关注的话题之一。随着大数据、人工智能和机器学习技术的快速发展,量化交易策略的应用范围和深度得到了显著提高。这篇文章将探讨量化交易策略的未来趋势,以及如何将人工智能与金

    2024年02月20日
    浏览(25)
  • 国金QMT量化交易系统的Bug及应对策略

    国金QMT量化交易系统中的 账号成交状态变化主推 deal_callback() , 当账号成交状态有变化时,这个函数被客户端调用。 我的策略是,在handlebar()里面挂单,等待成交,而判断成交的方式是根据系统主推deal_callback()通知。收到系统通知后,经过一系列的计算再次挂单,把成交反向

    2024年02月11日
    浏览(27)
  • 深度强化学习的变道策略:Harmonious Lane Changing via Deep Reinforcement Learning

    偏理论,假设情况不易发生 多智能体强化学习的换道策略,不同的智能体在每一轮学习后交换策略,达到零和博弈。 和谐驾驶仅依赖于单个车辆有限的感知结果来平衡整体和个体效率,奖励机制结合个人效率和整体效率的和谐。 自动驾驶不能过分要求速度性能, 考虑单个车

    2024年01月17日
    浏览(27)
  • 【深度强化学习】Python:OpenAI Gym-CarRacing 自动驾驶 | 提供项目完整代码 | 车道检测功能 | 路径训练功能 | 车辆控制功能

          💭 写在前面: 本篇是关于 OpenAI Gym-CarRacing 自动驾驶项目的博客,面向掌握 Python 并有一定的深度强化学习基础的读者。 GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车在

    2024年02月16日
    浏览(28)
  • 强化学习相关开源项目介绍 | Stable Baselines 3 | SKRL | RL Games | RSL-RL

    如是我闻 :本文将介绍四个与强化学习相关的开源项目:Stable Baselines 3、SKRL和RL Games,以及RSL-RL。 Stable Baselines 3 Stable Baselines 3(SB3)是一个建立在PyTorch之上的强化学习库,旨在提供高质量的实现强化学习算法。SB3是Stable Baselines库的后续版本,后者是基于TensorFlow的。SB3致力

    2024年02月22日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包