目前设想的——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)相关度也还好。
——从大类资产配置的角度,长期向上的资产,相关度越低,则越能在不降低收益率的基础上,有效降低波动。
重新整合代码目录:
这是投资组合理论,是投资之基础。
从量化学习的角度,除了python基础之外,最应该熟悉的是掌握一两款回测框架。
当然,如果有兴趣,自己实现一个回测框架——之前我花不少时间,在打磨自己的回测引擎。——这个好处是你知道底层框架的设计细节,对于你调试策略,理解逻辑很有帮助。
从实战的角度,选择成熟的框架就好。
回测框架与实盘框架,我建议是分开的。——回测是验证你的思路,求方便、省事,效率高。而实盘是真金白银,求稳定,可靠。
二者有一定冲突的,都按实盘的标准来,你的策略很复杂,而且你搞不清楚是策略没写好,还是策略本身就不行。所以,分开来。
从回测的角度,Quantlab5.0(计划中),会引入多个回测框架,包含但不限于:bt, backtesting.py, pybroker或backtrader, qlib等。
每个框架各有所长,比如bt特别适合资产配置、轮动策略,而backtesting.py适合单标的择时(backtrader的单标的版本,但策略和指标比backtrader直观和易用),pybroker支持机器学习,尤其是WFA股东训练。
数据方面,专注指数(ETF),对于回测而言,它们都是时间序列,迁移起来是非常容易的。——一开始不必在数据上花费太多时间。
你运行task.py会得到如下结果:
另外,运行动量策略,会得到如下结果:
一些思考
机器学习应用于投资,主要是多因子策略,监督学习有一个“天然”的问题,它需要label,比如“未来N天的收益率”。——那么这就意味着,这个策略必须是N天为调仓周期。
这会带来一个问题,那如果在N天内,市场发生了“重大变化”呢?
传统技术指标量化,就是每天判断指标情况,发生异动就进行调整,比如通道突存了,均线交叉了等等。
这可能也是当下机器学习受限在金融投资应用的一个原因吧。
其余还是因为金融数据本身“低信噪比”。——要么不拟合,要么过似合。——以及历史能够多大程度上代表未来。
这也是金融很好玩的地方,没有圣杯,否则大家买一个专栏,就都学会了。
持续一起学习吧。
吾日三省吾身
很多讲内容创作、写作类的专栏、书籍都会告诉我们,做内容,做产品不能自嗨,一定要满足用户需求。
你要关心用户想看什么。——这个点无比正确。
但仔细想来,可操作性也不强。或者说变成了一种误导——追热点。
用户想凑热闹,你就帮忙凑热闹,对于自己和用户都没有真正的价值。
昨天看到一篇文章,关于“能不能写自己”。——他的角度特别好,写自己会不会算是“自嗨”,自说自话,不是用户想看的,
其实,未必。
如果你只是记录自己的碎碎念,一个情绪宣泄,那着实没用。
但如果你记录自己的思考、成长、经验、教训,那种这样的内容更加真实,可信。
在投资领域,为什么大家喜欢看实盘,好或者不好,真实感很重要。
之前有一个兄弟,从100万开始,七年做到500万,然后到德国生活。
他的内容没有什么宏大叙事,甚至没有所谓的方法论。就是记录自己一路走来的心路历程,使用的App,如何记账,如何省钱,以及一些自由之后的生活点滴。——也获得一众高质量的粉丝。
其实,这个时代,信息过载,真实且有用很重要。
你学会一件事情,做成一件有价值的事情,然后帮忙有同样需求的人开始、做成这件事情。——这可能是社群的意义和价值吧。
——我一直的探索量化投资,写代码,尝试AI赋能量化,然后把过程、结果都分享给大家,学无止境,就是这样。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103231
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!