经过这段时间的思考与构思,一个基于基金与指数的"AI量化投资平台”的思路基本成型。
主动型基金,以长期持有“固收+”组合为准,期望不低于10%的长期年化收益。被动型基金,以定投低估值的优质指数型基金(宽基+优质行业型、策略型基金),期望不低于12%的年化收益。
另外以分析指数为主,以场内ETF或场外联接基金为标的,以统计学、机器学习技术为工具,挑战不低于年化20%的投资收益。
之前过于强调回测,认为策略就是回测拿到结果,事实上这是错的。这个过程有点像“凑”数,对于投资过程没有实质的认知提升与帮助。投资是科学与艺术的结合体,更应该拆开来看,不要试图去建造一个“黑盒子“。
所以,一个可以辅助我们投资分析,提升投资效率的自动化平台构架就成为基础工具。
由于是投资研究,对于界面与可视化是有要求的。之前也做过分析,在thinter,wxpython与pyQT5之间,我们强烈推wxPython。它的功能比thinter全,但易用性相当,pyQT5功能强大,但是使用上不够pythonic,更像是一个C++版本的外挂。
一、数据加载之后,做指标计算,然后可视化。
二、时间序列分析。
三、因子分析。
四、策略构建与回测。
五、策略改进。
今天说说wxPython的基本使用情况。
wx.Frame是GUI程序里容器的概念,有菜单,有工具栏,任务栏等。
在窗体上,需要确定控件排布规则,自动对齐的控件有两个方向的BoxSizer。水平对齐:
#创建水平boxsizer,并设置为平铺到整个窗口 self.boxH = wx.BoxSizer(wx.HORIZONTAL) self.SetSizer(self.boxH)
主窗体中间,我们需要放置一个多Tabs,在wxPython里有一个控件叫Notebook。
self.tabs = wx.Notebook(self) self.boxH.Add(self.tabs,-1, wx.ALL | wx.EXPAND) self.tabs.AddPage(PageTimeSeries(self.tabs),'时间序列分析')
notebook里的控件可以使用wx.Panel作为容器。
import wx class PageTimeSeries(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent)
多个时间序列,最基础的可视化,到年化收益,风险指标,相关性,年度收益的分析。
涉及多个指数,可以看出指数随时间变化的趋势,历史风险收益情况等。
现在可以开始做时间序列分析,我们使用的库是statsmodels。
statsmodels是一个Python软件包,为scipy提供了补充,以进行统计计算,包括描述性统计以及统计模型的估计和推断。
比较scikit-learn来看,statsmodels更关注统计推断,提供不确定估计和参数p-value。相反的,scikit-learn注重预测。其实是统计学与机器学习是两个不同的方向。
明天继续。
(公众号: 七年实现财富自由(ailabx),思想者,行动派;用数字说基金,用基金做投资组合,践行财富自由之路)