融合LLMs进化的基本面因子挖掘统一框架_第1页
融合LLMs进化的基本面因子挖掘统一框架_第2页
融合LLMs进化的基本面因子挖掘统一框架_第3页
融合LLMs进化的基本面因子挖掘统一框架_第4页
融合LLMs进化的基本面因子挖掘统一框架_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

提纲03总结02LLMs

进化结构01基本面因子挖掘框架更新因子挖掘三种范式资料来源:Alpha-GPT:

Human-AI

Interactive

Alpha

Mining

for

Quantitative

Investment,P1:

手动挖掘因子,

依靠研究员主观经验,效率低且成本较高P2:算法挖掘,利用GP,RL等算法自动大量挖掘因子,因子可解释性较差P3:

Huaman-AI交互算法,利用LLMs分析因子,按照人类要求进行因子挖掘,自动批量生成可解释的因子基本面因子挖掘统一框架融入LLMs财务数据(季频)时序,截面

算子PIT算子市值,一致预期等(日频)时序,截面

算子fitnessFactor

Pool线性IC非线性特征重要性随机法枚举式领域知识因子生成因子计算因子验证因子筛选因子进化GP+LLMs资料来源:并非直接使用LLMs生成因子,而是在同一框架中融合LLMs进行基本面因子挖掘,在因子进化时,将因子信息提供给大模型,使其更好的理解因子含义以及规律,生成改进后的因子。因子生成资料来源:随机法:这种方法通过随机方式构造因子结构,主要用于启发式算法中的种群初始化。在生成个体时,我们会限制其结构的复杂度以及量纲的合法性,以确保因子具有简洁性并保持较高的可解释性。枚举法:与之前openfe算法生成因子一致,在因子生成过程中通过设定因子结构的约束条件,如(a+b/c+d),在给定的子空间内进行全局搜索,以期找到局部最优解。领域知识:这种方法依赖于专家的主观经验,通过专业知识构造一系列基本面因子。然后利用启发式算法不断优化这些因子,结合剪枝和基因结构分析等技术,筛选出适应度较高的基因及个体。接着,通过枚举法合成新的因子个体,并从中挑选出表现优异的个体。因子计算两层因子计算结构,自动处理因子量纲,频率,公告期等问题。第一层:原始财务数据之间的计算。包括资产负债表、现金流量表、利润表以及各种财务指标。将现金流量表和利润表等时间段数据统一转换为单季度数据,按照公告期计算TTM/YOY/QOQ等第二层:不同频率因子的结合。在处理不同频率的数据时,首先对低频数据按照信息发布日期进行隐式的频率转换(PIT),将其转换为高频数据,然后再与其他高频数据进行计算。量纲限制:不同量纲之间数据计算设置相应的规则。量纲类型包括,元(营收,净利润等),

无量纲(ROE,PE等),市值(总市值,流动市值等)财务数据(季频)时序,截面

算子PIT算子市值,一致预期等(日频)时序,截面

算子资料来源:因子计算资料来源:算子:包括元素,时序,截面三类算子算子会对应相应的量纲规则m代表基本面数据,v代表常数项,取值为1,2,4,8,12.对于季频因子,常数项单位为季度,取值从一个季度到三年,如果为日频因子,单位为月,时间长度从一个月到一年算子解释量纲要求元素运算符add(m1,m2)m1+m2输入相同量纲,输出不改变量纲sub(m1,

m2)m1-m2输入相同量纲,输出不改变量纲div(m1,m2)m1/m2输入相同量纲,输出无量纲mul(m1,

m2)m1*m2输入为不同量纲,输出为带量纲时间序列运算符ts_mean(m,v)过去v期m的平均值输出不改变量纲ts_std(m,v)过去v期m的标准差输出不改变量纲ts_delay(m,v)m滞后v期输出不改变量纲ts_delta(m,v)m与过去v期的差值输出不改变量纲ts_pct(m,v)m与过去v期的变化率输出无量纲ts_max(m,v)过去v期m的最大值输出不改变量纲ts_min(m,v)过去v期m的最小值输出不改变量纲ts_min_max_diff(m,v)过去v期m的最大值与最小值的差输出不改变量纲yoy

(m)m的同比值输出无量纲qoq(m)m的环比值输出无量纲ttm(m)m的TTM值输出不改变量纲ts_slope

(m,v)过去v期m的斜率输出不改变量纲ts_resi(m,v)过去v期m的残差输出不改变量纲ts_rsquare

(m,v)过去v期m的r2输出无量纲ts_regression_slope

(m1,m2,v)过去v期m1对m2回归的斜率输入相同量纲,输出无量纲ts_regression_resi(m1,m2,v)过去v期m1对m2回归的残差输入相同量纲,输出不改变量纲ts_regression_rsquare

(m1,m2,v)过去v期m1对m2回归的r2输入相同量纲,输出无量纲横截面运算符cs_norm(m)m的横截面标准化输出无量纲cs_minmax(m)m的minmax标准化输出无量纲cs_rank(m)m的横截面排序输出无量纲因子计算Cython+流式计算加速+双层算子:传统groupby+rolling

