在原創(chuàng)文章第495篇,專(zhuān)注“AI量化投資、個(gè)人成長(zhǎng)與財(cái)富自由"。
AlphaGPT v0.1已經(jīng)發(fā)布——利用大模型來(lái)自動(dòng)化生成因子。
之前的歷史文章,寫(xiě)過(guò)的Quant 4個(gè)階段:
Quantlab3.0進(jìn)展,結(jié)合Quant4.0的思考:全自動(dòng),可解釋AI量化是未來(lái)
原定計(jì)劃是進(jìn)一步深化gplearn和深度強(qiáng)化學(xué)習(xí)Deepalphagen自動(dòng)挖因子。DeepAlpha通用因子挖掘:支持GPlearn遺傳算法和深度強(qiáng)化學(xué)習(xí)挖掘因子(代碼+數(shù)據(jù)下載)
但近期大模型的發(fā)展,著實(shí)令人驚艷,傳統(tǒng)gplearn和強(qiáng)化學(xué)習(xí),在因子挖掘上,最大的痛點(diǎn),就是因子不可解釋?zhuān)阋矡o(wú)法掌控它的迭代方向?!蛘哒f(shuō),它們本質(zhì)一樣,只是一種更高效的“暴力搜索”因子的方式。
不可解釋是一方向,更大的問(wèn)題是“過(guò)擬合”。由于只求相關(guān),不問(wèn)甚解的方式,加上金融數(shù)據(jù)的低信噪比,過(guò)擬合幾乎成為常態(tài)。傳統(tǒng)做法是往更高頻走,去捕抓短暫的有效性;去找更多更高質(zhì)量的數(shù)據(jù)集等等?!@個(gè)方式,之于普通量化人,沒(méi)有任何優(yōu)勢(shì)。
既然如此,我們不如直接“跨進(jìn)”Quant4.0,大LLM驅(qū)動(dòng)力為基礎(chǔ)。這將是星球下一階段的重點(diǎn)。
這是絕對(duì)的前沿!
研報(bào)拆解:大語(yǔ)言模型LLM和多智能體(Multi-Agents)實(shí)現(xiàn)量?jī)r(jià)因子挖掘框架
AlphaGPT v0.1,基礎(chǔ)框架我搭建起來(lái)了,分成FactrGPT,以few-shot的方式,參考worldquant101按要求生成因子:
要求大模型直接返回它生成的表達(dá)式,以及——對(duì)于因子的解釋說(shuō)明:
{
"expr": "(-1 * rank(((high - open) / open))) * rank(((low - close) / close))",
"desc": "這個(gè)因子表達(dá)式計(jì)算了每日的高低價(jià)相對(duì)于開(kāi)盤(pán)價(jià)和收盤(pán)價(jià)的變動(dòng)比例,并取其排名。然后,將這兩個(gè)排名進(jìn)行相乘,并取其負(fù)值。這個(gè)因子可能捕捉到價(jià)格在日內(nèi)波動(dòng)中相對(duì)于開(kāi)盤(pán)和收盤(pán)的表現(xiàn),從而揭示潛在的交易機(jī)會(huì)。"
}
核心代碼如下:
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": 生成的因子表達(dá)式,
"desc": 對(duì)該因子表達(dá)式的解釋說(shuō)明
}
"""
from langchain_openai import ChatOpenAI
import json as json
KIMI_KEY = 'sk-填寫(xiě)你自己的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()
下周實(shí)現(xiàn)code GPT和eval GPT,可以實(shí)現(xiàn)因子自動(dòng)化計(jì)算,評(píng)估,調(diào)優(yōu)和回測(cè)。
三者跑通之后,星球會(huì)再漲價(jià),或者成員突破1000時(shí)漲價(jià),二者滿(mǎn)足之一:
代碼下載:gplearn分鐘級(jí)因子挖掘(代碼+數(shù)據(jù))
聯(lián)系客服