原创文章第573篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。
2024年上半年即将结束,开始准备星球下半年的工作。
目前设想的——Quantlab5.0,之所以升级一个大版本,与4.x有很大不同。
5.0专注策略开发,可能以notebook形式为主,弱化gui界面,甚至少用streamlit。同时弱化策略框架的封装,这样大家一可一眼看明白一个策略如何开发出来,如何运行,如何调优。
——简言之,就是一切围绕可实盘策略驱动开发,开发赋能交易,而非其他。
数据加载方面,使用csv加载,数据很重要,处理也挺耗时,但之于策略开发,并非核心,因此简化+标准化:
对于bt框架而言,就是一次性加载多个symbols的收盘价,形成一个dataframe即可——以下示例,加载沪深300指数、创业板指数收盘价,并给图,计算相关性:
可以看出,大小盘的相关性仍然高达0.73。
@staticmethod def get(symbols: list[str], col='close', start_date='20100101'): dfs = [] for s in symbols: df = CSVDataloader.read_csv(s) if df is not None: dfs.append(df) df_all = pd.concat(dfs, axis=0) if col not in df_all.columns: logger.error('{}列不存在') return None df_close = df_all.pivot_table(values=col, index=df_all.index, columns='symbol') df_close = df_close[start_date:] return df_close
我们可以很容易进行全球大类资产——时间序列的分析:
from datafeed.dataloader import CSVDataloader data = CSVDataloader.get(['000300.SH', #沪深300 '159915.SZ', #创业板 'HSI', #香港恒生 '^NDX',# 纳指100 'GDAXI',#德国DAX '000012.SH',#国债指数 ]) data.dropna(inplace=True) (data.pct_change()+1).cumprod().plot()
可以看出来,纳指100一骑绝尘。
国债和所有资产都是负相关,沪深 和德国,纳指100的相关度很低,与恒生相关度高。德国(欧洲)与美股(纳指100)相关度也还好。
——从大类资产配置的角度,长期向上的资产,相关度越低,则越能在不降低收益率的基础上,有效降低波动。
重新整合代码目录:
代码每周在星球更新,获取地址(已经有1000+同学加入星球):
AI量化实验室——2024量化投资的星辰大海
这是投资组合理论,是投资之基础。
从量化学习的角度,除了python基础之外,最应该熟悉的是掌握一两款回测框架。
当然,如果有兴趣,自己实现一个回测框架——之前我花不少时间,在打磨自己的回测引擎。——这个好处是你知道底层框架的设计细节,对于你调试策略,理解逻辑很有帮助。
从实战的角度,选择成熟的框架就好。
回测框架与实盘框架,我建议是分开的。——回测是验证你的思路,求方便、省事,效率高。而实盘是真金白银,求稳定,可靠。
二者有一定冲突的,都按实盘的标准来,你的策略很复杂,而且你搞不清楚是策略没写好,还是策略本身就不行。所以,分开来。
从回测的角度,Quantlab5.0(计划中),会引入多个回测框架,包含但不限于:bt, backtesting.py, pybroker或backtrader, qlib等。
每个框架各有所长,比如bt特别适合资产配置、轮动策略,而backtesting.py适合单标的择时(backtrader的单标的版本,但策略和指标比backtrader直观和易用),pybroker支持机器学习,尤其是WFA股东训练。
数据方面,专注指数(ETF),对于回测而言,它们都是时间序列,迁移起来是非常容易的。——一开始不必在数据上花费太多时间。
历史文章:
【代码发布】Quantlab-4.3.1发布:lightGBM全球大类资产配置-模型自动调参(代码+数据)
AI量化实验室——2024量化投资的星辰大海