apply计算因子:

时间复杂度为:O(M*T*N),M为股票数量,T为时间长度,N正比于Rolling的长度,例如计算5000只股票5年的20日PE平均值,大约需要5000*1250*20次运算。流式计算:基于已有结果进行更新。时间复杂度O(M*T),每次更新的时间复杂度为O(1),相比传统方式,效率提升N倍。以ts_regression_slope算子为例,如果使用传统的scipy.stats.linregress函数,对一只股票两个因子间进行1000次T为12的滚动回归,耗时约8.15秒,采用cython+流式计算技术,耗时约0.07秒,效率提升116倍。其中cython带来的提升约为9.6倍,流式计算带来的提升约为12倍。双层算子:对于长表和宽表,分别构建基于pandas和numpy的两套算子,充分利用pandas的灵活性和numpy的高效性,再结合lazy

+

cache,进一步提高因子计算效率。资料来源:双层算子长表宽表Pandas

groupby计算numpy计算不断

resample

极其耗时,初始cache数据resample结果,中间进行惰性计算(Lazilyevaluated)资料来源:惰性计算(Lazily

evaluated):这是一种常用的设计模式,利用装饰器将Python类中的方法转变为属性,通常用于计算量大,频繁调用,且不带参数的方法,这样在实例化的时候只计算一次,并保存到类属性中,以后直接拿来用就行因子进化-遗传规划算法资料来源:Quant

4.0:

Engineering

Quantitative

Investment

with

Automated,

Explainable

and

Knowledge-driven

Artificial

Intelligence,遗传规划GP:

树形表达式结合进化算法对树结构进行交叉变异,子树变异,生成新的子代。本质上是一种前向随机变异过程,进化主要是通过筛选完成。锦标赛法+改进后适应度筛选相关性低的个体,增加种群多样性。因子进化-LLMs进化资料来源:LLMs进化:

大模型分析因子含义以及规律,生成新的因子提示词构建:系统提示词你的任务是对这些因子进行细致的分析,理解其逻辑,目标是在维持因子结构相对简洁的前提""“作为专业的量化分析师,你的专长在于深入分析及优化因子以提升其信息系数(

IC)表现。用户将提供一组因子及其当前的IC指标,每个因子由特定的算子与基础数据构成。下,通过调整算子或者数据来增强因子的有效性,

改进方法可以是:##

算子替换:

例如

add

->

sub,

ts_mean

->

ts_max等##

数据替换:

例如

s_fa_workingcapital

->

s_fa_investcapital;

1

->

2等注意这里我只是举了几个例子,具体如何替换根据你自己的理解进行,可替换的算子和数据参考:

\n""""""改进生成新的因子,

目标是实现IC值的显著提升。请确保给出新的改进因子,不要给出已有因子,在改进过程中注重实效性与因子的可解释性,

避免不必要的复杂度增加。完成优化后,

直接输出最终优化的因子表达式的列表,

给出10

个优化因子,

并将其格式化为JSON,以便于用户直接应用及后续的分析工作,输出格式为:{"优化因子列表"

:[{"因子":"***","改进原因":"***"},......{"因子":"***","改进原因":"***"}]}"""因子进化-LLMs进化资料来源:用户提示词"以下是已知的因子及其IC:{}

\n,

你上次给出的因子:

{}

\n请根据以上信息给出新的改进因子,不能使用已有因子,也不要和上次给出和上次相同的因子,必须给出新的改进因子".format(llm_factor_info,

last_info)其中llm_factor_info为筛选出的表现最好且相关性最高的因子及IC信息,

last_info为LLMs上次输出的结果。输出结果:{'优化因子列表’:

[{'因子':

'ets_max(ets_pct(ediv(eadd(ets_delta(s_qfa_grossprofitmargin,

1),

div(empl_ben_payable,

dq_mv)),

s_qfa_salescashintoor),

2),

1)','改进原因':

'通过使用ets_max和ets_pct算子,增强了因子的敏感性和稳定性,预期能提升IC值。'},{'因子':

'ets_regression_resi(ets_slope(cts_pct(acct_payable,

1),

8),

eadd(esub(esub(ets_delay(div(s_fa_grossmargin,

val_mv),

2),

s_fa_yoynetprofit_deducted),s_fa_deductedprofittoprofit),div(oper_profit,val_mv)),

12)','改进原因':

'通过增加ets_regression_resi算子,提高了因子对数据变化的捕捉能力,预期能提升IC值。'},{'因子':

'ediv(esub(ecs_norm(s_fa_equitytodebt),

ccs_rank(tot_shrhldr_eqy_incl_min_int)),

div(cadd(s_fa_workingcapital,

s_fa_investcapital),

val_mv))','改进原因':

'通过使用ediv和esub算子,优化了因子的结构,预期能提升IC值。'},{'因子':

'ecs_rank(ediv(ets_delta(div(s_fa_deductedprofit,

val_mv),

4),

ecs_minmax(ets_mean(s_qfa_yoygr,

12))))','改进原因':

'通过增加ecs_rank和ediv算子,提高了因子的区分度和稳定性,预期能提升IC值。'},{'因子':

'div(cmul(ets_min_max_diff(s_fa_roe_deducted,

12),

cadd(stm_bs_tot,

net_cash_flows_inv_act)),

val_mv)','改进原因':

'通过使用div和cmul算子,优化了因子的结构,预期能提升IC值。'},{'因子':

'ccs_rank(cmul(ets_regression_rsquare(s_fa_gctogr,

ets_regression_resi(s_fa_yoyocf,

s_qfa_yoysales,

2),

2),

cts_delay(cts_delay(s_fa_ebit,

4),

4)))','改进原因':

'通过增加ccs_rank和cmul算子,提高了因子的区分度和稳定性,预期能提升IC值。'},{'因子':

'ecs_minmax(ets_min(ccs_rank(oper_profit),

2))','改进原因':

'通过使用ecs_minmax和ets_min算子,增强了因子的敏感性和稳定性,预期能提升IC值。'},{'因子':

'ets_slope(ecs_norm(cts_pct(cts_min(undistributed_profit,

1),

1)),

8)','改进原因':

'通过增加ets_slope和ecs_norm算子,提高了因子的区分度和稳定性,预期能提升IC值。'},{'因子':

'ets_max(ecs_norm(ets_min_max_diff(s_fa_taxtoebt,

8)),

4)','改进原因':

'通过使用ets_max和ecs_norm算子,增强了因子的敏感性和稳定性,预期能提升IC值。'},{'因子':

'ets_min(ccs_rank(cts_max(net_cash_flows_fnc_act,

4)),

2)','改进原因':

'通过增加ets_min和ccs_rank算子,提高了因子的区分度和稳定性,预期能提升IC值。’}]}LLMs能够“理解”因子的含义,且每次进化均能给出合理原因因子结果-因子表现ICICIR今年以来IC今年以来IRfactor_zoo_00.04000.43380.04570.0987factor_zoo_10.03570.33520.02630.1154factor_zoo_20.03670.31810.06220.2019factor_zoo_3-0.0482-0.6713-0.06390.0742factor_zoo_40.05960.43460.09410.1735factor_zoo_50.03960.54660.06400.0997factor_zoo_6-0.0499-0.6248-0.05990.1359factor_zoo_70.04440.70370.03340.0492factor_zoo_8-0.0398-0.3476-0.03740.1332factor_zoo_90.08160.67770.15000.1533factor_zoo_100.04510.72690.06470.0571factor_zoo_110.06300.45750.08120.1536资料来源:Factor

Zoo

数据库因子结果-因子表现factorzoo4资料来源:factorzoo6factorzoo11factorzoo9因子结果-因子表现factorzoo4资料来源:factorzoo6factorzoo11factorzoo9因子结果-模型回测收益指标ALPHA累计收益年化收益夏普比率信息比率索提诺比率詹森阿尔法特雷诺比率胜率正收益期数BETA年化波动率跟踪误差下行风险在险价值最大回撤最大回撤形成期最大回撤修复期连续下跌最大幅度R-Square组合68.37%53.65%12.40%0.471.340.320.170.1151.73%4791.0223.33%0.78%2.12%-2.17%-31.53%73147-19.80%0.72业绩基准0.00%-14.72%-4.24%-0.30---0.180.00-0.0649.35%4571.0019.43%0.00%1.97%-1.92%-39.33%523null-12.86%1.00资料来源:

ifind,训练模型:

LightGBM数据集:

17年开始全A数据,3年训练集,1年验证集,

3个月滚动训练因子:factor

zoo 12个因子回测区间:

2021.1

2024.10调仓频率:月初调仓持仓数量:

100只因子结果-模型回测收益指标ALPHA累计收益年化收益夏普比率信息比率索提诺比率詹森阿尔法特雷诺比率胜率正收益期数BETA年化波动率跟踪误差下行风险在险价值最大回撤最大回撤形成期最大回撤修复期连续下跌最大幅度R-Square组合88.83%74.11%16.29%0.551.090.410.200.1555.51%5140.9926.86%1.19%2.28%-2.46%-42.29%24null-37.08%0.51业绩基准0.00%-14.72%-4.24%-0.30---0.180.00-0.0649.35%4571.0019.43%0.00%1.97%-1.92%-39.33%523null-12.86%1.00资料来源:

ifind,训练模型:

LightGBM数据集:

17年开始全A数据,3年训练集,1年验证集,

3个月滚动训练因子:openfe

60个因子回测区间:

2021.1

2024.10调仓频率:月初调仓持仓数量:

100只因子结果-模型回测收益指标ALPHA累计收益年化收益夏普比率信息比率索提诺比率詹森阿尔法特雷诺比率胜率正收益期数BETA年化波动率跟踪误差下行风险在险价值最大回撤最大回撤形成期最大回撤修复期连续下跌最大幅度R-Square组合93.50%78.77%17.13%0.651.510.460.210.1653.78%4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论