三、LLM在股票量化投资中的运用
A. LLM的界说和原理
LLM:Large Language Model(大型言语模型)是一种运用深度学习算法和很多的言语数据来生成人类言语的模型。这些模型能够像人类一样了解和生成言语,并且在许多自然言语处理使命中体现出色,如机器翻译、言语生成、对话系统等。ChatGPT便是一个十分闻名的大型言语模型,具有十分强壮的自然言语生成才能。
大型言语模型(LLM)的原理是依据深度学习的神经网络技术,经过练习模型来学习自然言语的语法、语义和语用等特征,然后完成对自然言语的了解和生成。
具体来说,大型言语模型通常是运用多层神经网络来构建的,其中每一层都包括多个神经元(或节点),经过相邻层之间的权重和偏差参数进行连接。在练习过程中,模型会运用很多的文本数据来自习惯地调整这些参数,以最大程度地减少模型的猜测差错。当练习完成后,模型就能够用于处理各种自然言语处理使命,例如文本生成、言语了解、机器翻译等,比如闻名的ChatGPT技术原理的细节能够参考下图。
主要三步构建一个模型,给他一个奖赏机制,最终强化学习练习
第一步模型是多重transfomer构成的,Transformer 是一种深度学习架构,用于自然言语处理使命,例如言语翻译、文本分类和文本生成。便是这样一个架构你去搭一个出来,然后给他喂数据。
第二步奖赏机制,你要告诉他这个答案的准确率是多少,那个答案的准确率是多少,从高到低哪个能够打一百分哪个只能给60分。
第三步强化学习,经过上面的打分模型与环境进行交互学习到哪些是好的哪些是坏的,然后对模型的参数进行优化的过程。
这些就差不多是ChatGPT的底层原理了。
B.LLM在股票商场中的运用案例剖析
- 1.运用LLM进行股票价格猜测
我挑选的方法是让大言语模型优化我的股票猜测模型,看看LLM是否能在咱们实践的股票价格猜测模型中发挥作用,我先用LSTM做了一个股票价格猜测的模型,很简单大概便是运用Sequential函数创建一个模型,并添加两个LSTM层(别离有128和64个神经元)和一个用于练习的丢失函数(均方差错)。运用compile函数对模型进行编译,指定优化器为Adam,丢失函数为均方差错。运用fit函数练习模型,传递输入数据(x_train)和目标数据(y_train),指定批次巨细为1和迭代次数为1(即只练习一次)。代码如下:
# Build the LSTM model
model = Sequential()
model.add(LSTM(128, return\_sequences=True, input\_shape= (x\_train.shape\[1], 1)))
model.add(LSTM(64, return\_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
# Compile the model
model.compile(optimizer='adam', loss='mean\_squared\_error')
# Train the model
model.fit(x\_train, y\_train, batch\_size=1, epochs=1)
这是开端的代码,咱们用他猜测了咱们A股科大讯飞(002230.XSHE)的股票价格,得到的loss是0.0013,均方根差错(RMSE)为4.982936594544208,得到的成果大概如下图:(黄色的是猜测值,橙色的是实在值)
下面我让大模型帮我优化了这个模型,首先是文心一言指出咱们应该指定学习率和权重阑珊,还有梯度切断,运用恰当的批次巨细,添加迭代次数,所以下面是他给出的优化后的模型
# 构建模型
model = Sequential()
model.add(LSTM(128, return_sequences=True, input_shape= (x_train.shape[1], 1)))
model.add(LSTM(64, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
# 编译模型
model.compile(optimizer=Adam(learning_rate=0.001,rho=0.9,epsilon=1e-08),loss='mean_squared_error')
# 练习模型
model.fit(x_train, y_train, batch_size=10, epochs=10)
咱们用他优化后的模型再次猜测了咱们A股科大讯飞(002230.XSHE)的股票价格,得到的loss是3.6882e-04,均方根差错(RMSE)为2.429336893675433,得到的成果的确好了很多,loss也变小了,RMSE降低了一半左右,得到的图形咱们能够显着看出愈加贴近实在值,如下图:(黄色的是猜测值,橙色的是实在值):
接着咱们用ChatGPT帮咱们优化,ChatGPT给出的优化方向是将批处理巨细(batch_size)设置为一个较大的值,而不是1。运用较大的批次能够进步练习速度并运用硬件资源,一起减少练习过程中的权重更新频率。设置随机种子(Random Seed):在开端练习之前,设置一个随机种子,以确保每次运行时产生相同的随机成果。这样能够使实验具有可重复性,方便调试和比较不同的模型装备。添加早停(Early Stopping):经过监控验证集上的丢失,当模型停止改善时自动停止练习,防止过拟合。能够运用Keras的EarlyStopping回调函数来完成。调整网络结构和参数:依据具体问题和数据集的特色,能够测验调整LSTM层的数量、神经元数量和激活函数,以取得更好的性能。能够测验不同的优化器、学习率和丢失函数,以找到最佳的组合。下面是他给出的优化后的模型
# Set random seed for reproducibility
random.seed(42)
np.random.seed(42)
# Build the LSTM model
model = Sequential()
model.add(LSTM(128, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(LSTM(64, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
# Compile the model
model.compile(optimizer='adam', loss='mean_squared_error')
# Define early stopping criteria
early_stopping = EarlyStopping(monitor='val_loss', patience=5, verbose=1)
# Train the model
model.fit(x_train, y_train, batch_size=32, epochs=100, callbacks=[early_stopping])
咱们用GPT优化后的模型再次猜测了咱们A股科大讯飞(002230.XSHE)的股票价格,得到的loss是2.6396e-04,均方根差错(RMSE)为2.224307939360072,得到的成果比上面两个都好,loss也更小了,RMSE也降低了一点,得到的图形咱们能够显着看出简直彻底掩盖实在值,如下图:(黄色的是猜测值,橙色的是实在值):
总的来看,大言语模型对咱们的股票价格模型的效果都有进步,并且ChatGPT比文心一言愈加大胆提出的优化方面更多更全面,也完成了更好的猜测效果。
- 2.运用LLM进行股票买卖战略优化
我挑选的是根底的海龟买卖战略进行优化,我在聚宽量化买卖平台上克隆了一个海龟买卖战略,并让他回测科大讯飞的股票在2015到现在的体现,体现得一般只有13.66%的年化收益,具体见下图
当然这不是要点,咱们具体还是要看LLM能不能够协助咱们完成战略的优化,咱们先从文心一言开端,文心一言说海龟买卖战略能够依据以下几个方面进行改变:
- 头寸调整:海龟买卖战略能够依据商场动摇率和趋势的改变,经过ATR自习惯头寸,以换取更高的收益风险比,而不是全程追逐高赢利。这种头寸调整方法能够在动摇率高的时候开大仓位,在动摇率低的时候开小仓位。
- 出场战略:海龟买卖战略选用清晰的双重出场条件,即在高点和低点打破通道时买入和卖出。能够考虑添加过滤模块,以过滤掉不必要的买卖信号,进步战略的稳定性。
- 出场战略:原版海龟买卖战略出场逻辑相对简单,能够考虑运用动态出场战略,如运用移动止损和10日高低点极不习惯商场,过于死板且并不理想的特色,选用愈加灵敏的出场战略来进步战略的盈余才能。
- 加仓战略:海龟买卖战略在震荡市中体现不佳,能够选用愈加稳健的加仓战略,如选用金字塔式加仓方法,以添加累计赢利并进步抗动摇才能。
- 参数优化:海龟买卖战略自身的参数较多,影响了普适性。能够选用SF23的趋势模块过滤来改进参数优化问题,以减少优化参数的数量,进步战略的可靠性。
依据他供给的信息我挑选了在出场战略添加过滤模块,运用动态出场战略,选用金字塔式加仓方法这三个方面优化我的战略,并让他依照优化我的挑选优化我的代码模块,最终我进行了再次回测。成果发现并没有进步反而下降了,从本来的13.66%下降到10.72%,具体细节可见下图
最终我用ChatGPT来协助我优化,他给出的主张是
-
运用价格打破出场:经过调查过去一段时间内的最高价,当当前价格打破最高价时,作为买入信号。
-
考虑引进过滤器:结合动摇率目标(如ATR)或其他技术目标,过滤掉非趋势性的价格动摇,以进步出场信号的可靠性。
-
确定头寸巨细:依据风险承受才能和账户资金,确定头寸巨细,通常主张以固定比例(如1%或2%)的资金进行买入。
-
运用价格打破加仓:在已有头寸的情况下,当价格再次打破出场点位时,作为加仓信号。
-
操控加仓规划:为了操控风险,主张在每次加仓时,约束加仓的规划,例如每次加仓固定比例的头寸巨细。
-
运用价格回转离场:经过调查过去一段时间内的最低价,当当前价格低于最低价时,作为离场信号。
-
考虑引进过滤器:结合其他技术目标,如移动平均线穿插等,辅助判断离场点位,并防止过早离场或过度持有。
-
设置固定百分比止损:依据个人风险承受才能,设置一个固定的百分比止损水平。当价格下跌到达止损水平时,当即离场。
-
运用移动止损:依据价格的动摇和趋势,动态调整止损水平。例如,依据移动平均线或动摇率目标等,随着价格的上涨,逐步进步止损水平,以保护赢利。
依据他给出的成果我挑选了加入依据盈余加仓战略,运用价格回转离场战略,运用固定百分比止损战略这三个方面优化海龟买卖战略,并让他依照我的挑选优化我的代码模块,最终我进行了再次回测。成果发现的确有进步不过进步的幅度不大,从本来的13.66%到13.94%,具体细节见下图
四、LLM在股票量化投资中的问题与应战
A. LLM在实践运用中存在的问题
第一点数据质量:大言语模型需求对很多数据进行练习,然而,数据的质量或许存在一定问题,例如数据不完整、数据不一致等问题。言语模型中的先验常识都来自于练习语料,用于练习言语模型的大数据语料库在收集时难免会包括一些过错的信息,这些过错常识都会被学习,存储在模型参数中,相关研究表明模型生成文本时会优先考虑自身参数化的常识,所以更倾向生成过错内容,而具体的生成过程仍是一个黑盒模型,很难逐一剖析过错来源,也就造成生成使命中很多事实过错。
第二点数据隐私:大言语模型在处理数据时需求保护用户的隐私和秘要信息,例如个人身份信息、地址、电话号码等。因此,如何恪守数据隐私法规,确保数据的安全性是一个重要的问题。前段时间某些国家就因为ChatGPT的信息隐私走漏把GPT封了。
第三点硬件约束:大言语模型需求在特定的环境中进行部署和测试,这或许需求一定的技术水平和资源。此外,大言语模型的核算和存储需求或许会十分大,需求强壮的硬件和网络支持。特别是高性能的芯片比如说A100等等。
第四点成见合规:大言语模型在运用时需求恪守相关法律法规和伦理规范。大言语模型或许会在学习过程中吸收并反映数据中的成见,例如性别、种族、宗教信仰等。这些成见或许会导致模型的猜测成果存在不公平性,然后影响用户体会和品牌形象。
B. LLM在股票量化投资中的应战
首先便是LLM的错觉问题,咱们要实践去完成他给出的成果否则或许那只是一个完美的过错答案,并且大部分情况他给出的成果大约90%是正确的,还有10%是需求咱们去修正或者改变了才能用的。其次咱们不得不供认大言语模型真的比咱们任何一个人都懂任何一个范畴,在量化投资范畴咱们应该充沛测验去交融LLM协助咱们完成更大的收益,并且更具体来说上面所说的10%的过错大部分是因为他所供给的版别问题,你只需知道对应的问题修正对应的比如说库的名字,版别等等就能够完成正确的答案。