
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。
核心观点
在供应链网络上直接或通过第三方连接的股票,比随机配对的股票更具有相关性。
这种较高的相关性仍然适用于极端下跌的行情,并显示出相同的模式。
聚类分析识别出网络中也显示出较高相关性。该分析为风险建模提供了有用的工具。
供应链数据主要描述公司之间存在的商业关系,即客户-供应商关系(customer-supplier)。最近越来越清楚的是,这种关系与上市公司股价的表现具有一定的相关性。Cohen和Frazzini (2008) 发现在美国市场中,分别为供应商和客户的上市公司之间股票价格有明显的相关性和领先滞后效应。Shahrur等 (2009)也在其他22个发达国家股票市场验证了Cohen和Frazzini (2008) 的发现。Wu和Birge (2014) 在此基础上使用中心度等度量指标构建了多个量化交易策略。但有些时候领先滞后效应的方向似乎随着时间和地点的变化而变化,因此对于应该是哪一个没有明确的、最终的一致意见。
本文的方法与现有的文献不同,本文的主要动机是基于风险管理和风险建模的对供应链相关的股票分析它们之间的依赖性。本文的主要发现有三个方面:
首先,在高度相关的股票和在供应链网络上连接的股票之间存在明确的关系。这一特性不仅适用于客户-供应商直接关系的股票,也适用于通过第三方连接的股票,比如对于许多拥有一个未上市的共同供应商的上市公司来说。这些结果有助于凸显实体经济和资本市场之间的相互作用。
其次,我们确定了属于同一供应链网络集群的库存之间的类似关系。更具体地说,我们使用社区检测算法来分析全局网络。
数据说明
本文使用的是Bloomberg提供的“SPLC Current Bulk File”,数据主要包括以下字段:
Bloomberg统一的公司ID
公司名称
类型:供应商/客户
信息来源:公司财报、新闻或者Bloomberg分析师给出的分析结果
相关财务科目
披露日期
供应链关系发生的财政年份和时间段
交易金额
构建供应链网络
上述定义的供应链数据自然组成了一个网络,其中节点是公司,有向的边表示关系。注意,得到的网络实际上是一个多图有向网络,因为在一些公司对之间存在多个有向边:两个相关的公司可能互为供应商和客户,这种关系可能发生在多个不同的时间。为了简化我们的分析,我们使用一种自定义方法构建了一个简单的有向图,以确定哪一个是另一个的客户/供应商,即使两个方向实际上都可能存在:如果显示收入或成本,我们选择与最大金额对应的方向,否则,我们选择最经常出现的方向。在本文的其余部分中,这个有向图将被称为基本网络。以下是关于这个基本网络的统计:

我们不仅考虑数据集中明确存在的关系,我们还构建了一个由与同一第三方公司有关系的公司组成的扩展网络。这种链接可能有四种不同的类型,这取决于第三方公司的地位(客户或供应商)。假设有两家公司A和B都与一家公司C有关,那么有以下四种可能:
“客户-客户”:C是A和B的共同客户;
“供应商-供应商”:C是A和B的共同供应商;
“客户-供应商”:C是A的客户,同时是B的供应商;
“供应商-客户“:C是B的客户,同时是A的供应商。
从纯统计的角度来看,这个扩展网络的能够使得关系数量大量增加,从12760000条边增加到4880000条边。除了这种纯粹数量上的增长,使用扩展网络了的一个质变化是因为它突出了大型非上市公司在全球经济中所扮演的角色。
聚类分析
在分析大型、复杂的图和网络时,通常可以使用社区检测(community detection)算法那对图网络有一个直观的了解。社区检测是图分析中最具计算挑战性的问题之一,在相关文献中可以找到各种方法,从简单的层次聚类到最新的基于神经网络的方法。正如Fortunato(2010)中详细解释的那样,modularity optimization是使用最广泛的方法之一,因为它的性能、可解释性和简单性。本文所展示的所有聚类结果都是通过modularity optimization的方法得到的。
这里需要说明一点:图有几个相互连接的部分(或称为组件),其中每个节点都在内部进行连接,而没有与外部组件的连接。通常所说的大组件是图中最大的连接组件,但还有许多其他的更小的、连接的和成对断开的小组件(连接的公司数量只有2到3个)。当应用聚类算法时,较小的连接组件将被算法识别为独立的集群。但在以下实际分析过程中,本文只基于在大组件中使用社区检测算法。
对基本网络的进行聚类分析的主要结果如在下图3所示。它显示了大组件内的每个集群的规模(深蓝色条)和集群内上市公司的数量(浅蓝色条)。不难看出,规模最大、关联度最高的集群中,上市公司的比例都相当,不存在明显的集中效应。这一特点体现了供应链中上市公司和非上市公司之间的强大相互作用。这一事实证明了供应链数据在理解上市公司股票收益方面的附加价值:这类数据突出了单纯从市场数据无法明确识别的相互作用,因此人们可能希望通过供应链更好地理解资本市场。

