我在星球里收集了大家的意见,就是咱们的“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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!