【Transformer实战】预测股票价格:完整教程与代码示例!

本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身
文章有点长(2222字阅读时长:8分),期望您能坚持看完,并有所收获。
免责声明:股票价格预测本质上是不确定的,本教程仅供教育目的使用。这里讨论的模型和方法不应被解释为财务建议或依赖于实际交易决策。虽然时间融合Transformer(TFT)模型提供了置信区间,有助于评估风险,但没有模型能完全考虑到金融市场的不可预测性。在做出投资决策之前,请始终进行彻底的研究,并咨询金融专业人士。

欢迎来到这个系列,了解如何使用时间融合Transformer(TFT)构建一个可解释的模型,用于高频股票价格预测。在这个系列中,我们将深入探讨训练一个不仅能预测股票价格,而且能提供置信区间,使其成为风险评估的宝贵工具的模型的步骤。从数据收集和预处理到模型训练、评估和解释,每篇文章都将指导您完成过程中的关键阶段。
在第一部分中,我们将从基础开始:收集正确的数据并执行探索性数据分析(EDA),以了解高频股票数据中的趋势、模式和潜在陷阱。
背景和动机
股票市场是一个动态且经常不可预测的环境。成功的日内交易者依赖的不仅仅是预测,还有高回报与风险的交易。即使交易者只有50%的时间正确预测股票的方向,如果每次交易的平均回报超过平均风险,他们仍然可以盈利。自动化交易算法帮助交易者从交易中去除情感,使他们能够专注于技术指标和系统性决策。
使用我们的时间融合Transformer模型,目标不是实现完美的预测准确度(在金融市场上是不可能的壮举),而是开发一个可以识别高概率变动的模型,同时评估与每个预测相关的风险。通过专注于精确度并使用置信区间,该模型可以作为做出更明智交易决策的宝贵工具。
数据收集和准备
在这个项目中,我收集了平均每日交易量超过100万股的股票的1分钟日内数据。这个数据集涵盖了从2024年1月1日到2024年7月11日的6个月,总共超过1500只股票。对于每只股票,我收集了标准的OHLCV(开盘、最高、最低、收盘、成交量)数据,捕捉了整个交易日的每个价格变动。为了简化数据处理过程,我将这些数据保存在一个单一的.parquet文件中,以便有效访问和分析。
数据加载和初始清理
在Jupyter Notebook中,我开始导入数据操作、可视化和建模所需的基本库。以下是一些使用中的库的示例:
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from datetime import datetime
然后加载数据集并将日期设置为基于时间的分析的索引:
df = pd.read_parquet("data.parquet")
df.set_index("datetime", inplace=True)
df.sample(10) # 打印数据集中的10个随机行
输出:

为了了解我要处理的数据量,我使用 df.info()
来获取这些信息:

# 这个数据框相当大,包含超过6600万行,使用超过4.5 GB的内存。
为了使其更易于管理,并过滤掉流动性不佳的股票,我使用“股票平均名义成交量”,这是通过将日均成交量乘以平均价格来计算的。我只保留平均名义成交量最高的前100只股票。
def resample_to_daily(group):
resampled_group = group.resample('D').agg({
'open':'first',
'high':'max',
'low':'min',
'close':'last',
'volume':'sum'
}).dropna()
return resampled_group
# 应用重采样函数到每个组
df_daily = df.groupby('symbol').apply(resample_to_daily).reset_index()
df_daily["stock_median_volume"]= df_daily.groupby("symbol")["volume"].transform("median").astype(int)
df_daily["stock_average_price"]= df_daily.groupby("symbol")["close"].transform("mean")
df_daily["stock_average_nominal_volume"]= df_daily["stock_median_volume"]* df_daily["stock_average_price"]
top_100_symbols = df_daily.groupby("symbol")['stock_average_nominal_volume'].median().nlargest(100).index
# 过滤数据框以保留名义成交量最高的前100只股票
df_daily = df_daily[df_daily['symbol'].isin(list(top_100_symbols))]
df = df[df['symbol'].isin(list(top_100_symbols))]
print(f"Number of total one minute bars after resampling: {df.shape[0]}")
print(f"Symbols: {df_daily.symbol.unique()}")
输出:
重采样后总的1分钟K线数量:165367
符号:['AAL' 'AAPL' 'ABBV' 'ABNB' 'ABT' 'ADBE' 'AM' 'AMD' 'AMZN' 'ANET' 'AVGO' ...]
EDA和特征工程 在下一步中,我进行探索性数据分析(EDA),以了解我们过滤后的数据集的关键特征,并开始特征工程以提取相关指标。通过可视化趋势、价格分布和成交量变化,我旨在揭示可能指导我们预测模型的模式和洞察。
这就结束了第一部分。在接下来的部分中,我们将更深入地探讨特征工程,并开始准备我们的数据集以进行模型训练。
如果您对构建用于股票预测的机器学习模型感到兴奋,请关注我,以获取本系列的最新更新!每篇文章将带您了解一个新的阶段,从数据准备到模型评估和策略回测,提供为金融爱好者和有抱负的量化分析师量身定制的实践代码和洞察力!
AI大模型学习路线
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
扫描下方csdn官方合作二维码获取哦!

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案

大模型全套视频教程

200本大模型PDF书籍

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集

大模型产品经理资源合集

大模型项目实战合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
