从零搭建AI量化投资平台

我在星球里收集了大家的意见,就是咱们的“AI量化平台”如何搭建的问题,

综合大家的意见,结合自己的一些思考,暂定如下:

1、带gui界面的私有化安装、部署的平台。

2、自带数据源,可以更新。etf、转债、A股、指数等。

3、传统规则型量化。

4、大类资产配置的绝对型收益策略。

5、AI模型驱动的多因子策略。

gui使用wxpython、streamlit结合使用。一个好的gui可以让大家写自己的策略,看结果更架方便。

数据源准备是一个比较耗时的工作,这个内置脚本来完成。

传统规则型量化,我们本身就开发了“积木式”开式回测引擎。后面要扩展到集成学习,强化学习等策略。

另外就是大类资产配置的绝对型收益策略。

图片

行业ETF情况:

图片

股票、黄金、国债、货币,四大类资产的风险收益情况如下:

图片

股票,年化6%,最大回撤45%;

黄金,年化5%,最大回撤46%; 

国债,年化1.7%, 最大回撤4.6%;

货币,年化2.7%,最大回撤0.4%;

货币基金的夏普比是非常高的。

所以的投资,第一步都应该分析标的的风险收益水平,以及它们之间的相关性。

图片

股票与黄金,货币,债券的相关性都小。

四大类之间的相关性都很小,甚至出现负相关。

这对于我们构建“绝对收益型”投资组合很有帮助。

主界面代码:

import wx
from gui.mainframe import MainFrame
import subprocess

# '--server.port', '5002'
p_restart = subprocess.Popen(['streamlit', 'run', 'app.py'])
if __name__ == '__main__':
    app = wx.App()
    frm = MainFrame(None, title='AI量化投研平台')
    frm.Show()
    app.MainLoop()
    p_restart.kill()

分析界面代码:

from datetime import datetime

import streamlit as st
import pandas as pd
from config import DATA_DIR_HDF5_ETF
import os


def load_etfs():
    with pd.HDFStore(DATA_DIR_HDF5_ETF.resolve()) as store:
        symbols = [k.replace('/', '') for k in store.keys()]
        return symbols


symbols = load_etfs()

st.subheader('资产风险、收益分析')
date_start = st.sidebar.date_input('起始日期:', datetime(2012, 1, 1))
date_start = date_start.strftime('%Y-%m-%d')
date_end = st.sidebar.date_input('结束日期:', datetime.now().date())
date_end = date_end.strftime('%Y-%m-%d')

sel = st.sidebar.multiselect(label='请选择etf', options=symbols, default=symbols[0])

dfs = []
for symbol in sel:
    with pd.HDFStore(DATA_DIR_HDF5_ETF.resolve()) as s:
        df = s[symbol]
    se = df['close'] * df['adj_close']
    se.name = symbol
    dfs.append(se)

df_all = pd.concat(dfs, axis=1)
df_returns = df_all.pct_change()
df_returns = df_returns[df_returns.index >= date_start]
df_returns = df_returns[df_returns.index <= date_end]

df_equity = (df_returns + 1).cumprod()
print(df_equity)
df_equity.dropna(inplace=True)

st.line_chart(df_equity)

col_indicators, col_corr = st.columns(2)
col_indicators.subheader('风险收益指标')

from engine.data_utils import DataUtils

col_indicators.table(DataUtils.calc_indicators(df_returns))

col_corr.subheader('相关系数')
col_corr.table(df_returns.corr())

代码及数据请前往 星球 ——专栏下载。

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

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

相关推荐

发表回复

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