持续行动1期 51/100,“AI技术应用于量化投资研究”。 今天花点时间说说GUI以及序列可视化。 有人说python的GUI功能不强,这个可能指的是内置的thinter框架。wxPython和pyQt基本是可以媲美C#的。当然若说易用性,没有哪个winform框架可以超越C# winform。那真是相当完美,wxPython也带了一个formbuilder,也挺方便的,尤其对于复杂的,控件多的界面。 控件功能的使用相对简单,最复杂当属控件布局、对齐等。 另外是回测结果可视化,本质也是时间序列的分析, 我们选择的框架是bokeh。 01 bokeh python语言可视化的框架很多。 最传统的matplotlib,seaborn属于“静态”绘图,与pandas结合得非常好。 pyecharts, pyG2,pyplotly,bokeh等对于js绘图框架的封装,可以绘出漂亮的动态图。 而且基于网页的特性,可以把多张图融到一起,可以动态查看布局信息。 我选择的框架是bokeh。 qlib里内置的分析框架是plotly,就点类似 xwPython vs pyQt,pyQt很强大,但相对复杂,在基础功能相当的情况下,选择简单的东西。——我们一直都是这个原则——因为之于量化交易,因子和策略才是最重要的。 https://docs./en/latest/ pip install bokeh 就可以安装最新版本,bokeh最新的版本是2.4.3。 导入bokeh.io,可以输出到notebook或者文件。 画出折线图: 可以看出来,使用非常简单,如果你熟悉matlab的话,会觉得比较类似。 02 pandas_bokeh 由于我们的数据大部分在pandas的dataframe,我们主要使用的库是pandas_bokeh。 它构建在bokeh之上,可以使用pandas的dataframe直接绘图,会更加方便。 安装指令:pip install pandas-bokeh 帮助文档:https://patrikhlobil./Pandas-Bokeh/ 导入方式类似: 使用真实的数据看下效果: 代表A股的沪深300指数 vs 代表美股的标普500指数,时间从2007-2022年,跨度15年。 其实A股并不输美股,年化均是7%左右(未包含现金分红),当然A股的波动大。 详细代码如下: import pandas_bokeh 核心代码讲解: pandas_bokeh用plot_grid可以把多个图表组合起来。 每个子图需要设置show_fiture=False。 show_plot=False确保只生成html,而不打开浏览器窗口。 bokeh其实还有非常丰富的功能,支持tabs,各种widgets,但目前量化可视化而言,这些就够用了。 03 wxpython的布局 wxpython的控件布局,使用BoxSizer。 BoxSize可以使用水平、垂直两种模式,类似css里的盒模型。 def layout(self): 说说题外话,关于“延迟满足”。 延迟满足,相对于即时满足。似乎延迟满足是一种正确。但仔细想想底层逻辑不对。 尽管不提倡“人生苦短,及时行乐”。但苦行僧般的日子着实没有必要,中间取一个平衡为宜。那个“棉花糖”实验被证实是不准确的。 我们应该意识到短期、长期的收益的不对称性。 小结一下: 无论是基准分析,还是投资组合回测结果分析,无外乎时间序列,风险收益,指标分析,相关性分析等等。 一图胜千言,可视化作为基础功能,我们提前给它实现一下,对我们后续高效投研有很大帮助。 |
|