原創(chuàng)文章第499篇,專注“AI量化投資、個人成長與財富自由"。
AI量化實(shí)驗(yàn)室
今天我們升級Quantlab:
代碼已經(jīng)發(fā)布:
1、引入大模型LLM作為因子挖掘的框架之一(基于KIMI,LangGraph)。
2、整合zvt作為A股數(shù)據(jù)源。
01 AlphaGPT整合到Quantlab中
主流程基于LangGraph已經(jīng)走通:
from concurrent.futures import ThreadPoolExecutor
from langchain_community.tools.file_management import MoveFileTool
from langchain_core.messages import HumanMessage
from langchain_core.utils.function_calling import convert_to_openai_function
from langchain_openai import ChatOpenAI
from langgraph.graph import Graph, END
from agents.factor_gpt import FactorGPTAgent
from agents.eval_gpt import EvalGPTAgent
import os
# 這里配置自己的KIMI_KEY,可以持久化在系統(tǒng)用戶變量里。
KEY = ''
if 'OPENAI_API_KEY' in os.environ:
KEY = os.environ['OPENAI_API_KEY']
print(KEY)
optional_params = {
"response_format": {"type": "json_object"}
}
model = ChatOpenAI(temperature=0, model='moonshot-v1-8k', openai_api_key=KEY,
base_url="https://api.moonshot.cn/v1", max_retries=1, model_kwargs=optional_params)
workflow = Graph()
workflow.add_node("factor", FactorGPTAgent().run)
workflow.add_node("eval", EvalGPTAgent().run)
workflow.add_edge('factor', 'eval')
workflow.add_edge('eval', END)
workflow.set_entry_point("factor")
chain = workflow.compile()
chain.invoke({})
運(yùn)算結(jié)果如下:
{
"expr": "(-1 * rank((Ts_Rank(correlation(rank(open), rank(volume), 5)) * rank((returns < 0) ? close : open)))",
"desc": "這個因子表達(dá)式首先計算開盤價和成交量的排名的相關(guān)性,然后將這個相關(guān)性與開盤價和收盤價的排名進(jìn)行交互。接著,我們對每日收益是否為負(fù)進(jìn)行判斷,如果為負(fù)則使用收盤價,否則使用開盤價。最后,將這個結(jié)果取負(fù)值并進(jìn)行排名。這個因子可能捕捉了市場開盤和收盤價格行為與成交量之間的某種關(guān)系,以及這種關(guān)系如何受到市場收益的影響。"
}
EvalGPT開始自動計算這個因子表達(dá)式,并評估它的風(fēng)險、收益特性:
開始計算:(-1 * rank((Ts_Rank(correlation(rank(open), rank(volume), 5)) * rank((returns < 0) ? close : open)))
02 整合zvt作為A股數(shù)據(jù)源
客觀講,zvt作為A股數(shù)據(jù)框架還是不錯的,可以節(jié)省不少時間。
多數(shù)的框架,要么就是可以自行導(dǎo)入csv,或者整合一個商用數(shù)據(jù)庫。zvt把免費(fèi)與商用接口都實(shí)現(xiàn)了,而且低門檻就獲取了數(shù)據(jù)。
代碼在如下位置:
一行代碼,獲取A股股票列表:
from zvt.domain import Stock
Stock.record_data(provider="em")
下面這段代碼,可以獲取股票后復(fù)權(quán)日線數(shù)據(jù):
entity_ids = ["stock_sz_000001", "stock_sz_000338", "stock_sh_601318"]
Stock1dHfqKdata.record_data(provider="em", entity_ids=entity_ids, sleeping_time=1)
df = Stock1dHfqKdata.query_data(code='000338', provider='em')
print(df)
包括財務(wù)數(shù)據(jù)都是可以統(tǒng)一下載的(后續(xù)下載完成,可以考慮打包給大家使用)。
這樣我們就可以全市場數(shù)據(jù),包括價量數(shù)據(jù),財務(wù)因子數(shù)據(jù),進(jìn)行選股和擇時量化分析。
差不多1000位星友了,感謝大家支持:
大模型落地&AGI
星球近期目標(biāo):圍繞自媒體內(nèi)容智能創(chuàng)作,包含但不限于:圖文,視頻。從策劃主題,信息收集,內(nèi)容撰寫,自動發(fā)布環(huán)節(jié)。通過大模型Agent的方式來完成。
吾日三省吾身
這兩天聽書,從蘇東坡、陸游到阿加莎.克里斯蒂,挺好。
之前學(xué)習(xí)很多理財、個人成長類、心理類的書籍的感覺就是,仁者見仁。
肯定有用,但看多了,道理就是那么些道理,反復(fù)地說。
其實(shí)多數(shù)都是顯學(xué)。
只是他們說得比較系統(tǒng)罷了。
而傳記類、歷史類的不一樣,它就是“真實(shí)”發(fā)生的,或者人生的一些際遇。
人生裹挾在歷史的洪流中,有時候順?biāo)欤袝r候驚天巨變,誰不是局中人呢?誰又能左右歷史進(jìn)程呢?
時光白駒過隙,歷史的車輪滾滾向前。
我們要做的,無外乎向外探尋世界,而內(nèi)找回自己。如果還能做點(diǎn)對他人有價值的事情,就再好不過了。
只是當(dāng)下,太多人都在忙于生存。