Quantlab3.9代码:内置大模型LLM因子挖掘,全A股数据源以及自带GUI界面

Quantlab3.9代码:内置大模型LLM因子挖掘,全A股数据源以及自带GUI界面

图片

AlphaGPT v0.1发布后答疑——基于大模型的智能因子挖掘框架(代码)

代码发布:AlphaGPT v0.1——基于大模型的智能因子挖掘框架(代码+数据下载)

01 下载全市场的数据

数据接口是统一的,一行代码就可以下载A股全市场股票日线从上市以来的所有数据。(我会下载好,以网盘的形式提供给大家,下载直接使用即可)

如果你不想使用使用默认的zvt_home目录,请设置环境变量ZVT_HOME再运行。

图片

大家想自己下载的话,代码在工程的如下位置:

图片

# 下载A股后复权日频数据
def download_astock_hfq_quotes():
    Stock1dHfqKdata.record_data(provider='em')

而且是自动增量更新的:

图片

我使用mongo数据库做过类似的事情,蛮多事情需要处理的。

另外从本地使用的角度,日频的数据使用Sqlite不失为一种选择,可以快速打包上传与分发,同时也支持增量更新(使用csv或者hdf5)增量更新,断点续采与统一管理是比较麻烦的;使用mongo的话,打包给别人需要安装mongo程序与导入。

更多的财务数据,财务报表以及ETF都可以下载。

当然zvt没有支持akshare或者tushare可以自行考虑扩展一下。

02 因子计算

策略的核心或者说基本要素是因子的计算。

咱们Quantlab之前一直使用类似qlib的因子表达式。

数据查询使用query_data,返回dataframe,然后使用因子表达式对时间序列进行计算,这里我们不使用zvt的加载数据,然后加transformer的算子,这个如果要在机器学习多因子的环境下,维护成本太高。

咱们的因子表达式,加载数据,然后给数据打标,就与Quantlab无缝衔接上了。

from pathlib import WindowsPath

import pandas as pd
from datetime import datetime

import requests
from tqdm import tqdm
import abc
# from .expr import calc_expr
from zvt.domain import Stock1dHfqKdata


class Dataloader:

    def __init__(self, symbols, start_date='2010-01-01', end_date=datetime.now().strftime('%Y-%m-%d')):
        self.symbols = symbols
        self.start_date = start_date
        if not end_date or end_date == '':
            end_date = datetime.now().strftime('%-Y%m-%d')
        self.end_date = end_date

    def _load_df(self):
        df = Stock1dHfqKdata.query_data(entity_ids=self.symbols, provider='em', columns=['open', 'close', 'code'])
        return df

    def _reset_index(self, df: pd.DataFrame):
        trade_calendar = list(set(df.index))
        trade_calendar.sort()

        def _ffill_df(sub_df: pd.DataFrame):
            df_new = sub_df.reindex(trade_calendar, method='ffill')
            return df_new

        df = df.groupby('symbol', group_keys=False).apply(lambda sub_df: _ffill_df(sub_df))
        return df

    def load(self, fields=None, names=None):
        df = self._load_df()
        print(df)


if __name__ == '__main__':
    Dataloader(['stock_sz_000338', 'stock_sz_000002']).load()

Quantlab3.9代码:内置大模型LLM因子挖掘,全A股数据源以及自带GUI界面

Quantlab3.8源码发布:整合AlphaGPT大模型自动因子挖掘以及zvt股票数据框架

AI量化实验室——2024量化投资的星辰大海

Quantlab希望做成一个桌面软件的形态,可以下载数据并做量化分析,可以跑策略,可以对接实盘。

比传统的看盘软件更好用更智能,比线上的量化社区安全(代码都给你)。

软件主体架构使用wxpython + streamlit

图片

图片

图片

一些下载数据的任务,软件配置等,使用传统GUI更方便,而与数据呈现,量化分析相关的功能,使用streamlit这样的框架更高效。因些我们把二者结果起来了。

图片

代码已经发布:

图片

请大家前往星球下载:AI量化实验室——2024量化投资的星辰大海

代码都在GUI的目录下:

图片

import wx
from gui.widgets.widget_web import WebPanel
from config import DATA_DIR

def OnAbout(event):
    wx.MessageBox("公众号:ailabx",
                  "关于 AI量化投研平台",
                  wx.OK | wx.ICON_INFORMATION)


def OnExit(win, event):
    win.Close(True)


