可视化技术在任何投资分析中都是一种关键要素。今天公众号为大家介绍一个基于三角形图的Python项目,用于可视化长期投资指标!
摘要
1、我们引入了三角形图,用于可视化长期投资指标。
2、收益三角形非常适合展示大量可能子周期内的策略或资产的表现。受限于持有期长度的敏感分析和开始与结束的日期因此被很容易的呈现出来和可视化。
3、可以使用收益三角形来分析两个资产或策略的成对比较,以便以绝对值表示优异性能,或者可以绘制超出性能指标。
4、最大下降和波动三角形允许研究不同子周期的长期投资风险。
5、通过风险和收益三角形的结合以获得风险调整后的收益三角形。
6、开源的Python代码允许读者为自己的资产或策略生成三角形。
1、用于可视化长期投资指标的三角形
随着数据和计算能力的提高,可视化工具和技术变得越来越重要。在一篇讨论大数据的文章中,Edd Wilder-James在陈述时强调了这一点:
在连接人机之间的鸿沟以有意义的方式调解分析洞察力方面,数据可视化的艺术和实践变得越来越重要。
EddWilder-James《什么是大数据?》
可视化技术是我们分析量化投资策略时的一种关键因素。通常,采用定量资产配置技术的投资者具有相当长的投资期限。然而,散户投资者的平均投资时间可能在5到15年之间。因此,除了长期回测结果外,资产管理人员也对分析不同长度的子周期感兴趣。不幸地是,这样的子时段的数量的迅速增长,可用的数据越多,整个回测周期越长。为此,我们提出了三角形热图,它允许在单个图中可视化大量信息。例如,“纽约时报”(2011年)和Frankfurter Allgemeine Zeitung(2018年)使用相似的三角形图来可视化长期投资收益。我们在几个方面扩展了框架:首先,我们在第6节中提供了一个开源实现,以便于生成图。其次,除了纯收益三角形之外,我们在第4节还考虑中用于比较两种不同策略或资产的三角形。此外,我们在第5节中介绍了风险三角形,即最大下降三角形和波动三角形。在那里,我们还提出了风险调整后的收益三角形的自然延伸。
2、数据和三角图的功能介绍
第6节中Python介绍的实现包含一个函数plt_triangle(),该函数是获取三角形图的主要接口。要运行plt_triangle(),用户需要提供pandas.Series,它包含日期索引的离散百分比收益。如果有价格的pd.DataFrame或pd.Series,可以通过prices.pct_change() * 100轻松获得这种收益。因为可以通过选项设置目标返回频率,所以建议以尽可能高的采样频率为数据系列提供服务。提供了返回序列和目标频率后,使用pd.Series.resample()对数据进行下采样。然后聚合返回,并为每个可能的子窗口计算年化收益。
为了便于说明,我们将研究来自Kenneth R. French的数据,在分析中,我们将研究因子收益(价值,规模和动量),并假设我们的假想投资者可以获得多头头寸但不能卖空。因此,我们计算因子返回的代理为:
被表示从数据库获得的原始长短因子收益。市场收益被这个公式计算:
使用Python包pandas-datareader,可以轻松加载本文中使用的样本数据。在下面的代码中,我们将动量因子加入到三个经典的Fama-French因子中,并计算本文中使用的四个不同因子收益序列(市值,价值,规模和动量)。
3、收益三角形
让我们假设有一个百分比收益的向量
且我们对更低的频率感兴趣。不失一般性这种更低频率有N个不相交的间隔和
对于1≤n≤N表示这些间隔中的每一个的索引集可以获得收益间隔n的百分比收益值(对于1≤n≤N)。这个收益值是对于收益间隔n,然后可以被获得形如:(对于对于1≤n≤N)
并且可以在对角线上的返回三角形中找到,如索引Xn,n对应于矩阵中的位置。为了解释收益三角形的功能,我们在1999年1月到2019年3月之间生成了一个市场投资组合,如大约20年的数据。我们选择年度目标频率,三角形如图1所示。在第一上对角线中,收益值对应于目标频率的两个周期的长度的间隔。这意味着收益三角形的第一个上对角线上的条目可以获得为,对于
我们通过应用平方根来标准化,使得三角形中的每个条目被标准化为目标频率的一个间隔的长度。通常,收益三角形的条目定义为,对于
索引集由
给出。图1给出了收益三角形的第一个例子。要生成绘图,只需将第6节的代码复制粘贴到.py文件中。选择模块名称并将其用作文件名,如scalable_triangle_utils.py然后导入该功能plt_triangle。为了获得图1中的图,我们称之为:
图1:Fama—French市场投资组合的收益(上)三角形(年度,1999年1月至2019年3月)
在图1中,我们添加了一些注释来进一步解释三角图的条目。这个被突出表示的7.5%值的条目表明了:如果一个投资于2006年初投入市场并在2015年底后十年后出售,则可获得平均年收益。一般来说,可视化的图表中,行代表购买年份,列表示销售资产或策略。因此,在图1的主对角线上所有条目对应于一年的保持期,并且在第一个上对角线上,所有条目对应于两年的保持期等,依此类推。这意味着通过向右上角移动(如,进一步向右和/或进一步向顶部),投资期限是增加的。当然,为了更容易定位,引入一些对角线标记会有很大帮助。这些阶梯形式的标记可以通过可选输入mark_periods进行更改。对于年度重新采样频率,我们可以通过设置将所有持有期间标记为五年的倍数mark_periods= 5。这在图2完成,其中我们看到用5,10,15和20注释的阶梯。突出显示的对角线包含在1999年和2019年之间的研究样本期内的所有可能的10年投资期。
图2:Fama-French市场投资组合的收益三角形(每年,1999年1月至2019年3月)
图2中可以通过以下代码获得:
▍3.1 收益三角形的选项和变化
这个plt_triangle()功能允许用户自定义其收益三角形图。例如,通过annot = True | False可以确定是否应该在热图的单元格中显示数字。变量vmin和vmax可用于标准化colourmap。如果应该直接比较几个竞争策略的收益三角形并且人们想要确保颜色编码是对齐的,则这尤其有用。另一个选项是triangle_type = upper | lower,它可用于在下三角和上三角之间进行选择作为绘图类型。举个例子,我们提供的下部三角形的对应图2中图3,图3的三角形可以通过以下代码获得:
图3:Fama - French市场投资组合的收益(下)三角形(年度,1999年1月至2019年3月)
请注意,在图3中,投资范围现在变得越大,将会有越多的人移动到三角图中的左下角。本文中的所有公式,尤其是索引,都将参考上三角图。
如果人们对整个投资期的更精细的粒度感兴趣,则可以调整重采样规则。例如,在图4中,在我们考虑了2009年至2019年之间的季度投资期。该图可以通过以下代码获得:
图4:Fama-French市场投资组合的收益三角形(季度,2009年1月至2019年3月)
4、收益三角形的成对比较
许多分析的一个重要组成部分是与基准的比较。举个例子,我们研究了对因子组合价值,规模或动量的长期投资。我们不是分析这些因子素组合的绝对表现,而是将其与市场投资组合的投资进行对比。将展示两种不同的可视化:绝对值表现优异以及卓越绩效指标。
▍4.1 绝对条件中表现优异的收益三角形
让我们假设我们已经计算了感兴趣的资产或策略的收益三角形的条目
并且我们想要将它与我们也获得返回三角形条目
的基准进行比较。然后将优异的回归三角形(绝对值)定义为:
价值,规模和动量与市场的相应比较收益三角形分别如图5,图6,图7所示。代码:
图5:长期Fama-French价值因子投资组合与市场投资组合的表现(年度,1969年1月至2019年3月)
图6:长期Fama-French规模因子投资组合与市场投资组合的表现(年度,1969年1月至2019年3月)
图7:长期Fama-French动量因子投资组合与市场投资组合的表现(年度,1969年1月至2019年3月)
▍4.2 优异指标三角形
关于Fama-French因子组合的好处可以追溯到1926年的数据。如果我们想要分析如此大量的数据,那么优秀的回归三角形变得难以可视化,因为它们有太多的条目。一种可能的替代方案是关注指标而不是增量,如我们不是确定战略的表现优于哪个数量,而是指出它是否优于相应的时期。每当
为正时,优秀指标三角形中的条目为True(绿色),相当于
否则为False(红色)。价值,规模和动量与市场的这些优异指标回归三角形分别如图8,图9,图10所示。代码:
图8,图9,图1为因子投资的长期表现提供了一些有趣的见解。对角阶梯也是对方向有用标记。例如,在图8中可以看出,只要投资期超过20年,无论开始日期如何,对价值因子投资组合的长期投资都会超过市场投资组合。对于动量因子图10,它非常相似,在20世纪30年代初投资时只有一个例外区域。图9规模因子的三角形包含更多红色表现不佳的条目,其中一个条目甚至高于50年投资期限对角线。
图8:长期Fama-French价值因子投资组合与市场投资组合的优异指标(年度,1969年1月至2019年3月)
图9:长期Fama-French规模因子投资组合与市场投资组合的优异指标(年度,1969年1月至2019年3月)
图10:长期Fama-French动量因子投资组合与市场投资组合的优异指标(年度,1969年1月至2019年3月)
5、风险三角形
除了投资策略或资产的表现外,与资产管理者和散户投资者密切相关的第二组指标是风险衡量指标。风险衡量指标,如最大下降或波动率也可以使用三角形轻松显示特定持续时间的所有可能的子周期。我们将介绍两种不同的风险三角形,即最大下降三角形和波动率三角形。此外,我们通过标准化具有风险三角形的收益三角形来提供生成风险调整后的返回三角形的功能。
▍5.1 下降三角形
投资策略和单一资产的一个可能的风险衡量标准是最大亏损。我们从我们的回归系列获得累积性能系列的第n个间隔为:
对于每个
针对于最大下降的每个间隔
现在被定义为:
然后,最大下降三角形的条目由
给出,且相同的索引集与对应地 回归三角由给出。
注意通过构造单调性:
无论
何时都保持索L引集在开始或结束时是否连续增加以获得更大的集合J。
对于市场投资组合,过去50年(1969年至2019年)的最大下降三角形如图11所示。它可以通过改变plt_type,如:
值得注意的是:我们另外选择了不同的颜色图,'RdYlGn_r'因为更高的绘图表示更高的风险,因此默认颜色图的反转版本更合适。在图11中我们可以了解到,在过去五十年中,十年投资期限的最低可能最大跌幅为20%,最高为55%。对于更长的投资期限,通过构造的最大下降值的变化趋于更小。例如,对于市场上的三十年投资,投资者将遭受48%至55%的最大亏损这决定于开始日期。
图11:Fama - French市场投资组合的最大亏损三角形(年度,1969年1月至2019年3月
▍5.2 波动率三角形
作为最大下降三角形的替代,我们也可以考虑波动率三角形。为了获得波动率三角形中的条目,需要做出一些假设。为简单起见,我们使用最高可能的返回采样频率估算样本波动率,然后应用平方根时间缩放规则来获取通过重采样规则选项指定的周期长度的估计值。依赖这一假设的一个主要原因是我们还希望能够对主要和第一对角线提供一些可靠的估计。首次汇总收益时,这是不可能的,因为我们必须从单个或少量观察中估算出波动率。然而,在解释波动率三角形时,应该意识到它们依赖于某些假设,如平方根时间缩放。
波动率三角形的条目定义为,对于
其中索引集由
给出。另外,
表示样本均值
表示索引集
的基数
此外,波动三角形可以通过改变plt_type来轻松生成,如图12所示。
图12:Fama-French市场投资组合的波动率三角形(年度,1969年1月至2019年3月)
▍5.3 风险调整后的收益三角形
风险和收益三角形的自然延伸是风险调整的收益三角形。我们的实施允许根据波动率或最大亏损调整收益。因此,人们获得夏普比率(人们可能希望使用超额收益作为收益三角函数的输入)和收益率。为了说明界面,我们提供了图13市场投资组合的风险调整(相对于波动率)收益三角形。可以通过调用接口
图13:Fama - French市场投资组合的风险调整收益三角形(年度,1969年1月至2019年3月)
6、Python实现
本节包含python所有提出的三角形的实现。主要功能是plt_triangle()。前两个输入变量r_discr_pctg(pandas.Series包含以日期索引的离散百分比返回)和resampling_rule(目标频率)是必需的。所有其他输入都是可选的,可用于自定义三角图。
在开始之前,请选择模块名称并将其用作文件名,例如,scalable_triangle_utils.py然后导入该功能plt_triangle。除了传递三角形图的主要功能外,还定义了三个实际计算功能。功能compute_ret_triangle(),compute_dd_triangle()并且compute_vol_triangle()可以被用于分别获得收益,最大下降和波动率三角形的条目。该模块依赖于某些依赖项,主要是pandas包和热力图来源于seaborn包。
7、总结
在本文中,我们介绍了用于可视化长期投资指标的三角形图。为了介绍,解释和展示我们三角形的一般功能,我们研究了Fama-French因子数据。收益三角形可用于显示不同持有期间和不同开始和结束日期的策略或资产的性能。此外,收益三角形还可用于执行不同策略或资产的成对比较。为了研究不同投资视野的风险度量,我们引入了最大下降和波动三角形。收益和风险三角形的组合产生了风险调整的收益三角形,用于分析长期投资决策。
8、参考文献
1. Frankfurter Allgemeine Zeitung (2018), Daniel Mohr, Kaum Verluste mit deutschen Aktien möglich
2。The New York Times (2011), In Investing, It’s When You Start And When You Finish
3. Wilder-James, E. (2012), What is big data?
—End—