阅读803 返回首页    go 阿里云 go 技术社区[云栖]


用Python/机器学习在金融市场获利

更多深度文章,请关注:https://yq.aliyun.com/cloud


我终于把标准普尔500指数下跌了10%。这可能听起来不是很多,但是当我们处理大量流动性很好的资本时,对冲基金的利润相当可观。更科学的做法将会带来更高的回报。

这一切都是在Gur Huberman发表的题为“传染性的猜测和治愈癌症:非事件使股价飙升”的文章之后开始的。该研究描述了1998年发生的一个公司叫EntreMed的事件(ENMD是当时的象征):

纽约时报星期日”有关潜在开发新型癌症治疗药物的文章导致EntreMed的股价从周五收盘时的12.063上涨至周一85点,最后以接近52点收盘。这件事情,导致资本对其他生物技术股的也很热情。然而,在“自然”杂志和各种受欢迎的报纸中,包括“泰晤士报”报道,癌症研究已经有了潜在的突破。超过五个月前,尽管没有提供真正的新资料,但公众的热烈关注引发了股价的持续上涨。

在研究人员提出的许多有见地的观点中,有一个人总结出来:

“[价格]运动可能集中在有些共同点的股票上,但这些股票不一定是经济基础。”

我想知道是否有可能根据通常使用的东西来聚类股票。我开始挖掘数据集,几个星期后,我发现一个包括记录股票和周期表元素之间的“已知和隐藏的关系”的分数。

在计算基因组学的背景下,这也提醒我,基因与其细胞信号网络之间的关系如何相对未知。然而,当我们分析数据时,我们开始看到新的连接和相关性,我们可能以前没有能够预测到:

75a601053f76205d24a79dda1f38f9a5625c89bc

   所选基因的表达模式涉及细胞可塑性,生长和分化的信号通路

股票,如基因,通过彼此之间共享的强和弱的隐藏关系的庞大网络而受到影响。这样我们可以通过一些相关事件来预测其中的一些影响和关系。

我的目标之一是创建长期和短期的股票群或“篮子集群”,我可以用来对冲或仅仅靠投资从中获益。这将需要无人值守的机器学习方法来创建能够彼此分享强弱关系的股票集群。

我在这里下载数据集,这是基于周期表中的元素和上市公司之间的关系。

然后使用Python和通常的机器学习的子集 - scikit-learn,numpy,pandas,matplotlib和seaborn,我第一步就是开始了解我正在处理的数据集的形状。(要做一些这样的事情,我找到了一个Kaggle内核,题为:主成分分析与KMeans视觉效果)。

皮尔逊相关概念特征的相关性,在这种情况下,周期表中的矿物和元素:

输出:(针对该可视化示例的前16个样本运行)。看到周期表中的元素如何与上市公司相关也很有意思。

e1f8ba1ff57d7308b186d547172066f8073dc991

