技术 | 从0开始搭建智能投资顾问(二)

第二部分 用Ploty创建仪表盘

 

将数据迁移到Dash中

与上一部分类似,我们在Github上创建一个repo,其中包括创建最终的Dash仪表盘所需要的文件和代码。

下面是这部分的摘要

Investment Portfolio Python Notebook_Dash_blog_example.ipynb这与第一部分的Jupyter Notebook十分相似,但增加了两个方面的内容,一个是“股票收益比较”用于使用Dash之前的概念验证,另一个是“数据输出”导出csv文件作为Dash仪表盘的数据来源。

Sample stocks acquisition dates_costs.xlsx 这个投资组合文件,用于修改投资组合。

requirements.txt 这里包含所有需要的库,推荐使用anaconda创建虚拟环境。

Mock_Portfolio_dash.py 这是Dash仪表盘的代码,我将在下面进行介绍。

 

使用Dash

如果您已经使用Python 3.6设置了虚拟环境,并安装了必要的库,那么您应该能够使用Dash仪表板的Python文件。

在Jupyter notebook末尾,你能看到下面负责数据输出部分的代码,这部分内容将CSV文件发送到你的本地目录。第一个是生成可视化图表的完整的投资组合数据集,第二个提供了在第一个部分需要的股票的下拉式菜单。

 

 

我将重点介绍Mock Portfolio Python文件的一些关键方面,并分享如何在本地运行仪表板。

 

我们对Python文件进行一步一步的理解,下面是运行这个Dash仪表盘时应该看到的前三个图表的截图。

 

 

在Python文件的开头,导入requirements.txt中所包含的库,然后

 


 

为了实现dash app 我们需要创建两个数据帧对象,tickers和data。tickers用于选择股票的下拉式菜单中,data数据帧是用于所有可视化评估的最终数据集。

我们将整个仪表盘封装在一个目录下,然后在主目录下添加图表组件。py文件中35-72行用于生成“相对回报率比较”图表。包括选择股票的下拉式菜单、开始/结束的日期范围,提交按钮和图表输出。为简洁起见我们先来看py文件三个部分的第一个部分。

 


在下面的75-93行,是仪表盘左下方图表的代码,这张表与第一部分中的图表相同,但用Dash来输出图表的体验会更好。

 

 

下面的第229-252行,创建了一个“相对收益比较”的交互式图表
 

 

第三部分 智能投资顾问

 

摘要

相对于当前分配的ETF的目标分配。

计算每个头寸的股息和基准,用以计算相对于基准的的投资回报。

评估投资组合模型相对于单一基准(这里是S&P500指数)的回报。

 

目标分配

在我们的投资组合模型中,我们希望将50% 的投资分配给VTI,随着价格在投资后发生的变化,在这次移动中我们就需要从中移去50%,在投资组合模型中处理其他的资产也是一样的。出于这样的原因,我们需要监控这一变动。在每一个季度中,我们需要调整我们的资产来回到我们的目标分配。例如 如果VTI增长了50%而VEU下降了25%,我们需要卖出部分VTI并购买更多VEU来回到之前的目标分配,下面是代码的32行到36行:


 

 


 

股东总回报

代码的54行是处理股息的部分,在这里我们收集了每个头寸的股息数据,在计算股息数据时,应该确保只计算头寸收购日期小于或等于Ex-Div日期的股息。


 


 

 

一旦我们在自持有股票的以来的每只股票ex-div数据上创建了符合条件的股息数据帧后,上述代码就可以汇总了每个头寸包括Equiv SP股票列收到的股息总额,这需要比较每个头寸相对于与SP500的投资等值的总收益。


 

总结

机器人顾问采用与我们在本文中所述的类似策略,而智能顾问会自动化所有这些投资组合管理,包括投资组合重新平衡。 但是,您投资的每一美元都取决于他们的费用结构与您运行类似策略的时间。 智能投资顾问还提供节税策略,这篇文章没有涵盖这一方面的内容,但是另一个方面,有助于为您的投资产生额外的回报。 无论哪种方式,我希望这篇文章是对智能投资顾问的一个介绍,并为为整体多元化投资策略提供一个有用的框架。