def make_menubar(win):
    # Make a file menu with Hello and Exit items
    fileMenu = wx.Menu()
    # The "\t..." syntax defines an accelerator key that also triggers
    # the same event
    helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H",
                                "Help string shown in status bar for this menu item")
    fileMenu.AppendSeparator()
    # When using a stock ID we don't need to specify the menu item's
    # label
    exitItem = fileMenu.Append(wx.ID_EXIT, '退出')

    # Now a help menu for the about item
    helpMenu = wx.Menu()
    aboutItem = helpMenu.Append(wx.ID_ABOUT, '本软件')

    menuBar = wx.MenuBar()
    menuBar.Append(fileMenu, "&文件")
    menuBar.Append(helpMenu, "&帮助")

    win.Bind(wx.EVT_MENU, OnAbout, aboutItem)
    win.Bind(wx.EVT_MENU, OnExit, exitItem)
    return menuBar

from .dialog_config import DialogConfig
def tool_config_clicked( event ):
    ico = DATA_DIR.joinpath('images').joinpath('lab.ico')
    icon = wx.Icon(str(ico.resolve()), wx.BITMAP_TYPE_ICO)
    # self.SetIcon(icon)
    dlg = DialogConfig()
    dlg.ShowModal()


class MainFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(MainFrame, self).__init__(*args, **kw)
        self.SetTitle('AI智能量化投研平台')
        # 设置默认大小
        self.SetSize(wx.Size(900, 600))

        ico = DATA_DIR.joinpath('images').joinpath('lab.ico')
        icon = wx.Icon(str(ico.resolve()), wx.BITMAP_TYPE_ICO)
        self.SetIcon(icon)

        # 屏幕居中显示
        self.Centre()
        self.SetMenuBar(make_menubar(self))
        self.tool_main = self.CreateToolBar(wx.TB_HORIZONTAL, wx.ID_ANY)
        tool_png = DATA_DIR.joinpath('images').joinpath('config.png')
        self.tool_config = self.tool_main.AddTool(wx.ID_ANY, u"配置", wx.Bitmap(str(tool_png.resolve()), wx.BITMAP_TYPE_ANY),
                                              wx.NullBitmap, wx.ITEM_NORMAL, wx.EmptyString, wx.EmptyString, None)

        self.tool_main.Realize()
        self.Maximize()

        self.CreateStatusBar()
        self.SetStatusText("欢迎使用AI智能量化投研平台!请关注公众号:ailabx")

        # Connect Events
        self.Bind(wx.EVT_TOOL, tool_config_clicked, id=self.tool_config.GetId())

        # 主窗口notebook
        self.m_notebook = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)

        web = WebPanel(self.m_notebook)
        self.m_notebook.AddPage(web, '时间序列分析', True)
        web.show_url('http://localhost:8501')


        #self.m_notebook.AddPage(PanelBacktest(self.m_notebook), "可视化回测系统", True)

“AI量化实验室”的思考与调价的说明

昨晚大幅度调价,原因来自偶然的事件。

这个偶然的事情,提醒我重新思考星球的价值。

每天写代码,找前沿的思路,确实花了不少心血。

但代码之前很多初学者,确实有门槛,而我们又没有精力“手把手”地教大家,讲基础的python配置,配置的量化概念。

尤其我们最近上了大模型,openai, langchain,agent开发,因子挖掘之类的,对于新手就更加困难了。

所以,这也算一种筛选吧,避免大家加入之后反倒失望,这样不好。

我们要把有限的精力集中起来服务真正需要的人:

1、至少会编程吧,熟悉python和人工智能就很好了。自己能解决多数环境配置,代码调试的问题。

2、投资有基本概念吧,风险收益,对量化有热情而非只想拿一个策略去赚钱。(应该没有这种圣杯吧,如果有,你说它值多少钱吧)

吾日三省吾身

早上听李蕾讲苏东坡,有所悟。

写作者,其实重的不是文笔,而是观点、思想深度。

观点来自于读书,观察,深度思考和批判性思维。

这其实就是认知的体现,而人与人的高低区别,其实就是认知。

古代科举,写命题作文,其实有其道理。

反观当下数理化语数英,很分散,很多时候,在培养劳动力,而不是决策者。

当然,并不需要人人都杀伐决断。

只是说,在人群之中想脱颖而出,提升这种认知非常重要。

认知高手之外化表现,就是写出高水平的文章。

周岭在《认知驱动》里讲,他只写未来几年还有价值的文章,不追热点和所谓十万+,个人深以为然。

写对自己,对他人有价值的文章,不说传世之作,至少过几年自己还满意。

Quantlab3.8源码发布:整合AlphaGPT大模型自动因子挖掘以及zvt股票数据框架

AI量化实验室——2024量化投资的星辰大海

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103442
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注