测量解释方差和主成分分析(PCA

解释方差=(总方差 - 残差方差)。值得关注的PCA投影组件的数量可以通过解释差异度量来指导,这在Sebastian Raschka关于主成分分析的文章中也很好地描述:https://sebastianraschka.com/Articles/2015_pca_in_3_steps.html输出:

9bf241da1e4929b7f1915be8f64474c26b9abe4b

从这个图表可以看出,大部分差异来自预测的主要成分的前85%,这是一个很高的数字。有关分析合理数量的主要部件的更多信息,请参见此处

使用scikit-learn的PCA模块,让n_components = 9。代码的第二行调用“fit_transform”方法,该方法将PCA模型与标准化的电影数据X_std相匹配,并应用到数据集上使维数降低。

2657639522631d6e015de911c7855e8e45278eef

我们在这里并没有真正观察到群集的微弱轮廓,所以我们应该继续调整n_component值,直到我们看到我们想要的内容。这涉及数据科学和艺术的“艺术”部分。

现在让我们尝试一下K-means来看看我们是否能够在下一节中可视化任何不同的集群。

K均值聚类

使用scikit学习的KMeans()调用和“fit_predict”方法,我们计算聚类中心并预测第一和第三PCA投影的聚类索引(以观察是否可以观察到任何明显的聚类)。然后,我们定义我们自己的颜色方案,并绘制散点图如下:

ee6e3c47dce431aa3724a60342499c71e6cc76f0

这个K-Means图表现在看起来更有希望,好像我们的简单聚类模型假设是正确的,我们可以通过这种颜色可视化方案观察3个可区分的聚类。

当然,在这里也有许多不同的方式,以集群和可视化这样的数据集作为显示。

使用seaborn的pairplot功能是非常方便的,我可以自动绘制数据帧中的所有功能成对的方式。我们可以将前3个投影相互对照,并可视化:

3bfe6524833ece8a2287d550781efb6b7bc5ecdf

打造篮子集群(Basket Clusters

你如何调整你的群集取决于你。这不是一个良方,其中大部分取决于你所在的环境。在这种情况下,股票,股票和隐藏关系所定义的金融市场。

一旦对你的群集感到满意,并设定了得分阈值,以控制某些群体是否符合群集资格,则可以提取给定群集的资源,并将其作为篮子进行交易或将其用作信号。你可以主要取决于你的创造力使用这种方法处理的事情,以及你可以如何使用深度学习变体进行优化,以根据集群或数据点的概念来优化每个集群的回报,例如公司的短期利率或浮动规模(公开市场上的可用股份)。

你可能会注意到这些集群作为篮子交易的一些有趣的特征。有时与标准普尔或一般市场有分歧。这可以提供基于“信息套利”的套利机会。某些群集可能与Google搜索趋势相关。

03708b30bd20fe9f6fbb2a3ab31983d0a7481cd8

如下文所述,看到与材料及其供应链相关的集群可能是有趣的:“放大10种材料及其供应链”。使用数据集,我仅在功能列标签上操作:“钴”,“铜”,“镓”和“石墨烯”,只是为了看看我是否可以发现在这一领域的上市公司和暴露于风险之间的隐藏联系。

通过使用在QuantopianNumeraiQuandlYahoo Finance 等出口处可以获得的历史价格数据,你可以汇总价格数据以生成使用HighCharts可视化的预期收益:

0da3696f2474fd660edb3d5d6b8f1a5a3e840ec6

我从上述集团获得了不错的投资回报,这意味着你的投资回报率将比标准普尔每年大约增加10%。我看到更积极的方法可以帮助我每年增加接近70%。现在我不得不承认,我做了一些其他的事情,我必须保持黑盒子,由于我的工作的性质,但从迄今为止我观察到,至少探索或围绕这种方法围绕新的量化模型可能证明是非常值得的,唯一的缺点是不同的信号可以通过管道进入另一个系统。

生成短篮子群可能比长篮子群更有利可图。

如果你进入机器学习,提前分享已知和隐藏的关系的上市公司之间的寄生,共生和同情关系可能是有趣和有利可图的。最后,一个人获取利润的能力似乎完全是在生成这些类型的数据集的帮助下,获得强大的特征标签或“概念”的组合。

我在这种模型上的下一个迭代应该是包括一个单独的自动生成特征组合和唯一列表的算法。也许基于可能会影响具有隐蔽关系的群体的近实时事件,但只有具有机器学习算法的人才能够预测。

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Understand PyTorch code in 10 minutes》,

作者:GaëtanR机器学习研究员 - 多伦多大学博士生 译者:袁虎 审阅:阿福

文章为简译,更为详细的内容,请查看原文

最后更新:2017-07-04 10:32:05

  上一篇:go  护卫神主机大师或者是主机管理系统中创建时提示开设失败的解决办法
  下一篇:go  RDS SQL Server - 专题分享 - 巧用执行计划缓存之Single-used plans