如前所述,集群内上市公司和非上市公司的划分是相当同质的。为了进一步评估这种聚类的有用性,自然要将其与板块分类、国家或区域等其他通常的分类进行比较。这些群体与集群的差异越大,重叠越少,就能从供应链数据中获得更多的新信息。在本节中,我们首先通过实证分析,然后通过使用自定义相似性度量的定量评估,分析这些群体和集群之间的重叠。我们GICS一级行业分类为基础,分析集群-板块的重叠。图4通过显示按大小排序的每个集群中的板块分布,可以看出集群和板块没有明显的重叠。但有一个明显的例外,“医疗保健”部门几乎占据了第五组。

除此之外,本文还分析了集群中公司所在地区的分布,图6显示了在某些集群中亚洲公司的比例非常高,这一事实可能只是由于我们的数据集中亚洲公司的比例很大所致。

相关性分析
在进行相关性分析时,在一个图网络中,分别计算有联系的股票间的收益率的相关系数,和没有关联关系的任意两个股票间的相关系数,并展示它们的分布。如下图是基础网络和拓展网络中,有关联关系与无关联关系的相关系数分布对比:


在分析了不同关系间的相关性后,我们的主要发现:
看出在基础网络和扩展网络上都连接的公司比仅在基础网络上连接的公司具有显著的相关性。
与扩展网络相连但不在基础网络上的公司相比随机配对的股票仍然表现出更强的相关性
相关性取决于关系的类型。按平均相关性降序排列的关系类型如下:(SUPPLIER, SUPPLIER) > (CUSTOMER, CUSTOMER) > (CUSTOMER, SUPPLIER) > (SUPPLIER, CUSTOMER)
关系对的数量对相关性更强的(SUPPLIER, SUPPLIER) 和 (CUSTOMER, CUSTOMER) 的相关性分布有巨大的积极影响。
进一步,我们讨论同在一个板块或地区,有供应链关系的股票是否有更高的相关性。答案是确定的。如下图分别展示了工业板块(左)和健康板块(右)中,有供应链关系和无供应链关系的两组的相关性对比:

类似的结果也适用于同一地区的股票。总的来说,本节的分析表明,存在供应关系时,相关分布具有较胖的正尾,并向右偏移,这与我们的假设一致,即供应链关系的是重要决定因素。以上结论同样适用于集群内内股票与集群外股票的对比。
极端行情下的分析
在最后一节中,我们将讨论以下与风险相关的问题:一家公司在供应链网络中的地位是否有助于理解(并可能预测)其巨大的负收益?我们通过将日度收益与N倍的标准差对比,来定义极端行情。如下图所示,我们观察到一家公司股票极端下跌与位于同一集群内的公司之间存在很强的联系。这一性质加强了我们的信念,即供应链数据与风险建模相关。

极端下跌事件是否可能会通过供应链网络影响相关的公司呢?答案也是肯定的,但这种影响存在延迟,即我们所说的领先-滞后关系。为了更清楚的研究这种关系,本文参考Abergel (2013) 的方法。具体来说,对于供应链网络中的每一家上市公司,计算这家公司经历极端下跌时,前后固定时间内关联公司的涨跌与这家公司涨跌的差值。
下显示了我们在的MSCI世界指数成分股应用该计算得到的分布。可以观察到时间差在网络上的分布偏度为负,表明关联公司的向下跳跃往往领先于基础公司的向下跳跃:对于一个给定的公司,其关联公司最近的(时间上)极端下跌平均会发生在基础公司极端下跌之前。这一结果与Menzly和Ozbas(2010)等研究的结果一致,是将供应链数据用于预测的重要一步。

参考文献:
Cohen, L. and A. Frazzini (2008, August). "Economic Links and Predictable Returns". The Journal of Finance LXIII, NO. 4.
Pomponio, F. and F. Abergel (2013). "Multiple-Limit Trades: Empirical Facts and Application to Lead–Lag Measures". Quantitative Finance 13 (5), 783– 793.
Shahrur, H. K., Y. L. Becker, and D. Rosenfeld (2009, October 11). "Return Predictability Along the Supply Chain: The International Evidence".Financial Analysts Journal.
Wu, J. and J. R. Birge (2014, January 24). "Supply Chain Network Structure and Firm Returns". SSRN Electronic Journal.
来源:The Journal of Portfolio Management February 2023
作者:Frédéric Abergel、Adrien Akar
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n
我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题: