微调ChatGPT打造自己的量化投资利器

ChatGPT给各行各业都带来了极具想象力的变革空间,在金融量化领域也产生了许多新颖的思路。本文介绍在国产基座大模型的基础上进行下游的微调实践,利用ChatGPT自动分析新闻事件中涉及到的事件类型、行业分类、情感极性以及关联的个股,为分析市场涨跌归因以及新闻舆情因子奠定基础。

一、国产基座大模型概况

随着年初Meta的学术研究LLama模型在不经意间被泄露后,国内大模型技术便呈现出爆发增长的势头,并且中文适配上相对于原版更强大,下面简要介绍评测榜单以及微调环境准备。

1.1 中文能力评测榜单

根据opencompass的评测,截止目前(20230727),中文ChatGPT模型中能力相对比较强的有商汤的书生系列模型(InternLM)、百川的Baichuan模型以及清华的ChatGLM系列。

图片[1]-微调ChatGPT打造自己的量化投资利器-JieYingAI捷鹰AI

大模型主要的瓶颈在于显存大小,对于市面上常见的7B以及13B模型,使用支持FP16、FP8、Int8、Int4精度的显卡,基本可以在24GB的显卡中完成Lora微调以及部署,如果使用RTX 6000 Ada 或 L40 等新一代的大显存GPU,则可以使用更大的Batch Size更快的完成微调任务。

1.2 微调步骤

目前Github上有相当多的微调大模型方案,这里我们使用库提供的解决方案快速的完成微调任务。

具体使用方法可参考仓库提供的说明文档:

二、微调金融模型全流程

新闻数据的一个特点就是非结构化,而在量化中我们处理的都是表格型数据,借助ChatGPT强大的语义理解能力,我们可以抽取或分析文本中蕴含的信息,完成原始数据的标准化。

2.1 财经新闻数据的标注

图片[2]-微调ChatGPT打造自己的量化投资利器-JieYingAI捷鹰AI

标注主要分为5个部分:

标注数据消耗相当大的精力,花费了半天时间才标记出360条记录。

2.2 数据集配置

LLaMA-Efficient-Tuning 并不能直接处理上述表格记录,我们首先将其整理出一个json文件:

[
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""沪深股通|绿通科技4月27日获外资买入200.0股。绿通科技获外资买入200.0股。绿通科技最近5个交易日下跌6.46%,陆股通累计净买入600.0股,占流通盘0.00%,区间平均买入价117.59元。",
        "output""事件:个股行情,市场:中国市场,行业:汽车,情感:轻微正面,关联:绿通科技"
    },
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""上海证券:给予中来股份买入评级。05上海证券有限责任公司开文明,丁亚,刘清馨对中来股份进行研究并发布了研究报告《走出困境,破茧再起航》,本报告对中来股份给出买入评级,当前股价为15.14元。",
        "output""事件:个股研报,市场:中国市场,行业:电子,情感:轻微正面,关联:中来股份"
    }
]

将该json文件放到data目录下,同时运行shell命令计算sha1值:sha1sum fin_data_test.json。

然后修改dataset_info.json,增加1条该文件的记录值:

"fin_data": {
    "file_name""fin_data.json",
    "file_sha1""a8a7fe65e0c97424a707df0ba64bcb5198450e88"
  },

至此,训练用的数据便准备完成。

2.3 微调模型

训练时需要指定部分参数:

CUDA_VISIBLE_DEVICES=0 python3 src/train_bash.py 
    --stage sft 
    --model_name_or_path internlm-chat-7b 
    --do_train 
    --dataset fin_data 
    --finetuning_type lora 
    --output_dir sft_checkpoint 
    --overwrite_cache 
    --per_device_train_batch_size 2 
    --gradient_accumulation_steps 2 
    --lr_scheduler_type cosine 
    --logging_steps 10 
    --save_steps 500 
    --learning_rate 5e-5 
    --num_train_epochs 5.0 
    --plot_loss 
    --fp16 
    --prompt_template intern

训练过程中,能够看到损失函数显著的下降:

图片[3]-微调ChatGPT打造自己的量化投资利器-JieYingAI捷鹰AI

训练完成后,便得到了Lora增量模型,后续预测时借助Peft机制将其与原始基座模型合并。

2.4 预测模型

同理,准备一份预测数据fin_data_test,运行如下脚本后便能评估模型的预测结果:

CUDA_VISIBLE_DEVICES=0 python3 src/train_bash.py 
    --stage sft 
    --model_name_or_path internlm-chat-7b 
    --do_predict 
    --dataset fin_data_test 
    --finetuning_type lora 
    --checkpoint_dir sft_checkpoint 
    --output_dir sft_output 
    --per_device_eval_batch_size 4 
    --max_samples 100 
    --predict_with_generate 
    --prompt_template intern

2.5 结果评估

预测数据为:

[
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""潘托:美联储较为鹰派的“转向” 股市将何去何从。一旦宣布暂停或下调利率或恢复量化宽松,股票价格会出现最初的反射性飙升,资产价格无论如何都会很快崩溃,美联储将面临更加艰难的通胀局面。",
        "output""事件:经济数据解读,市场:美国市场,行业:利率,情感:轻微负面,关联:无"
    },
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""新一轮新能源汽车下乡将启,重点解决充电桩“卡脖子”问题。国务院常务会议审议通过关于加快发展先进制造业集群的意见,提出要部署加快推进建设充电基础设施,更好支持新能源汽车下乡和乡村振兴。",
        "output""事件:政策法规发布,市场:中国市场,行业:汽车,情感:一般正面,关联:无"
    },
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""万达电影(002739):行业复苏可期 龙头地位稳固。22 年11 月11 日以来,国务院联防联控机制综合组先后公布“二十条”和“新十条”,防疫政策持续优化,电影行业迎来复苏曙光,据灯塔专业版,12 月11 日全国影院营业率已回至74.2%,观影需求有望持续释放。",
        "output""事件:个股研报,市场:中国市场,行业:传媒,情感:轻微正面,关联:万达电影"
    },
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""国务院联防联控机制:进一步加强新冠病毒感染中西医协同救治工作。各综合医院、专科医院要加强新冠病毒感染相关中成药和中药饮片的采购和储备,特别是针对重症、危重症患者医疗救治的中药品种,要重点储备、保证供应。",
        "output""事件:政策法规发布,市场:中国市场,行业:医药生物,情感:一般正面,关联:无"
    },
    {
        "instruction""请分析上述新闻中涉及到的金融事件,对应市场,关联行业,情感极性以及关联个股,按逗号分隔输出",
        "input""为何说荣盛发展最坏的时候已经过去了?。2021年32家代表房企的销售目标完成率总体明显低于去年,均值为90.1%。荣盛一直被贴着环京的标签,这意味着荣盛发展与环京是一荣俱荣的状态。央行同步下调了中期借贷便利操作和公开市场操作逆回购利率各10个BP。",
        "output""事件:个股研报,市场:中国市场,行业:房地产,情感:轻微正面,关联:荣盛发展"
    }
]

对于上面5条记录,微调模型给出的抽取结果为:

{"label""事件:经济数据解读,市场:美国市场,行业:利率,情感:轻微负面,关联:无""predict""事件:经济数据解读,市场:美国市场,行业:利率,情感:轻微负面,关联:无"}
{"label""事件:政策法规发布,市场:中国市场,行业:汽车,情感:一般正面,关联:无""predict""事件:政策法规发布,市场:中国市场,行业:汽车,情感:轻微正面,关联:无"}
{"label""事件:个股研报,市场:中国市场,行业:传媒,情感:轻微正面,关联:万达电影""predict""事件:个股研报,市场:中国市场,行业:传媒,情感:轻微正面,关联:万达电影"}
{"label""事件:政策法规发布,市场:中国市场,行业:医药生物,情感:一般正面,关联:无""predict""事件:政策法规发布,市场:中国市场,行业:医药生物,情感:一般负面,关联:无"}
{"label""事件:个股研报,市场:中国市场,行业:房地产,情感:轻微正面,关联:荣盛发展""predict""事件:个股研报,市场:中国市场,行业:房地产,情感:轻微正面,关联:荣盛发展"}

可以看出除了第四条新闻情感预测错误外,其他标签基本没有问题,格式也非常规整,ChatGPT真的很强大!

结论

尽管只使用了360条数据进行微调,但在测试集中模型的准确性已经相当可观,相比于Bert模型有质的提升,用好ChatGPT,量化投资大有可为!

欢迎关注我的公众号“量化实战”,原创技术文章第一时间推送。

图片[4]-微调ChatGPT打造自己的量化投资利器-JieYingAI捷鹰AI

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
来说点什么吧!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容