大模型是一定要拥抱的——这是两个开篇,基本代码和我的思考:
代码发布:AlphaGPT v0.1——基于大模型的智能因子挖掘框架(代码+数据下载)
AlphaGPT v0.1发布后答疑——基于大模型的智能因子挖掘框架(代码)
代码大家可前往星球下载,大模型的编程与传统量化大不相同:
LLM驱动下的智能Agent一定是未来应用进化的方向。
LLM在AI量化里的应用,不会局限于因子挖掘,可以说肯定是全方位的融合,因此,一定不要错过这个技术浪潮。(文末有优惠券)
由于LLM在智能投研上的应用也会很广,而从分析的角度,股票市场的用户是比较多的,咱们星球也会着手考虑A股市场投资应用。
下周会实现几个功能:
1、CodeGPT,根据FactorGPT生成的表达式,进行因子计算。若失败,则返回结果给FactorGPT。
2、因子top 1回测,看投资收益与夏普比,优化建议反馈给FactorGPT。
3、ZVT框架调研。
吾日三省吾身
昨天在书店,读了一本小书——《世界尽头的咖啡馆》。
原本没有特别在意,感觉就是老外的那种演绎的写作风格——原本特别简单几句话,非得写本书。
比如——世界是平的,蓝海战略,免费。。。
这本书和《拿铁因素》有点像,通过一个虚构的故事,把作者想表达的观点融进去。
但观点还是比较值得回味的:你为什么存在(PFE: Purpose for Existing)或者说存在的意义。
说白了,人为什么活着?人生的意义是什么?
之前,很多大佬都探讨过这个话题——人生没有意义,意义是你自己赋予的。
人生就三万多天,如何过好这些天,在不可避免地走向终点的时候,不会觉得白来一趟?
每个人的意义是不一样的,没有人知道,只有你自己去找。
然后去做你自己认为有意义的事情,深入其中,自得其乐,就是如此。
我们一步步或多或少,都活在别人的期望,目光和评价当中。上学,上班,结婚,生子,买房,买车,衣服,旅行。。。
在世俗的标准里,我们也许“挺好”的,甚至活成了别人家的孩子,成为很多人羡慕的对象。但“你满足嘛”?
并不是人心不足蛇吞象,而是——这是你真正想要的生活吗?
我们追求财务自由,自由之后,你会过上你真正想要的生活吗?
真的可以自由地离开工作之后,你会选择做什么呢?或者说,如果有的选,你会做什么呢?——似乎很多人并没有答案,大多都是多陪父母,孩子,周游世界之类的。——这个你全职做一年,可能会早早想重返职场,会怀念那曾经的会议室。
近期文章:
代码发布:AlphaGPT v0.1——基于大模型的智能因子挖掘框架(代码+数据下载)
AlphaGPT v0.1发布后答疑——基于大模型的智能因子挖掘框架(代码)
代码下载地址:
在原创文章第496篇,专注“AI量化投资、个人成长与财富自由”。
昨天咱们发布了AlphaGPT v0.1——利用大模型来自动化生成因子。
由于大模型当下的热度,很多同学表示非常感兴趣,认为这是方向,当然也有部分同学提出“强烈”质疑,觉得LLM根本不成熟,不足以支撑量化投资。
这里我来专门做个回应和答疑。
首先,使用LLM来挖掘因子不是我的原创,而是来自华泰金融工程的研报。研报拆解:大语言模型LLM和多智能体(Multi-Agents)实现量价因子挖掘框架
研发使用三个智能体:factor-gpt, code-gpt, eval-gpt。
我是1v1复现这个研报,目前实现了factor-gpt,兼容KIMI和ChatGPT4的API。
通过few-shot的方式,
{
“expr“: “(-1 * rank(((high – open) / open))) * rank(((low – close) / close))“,
“desc“: “这个因子表达式计算了每日的高低价相对于开盘价和收盘价的变动比例,并取其排名。然后,将这两个排名进行相乘,并取其负值。这个因子可能捕捉到价格在日内波动中相对于开盘和收盘的表现,从而揭示潜在的交易机会。”
}
后续还有第二步,会评价因子是否语法正确,通过code-gpt进行计算,如果不正确,会返回结果给factor-gpt重新生成,下次注意语法以进行改进。如果计算正确,则进行第三步效果评估。
效果评估与gplearn和强化学习的fitness机制类似,可以使用ic、ir或者直接使用回测的夏普比,卡玛比率等指标。
然后把评估结果再反馈给factor-gpt做进一步优化,可以告诉gpt,要降低波动或者提升收益。
就这是研报的基本逻辑,也是下周咱们要实现的重要。
昨天大家的讨论中,最核心的逻辑是说:
GPT通用大模型,没有使用因子表达式构造的数据特别训练过(事实上也没有这样的数据),因此GPT就是“照猫画虎”写了表达式,并没有金融逻辑。
————这个逻辑只对了前一半。确实没有使用所谓因子构建的数据训练过。但gpt本身是一个“合格”的量化分析师,她懂金融术语,然后可以按我们自己“输入”的few-shot案例,包括我们的因子语义,她会进行有效的学习。——我们用的“示例”是world-quant101,大家可以换成自己公司积累的因子库,换成自己的函数集,可以写明这些函数的语义,求全因子的逻辑。——gpt完全学得会!
另外,通过eval-gpt会持续给出修改方向,让factor-gpt去收敛。
对比gplearn,有同学说,gplearn至少输出了我们的金融数据——我想说,你可能对于gplearn原理不明白。gplearn只是有“技巧”的搜索参数空间,fitness大的就保留,所以过拟合是常态,且会搞出很多“不可解释”的因子。——强化学习端对端也没有本质改进,都是“搜索”的方式不一样罢了。
gpt没有去搜索,它按“语义”去构建。然后评估fitness后,根据语义再改进。对于不同的数据集,也许没那么快收敛,但只要有效,就是可解释的,如果不考虑gpt消耗token的成本,你可以“持续”迭代下去。另外有一个最最关键的点,人工经验可以补充进行,告诉gpt如何去优化因子。
当然了,技术讨论,仁者见仁,越碰撞越能启发思考。
但大模型应用于AI量化,我选择拥抱。
AlphaGPT v0.1已经发布——利用大模型来自动化生成因子。
之前的历史文章,写过的Quant 4个阶段:
Quantlab3.0进展,结合Quant4.0的思考:全自动,可解释AI量化是未来
原定计划是进一步深化gplearn和深度强化学习Deepalphagen自动挖因子。DeepAlpha通用因子挖掘:支持GPlearn遗传算法和深度强化学习挖掘因子(代码+数据下载)
但近期大模型的发展,着实令人惊艳,传统gplearn和强化学习,在因子挖掘上,最大的痛点,就是因子不可解释,你也无法掌控它的迭代方向。——或者说,它们本质一样,只是一种更高效的“暴力搜索”因子的方式。
不可解释是一方向,更大的问题是“过拟合”。由于只求相关,不问甚解的方式,加上金融数据的低信噪比,过拟合几乎成为常态。传统做法是往更高频走,去捕抓短暂的有效性;去找更多更高质量的数据集等等。——这个方式,之于普通量化人,没有任何优势。
既然如此,我们不如直接“跨进”Quant4.0,大LLM驱动力为基础。这将是星球下一阶段的重点。
这是绝对的前沿!
研报拆解:大语言模型LLM和多智能体(Multi-Agents)实现量价因子挖掘框架
AlphaGPT v0.1,基础框架我搭建起来了,分成FactrGPT,以few-shot的方式,参考worldquant101按要求生成因子:
要求大模型直接返回它生成的表达式,以及——对于因子的解释说明:
{
“expr“: “(-1 * rank(((high – open) / open))) * rank(((low – close) / close))“,
“desc“: “这个因子表达式计算了每日的高低价相对于开盘价和收盘价的变动比例,并取其排名。然后,将这两个排名进行相乘,并取其负值。这个因子可能捕捉到价格在日内波动中相对于开盘和收盘的表现,从而揭示潜在的交易机会。”
}
核心代码如下:
from langchain_community.adapters.openai import convert_openai_messages def read_file_2_list(filepath): with open(filepath, 'r', encoding='utf-8', errors='ignore') as f: text = f.readlines() return text sample_json = """ { "expr": 生成的因子表达式, "desc": 对该因子表达式的解释说明 } """ from langchain_openai import ChatOpenAI import json as json KIMI_KEY = 'sk-填写你自己的key' # KIMI的KEY class FactorGPTAgent: def __init__(self): self.sources = [x.strip() for x in read_file_2_list('worldquant_101.txt')] optional_params = { "response_format": {"type": "json_object"} } # openai_api_key = KIMI_KEY self.model = ChatOpenAI(temperature=0, openai_api_key=KIMI_KEY, model='moonshot-v1-8k', base_url="https://api.moonshot.cn/v1", max_retries=1, model_kwargs=optional_params) def build_prompt(self): prompt = [] return prompt def run(self): lc_messages = convert_openai_messages(self.build_prompt()) response = self.model.invoke( lc_messages).content print(response) return json.loads(response) if __name__ == '__main__': FactorGPTAgent().run()
下周实现code GPT和eval GPT,可以实现因子自动化计算,评估,调优和回测。
三者跑通之后,星球会再涨价,或者成员突破1000时涨价,二者满足之一:
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103451
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!