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