Skip to content

ShenFeilang/QuantaAI

Repository files navigation

基于大语言模型的多Alpha因子智能投资策略

文件架构

├─ all_factors.csv
├─ all_factors_selected.csv                     # 大模型提取的因子文件与筛选后文件
├─ backend_app.py        # fastapi后端
├─ classes.py         # 定义的大模型格式化输出类
├─ config.py         # **涉及隐私,不公开**
├─ extract.py         # 大模型提取文本内容
├─ filter.py         # 根据置信度评分初步进行单因子筛选
├─ fronted_app.py        # 前端
├─ optimization.py        # 权重最优化
├─ prompt_1.py                         # 大模型提取的prompt
├─ prompt_2.py         # 大模型筛选因子的prompt
├─ requirements.txt 
├─ resource          # **包括源数据等内容,这里不公开**
│  ├─ base_alpha_factors.xls
│  ├─ base_factor.xls
│  ├─ base_operator.xls
│  ├─ categories.xlsx
│  ├─ data/*
│  ├─ default.png
│  ├─ En/*
│  ├─ result.png
│  └─ Zh/*
├─ scores.csv
├─ vue_test/*         # vue前端

系统环境

该软件开发环境基于Ubuntu 20.04系统环境,cuda 12.2版本,使用Python 3.11版本开发,具体环境配置情况如下:

  1. 硬件要求:本实验在显卡A800上进行运行与实验;
  2. 软件与工具依赖:本实验除了提取因子任务中的调用智谱模型接口,其他开发全都基于开源工具;
  3. 网络环境:要求运行环境能正常联网即可。

系统概述

系统简介

本智能量化交易系统旨在通过应用先进的AI技术,显著提升交易决策的准确性和速度。系统集成了因子筛选、风险管理以及策略优化等多个模块,确保在多变的市场环境中高效运行。其具有以下关键功能:

  1. 因子筛选:利用AI强大的数据处理与挖掘能力,自动识别和评估与市场表现相关的因子,为决策提供数据支持。
  2. 风险管理:通过用户问卷以及因子组合,优化风险收益比,加强投资安全。
  3. 策略优化:基于历史数据和市场趋势,系统自动调整和优化交易策略,以适应不同的市场条件。 此外,系统具备商业可推广性,能够应用于不同的市场环境和金融资产类别,具有较强的市场潜力。

系统目标

  1. 优化交易决策:通过人工智能和数据分析技术,优化因子筛选过程,优化因子与决策的相关性,进而提升交易决策质量。
  2. 加快会话执行速度:采用部分离线数据,结合高质量因子检验策略以及微调大模型,减少结果产出的延迟,提高执行效率。
  3. 增强风险管理能力:根据用户风险承受能力量表以及因子偏好量表,建立用户画像,结合金融原理与大模型技术,实现不同投资策略推荐。
  4. 优化策略调整:利用AI与最优化技术,自动调整交易策略,适应市场变化,实现持续收益最大化。
  5. 增强系统灵活性:设计可扩展架构,满足多样化投资需求,提升商业可推广性。

架构概述

流程图

image

B/S架构图

image

数据流图

image

技术栈

Vue

通过调研,在前端技术框架的选择上最终选择了Vue框架。Vue是一套渐进式轻量级框架,主要功能是用以构建用户界面。它具有数据双向绑定以及页面组件化的优势。此外它的数据与结构分离也很大程度上降低了耦合度,并且由于其是单页面应用,加载时页面局部刷新可以加快访问速度,提升用户体验。

Gradio

Gradio用于创建和共享机器学习模型的用户界面,使得开发者能够通过简单的 Python 代码创建交互式界面,方便用户与模型进行交互,进行预测和可视化。开发人员只需要几行代码就可以创建一个交互式的预览界面。除此之外,Gradio还可以用于各种类型的模型以及在各种环境中运行。

Xtuner

XTuner 用于优化机器学习模型超参数,是一个高效、灵活且全能的大模型微调工具库。XTuner支持大语言模型 LLM、多模态图文模型 VLM 的预训练及轻量级微调,旨在提供一种高效、简单的方法来调整模型的超参数,从而提高模型性能。XTuner 支持多种优化算法,包括贝叶斯优化、网格搜索和随机搜索等,允许用户根据不同的需求选择最合适的优化策略。

功能模块

本系统根据客户的具体需求,结合各模块的输入输出特性及其所采用的算法程序,精心设计并划分为以下七个功能模块。每个模块不仅承担特定的功能,还能够与其他模块高效协作,以满足客户在量化交易中的各种需求和期望:

  1. 记录咨询调查问卷:收集客户填写的风险承受量表和因子偏好量表数据,为后续的金融咨询提供基础信息;
  2. 金融咨询与会话:提供一个平台,让客户与金融LLM进行交流,除了正常对话之外,还可以通过意图识别,检测用户对绿色金融市场的选股类话题驱动,并进入相应的任务管道;
  3. 筛选有效因子:定期更新和筛选高质量的金融文献,确保咨询过程中使用的信息是最新和最相关的,再利用LLM筛选出有效因子;
  4. 最终因子生成:结合因子偏好量表与历史数据,使用LLM技术进行预测和因子筛选,以确定投资决策的关键因素;
  5. 股票推荐:根据最终确定的因子和客户的风险承受能力,通过最优化算法生成因子权重,并据此选出推荐股票;
  6. 错误处理:设计一套机制来识别和处理在咨询过程中可能出现的错误,确保流程的顺利进行;
  7. 数据处理:对收集到的数据进行整理和分析,以便在咨询过程中提供准确的信息和建议。

image

投资策略算法

遗传算法计算最优因子权重

遗传算法是一种基于自然选择和遗传机制的优化算法,模拟生物进化过程,通过“选择”、“交叉”和“变异”等操作,在解决复杂优化问题时找到局部最优解,并试图探索全局最优解。 在使用遗传算法确定最终因子的权重时,我们核心目的是通过遗传算法优化权重组合,最大化组合的收益率。在此基础上,遗传算法通过模拟自然进化的过程,迭代寻找最优解。

目标函数与约束条件

在因子模型中,最终的目标是构建一个新的因子 ,这个因子是由最终因子的线性组合得到的:

$$F=\omega_1 X_1+\omega_2 X_2+\cdots+\omega_n X_n,$$

其中$X_i$代表第$i$个因子,$\omega_i$ 是第$i$个因子的权重,$n$是最终因子的数量。 最优化问题的目标是最大化组合的预期收益,可以定义为:

$$\begin{aligned} &\max R(F)\\\ &\mathrm{s.t.} -1\leq\omega_i\leq 1,\quad i=1,2,\ldots,n, \end{aligned}$$

其中$R\left(F\right)$是综合因子为$F$时的收益率。

遗传算法的步骤

  • 初始化种群:初始化多个不同的权重组合,每个组合称为一个“个体”,表示为一个向量$ \vec{\omega}=\left(\omega_1,\omega_2,\ldots,\omega_n\right)$,其中$ \omega_i$是因子的权重。最初的种群可以通过随机生成权重组合来创建,每个个体都表示一个可能的解。
  • 适应度函数评估:适应度函数为目标函数$R(F)$,即组合的收益率。适应度值越高,表示该个体的投资组合在历史数据中的表现越好,因此越可能在进化过程中被选择。
  • 选择:基于适应度值,采用“轮盘赌”选择法或“锦标赛选择法”等方式,选择表现较好的个体进入下一代。这些个体有更大的概率遗传给后代。
  • 交叉与变异
    • 交叉:选出的个体通过交叉操作,生成新的个体。交叉是模拟基因重组的过程,使得优秀的特性在后代中传递。
    • 变异:为避免种群过早收敛到局部最优解,随机对部分个体进行变异,即改变某些权重。变异率通常较低,但有助于维护种群的多样性。
  • 迭代与收敛:重复选择、交叉和变异的过程,通过若干代的迭代,种群中的个体逐渐进化,适应度逐步提升。最终收敛到一个最优解,找到收益率最大的因子组合权重。

收敛性

在经过若干代的迭代后,遗传算法将逐渐收敛到一个较优解,即找到最优的因子权重组合,使得组合的收益率最大化。遗传算法具有较强的全局优化能力,可以避免局部最优问题。最终输出的权重组$\vec{\omega}=\left(\omega_1,\omega_2,\ldots,\omega_n\right)$可以用于构建新的因子,并将其应用于投资策略中。在量化系统中,这种方法能够为投资组合提供基于历史数据的最优解。

现代投资组合理论计算

现代投资组合理论(Modern Portfolio Theory, MPT)通过计算有效前沿,可以找到给定风险水平下的最佳组合。

假设投资者是风险厌恶的,通常希望在投资回报和风险之间进行权衡。效用函数可以表示成这样的形式:

$$U=\mathbb{E}\left(R_p\right)-\frac{\lambda}{2}\sigma_P^2,$$

其中

  • $\lambda$是投资者的风险厌恶系数,值越大表明对风险越敏感;
  • $\mathbb{E}\left(R_p\right)$是投资组合的预期回报:
$$\mathbb{E}\left(R_p\right)=\sum_{i=1}^{n}w_i\mathbb{E}\left(R_i\right),$$

其中$w_i$是股票$i$的权重,$\mathbb{E}\left(R_p\right)$是股票$i$的预期回报;

  • $\sigma_P^2$ 是投资组合的方差:
$$\sigma_P^2=\sum_{i=1}^{n}\sum_{j=1}^{n}w_iw_j\sigma_{ij}$$

其中$\sigma_{ij}$股票$i$和股票$j$之间的协方差。

于是可以通过优化组合权重$\vec{w}$最大化效用函数,这可以通过拉格朗日乘数法或SciPy库解决。

操作指南

用户首先进入问卷调查填写页面,需要知悉问卷调查第一部分——风险承受程度的内容。

image

点击“已知悉”后,跳转到“风险承受”问卷的填写页面。每个题目有5个程度,选择且确认无误之后,点击“下一步”。

image

弹出“问卷提交成功”提示框之后,跳转至问卷调查第二部分——因子偏好程度,需要知悉该部分的内容,进入下一页。

image

点击“已知悉”后,跳转到“因子偏好”问卷的填写页面。与第一部分一样,每个题目有5个程度。

image

选择且确认无误之后,点击“完成”。系统将会跳转至会话页面。

image

image

总结

本团队开发了一款智能量化交易系统,旨在通过AI技术提升交易决策的准确性和速度。系统包括因子筛选、风险管理以及策略优化等模块,具备高效的性能和灵活的适用性,以满足不同市场环境和金融资产的需求。通过动态调整和优化策略,该系统能够持续适应市场变化。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages