使用RawData\factset revere relationship&company2003-2026.6.1\2003.04-2026.06 nvmt7 11357715.csv\nvmt7tpvplk3hmb4.csv,先筛选出start_列>=2016-01-01,且rel_type为CUSTOMER的数据,存放在Data\Dactset中,代码不需要保存
使用RawData\factset revere relationship&company2003-2026.6.1\2003.04.03-2026.06.02 lt524 11357711.csv\lt524mebombkg4li.csv,删去ticker为空的数据,再筛选country为CN的数据,最后删去重复的数据,保证每个数据唯一,最终只保留ticker列和id列,输出在Data\Factset,以CNcompany.csv命名
接下来进一步清洗,去除ticker中为纯英文(美股上市),5位数字,或者后缀是:HK(港股上市),以4或8开头的六位数字(北证),9开头的六位数字(新三板),另外,如果有以后缀:CN结尾的需要保留。同时注意深证股票中的前置0没有补齐,需要一并补齐,然后再删除重复的数据,得到唯一的ticker-id对
还没有完成,你需要将带:CN后缀的后缀去掉,这里面还有部分深证上市股票需要补齐前置的0,例如272:CN,需要去掉:CN,再补齐为000272.然后删去所有不是6位数字的数据,之前有部分其他地区上市的代码并不是纯英文没有被删除。最后再去除重复数据即可。
使用RawData\factset revere relationship&company2003-2026.6.1\2003.04-2026.06 nvmt7 11357715.csv\nvmt7tpvplk3hmb4.csv,先筛选出start_列>=2016-01-01,且rel_type为SUPPLIER的数据,存放在Data\Factset中,代码不需要保存
接下来的代码保存在Code中,你需要利用Data\Factset\supplier_relationships_2016_onwards.csv和Data\Factset\customer_relationships_2016_onwards.csv, 1、在供应商csv中匹配source_company_id存在于Data\Factset\CNcompany.csv中id列的数据,提取对应的stert_, end_, source_company_id(重命名为supplier_id),对应的ticker, target_company_id(重命名为customer_id),以及 target_company_id匹配RawData\factset revere relationship&company2003-2026.6.1\2003.04.03-2026.06.02 lt524 11357711.csv\lt524mebombkg4li.csv中id列对应的country列(重命名为cutomer_country)。 2、在客户csv中,匹配target_company_id存在于Data\Factset\CNcompany.csv中id列的数据,将对应的数据存到第一步中的supplier_id列中,并记录对应ticker,同时将source_company_id存到customer_id列,同样根据这个id记录其cutomer_country,对应的对应的stert_, end_也需要保存。 最终输出是一个csv,包含列stert_, end_, supplier_id, ticker, customer_id, cutomer_country
输出不需要放在Code中,我已帮你移动了位置。使用Data\Factset\supply_chain_relationships.csv,仅保留所有customer_country为CN和US的数据,并且ticker中深证股票的前置0又被省略了,需要补齐。
接下来我想看看能否构造出多少对A->B->C供应链,其中箭头为供应商指向客户,A和B都是国内公司,C是美国公司,先从customer_country为US的数据入手,检查对应的supplier_id是否还处于customer_id中,如果是,再检查时间区间是否有重叠,若还是,则为一对满足条件的供应链。输出结果只需要start_,end_,A,B即可,其中A,B分别为股票代码,B的股票代码直接通过最初数据的ticker获得,而A的股票代码需要通过第二次匹配得到的customer_id,再去匹配supplier_id得到对应的ticker
不对,阿里巴巴、腾讯、京东不是A股上市公司,清洗CNcompany时有错误。我已经知道错误在哪了,港股上市公司是5位数字代码,但它前面也可能是0开头的,factset数据库同样省略了前置的0,导致被误认为是深证上市了,我新搜集了一份所有A股股票代码的数据:RawData\公司基本信息.csv,处理一下Data\Factset\CNcompany.csv,首先去掉B股股票,这个之前忘记去除了,为2开头的代码,接着筛选所有代码在公司基本信息.csv中Scode的数据,删去其他数据。最后应该保证每个id只对应一个ticker
模塑科技只是一家小公司,不可能有这么多海外业务,这肯定还是腾讯。我们先查看一下Data\Factset\CNcompany_cleaned.csv的ticker列是否有相同的代码
输出太慢了,我们重新进行一次CNcompany的清洗吧,之前的要求为: 1、使用RawData\factset revere relationship&company2003-2026.6.1\2003.04.03-2026.06.02 lt524 11357711.csv\lt524mebombkg4li.csv,删去ticker为空的数据,再筛选country为CN的数据,最后删去重复的数据,保证每个数据唯一,最终只保留ticker列和id列,输出在Data\Factset,以CNcompany.csv命名 现在新增name列,将name列也提取出来; 2、接下来进一步清洗,去除ticker中为包含英文(但不包含:CN)(美股上市),5位数字,或者后缀是:HK(港股上市),以4或8开头的六位数字(北证),2开头的六位数字(B股),9开头的六位数字(新三板),另外,如果有以后缀:CN结尾的需要去除其后缀再保留。同时注意深证股票中的前置0没有补齐,需要一并补齐,然后再删除ticker-id对重复的数据。 3、这时候可能存在相同的ticker,将这个结果统计出来。 代码保存在Code\CNCompany中,输出保存在Data\Factset\CNcompany中
我想到一个办法,通过:HK后缀ticker对应的id来检验是否还存在港股
你不需要一来就去构造ABC关系,回顾之前的指令,“接下来的代码保存在Code中,你需要利用Data\Factset\supplier_relationships_2016_onwards.csv和Data\Factset\customer_relationships_2016_onwards.csv, 1、在供应商csv中匹配source_company_id存在于Data\Factset\CNcompany.csv中id列的数据,提取对应的stert_, end_, source_company_id(重命名为supplier_id),对应的ticker, target_company_id(重命名为customer_id),以及 target_company_id匹配RawData\factset revere relationship&company2003-2026.6.1\2003.04.03-2026.06.02 lt524 11357711.csv\lt524mebombkg4li.csv中id列对应的country列(重命名为cutomer_country)。 2、在客户csv中,匹配target_company_id存在于Data\Factset\CNcompany.csv中id列的数据,将对应的数据存到第一步中的supplier_id列中,并记录对应ticker,同时将source_company_id存到customer_id列,同样根据这个id记录其cutomer_country,对应的对应的stert_, end_也需要保存。 最终输出是一个csv,包含列stert_, end_, supplier_id, ticker, customer_id, cutomer_country” 你已经把这个代码逻辑保存在Code中了,只需要修改对应的CNcompany
编写一个简单的脚本计算2016年后,月度情况下,共有多少对这样的关系,例如2017年1月,需要统计有多少组数据的start_和end_区间包含2017年1月。输出为一个csv,只需要两列,第一列为月份,第二列为组数
接下来我们构造一个AB对的面板数据,代码存放在Code\ABPanle中,输出csv存放在Data\Factset\ABPanle中,第一列时间跨度为一个季度,从2016Q1开始,第二列自行编码AB对,第三列为Supplier股票代码,即A股票代码,第四列为Customer,即B股票代码,第五列为Active,取1表示该季度有活跃的供应链关系,先定义活跃供应链关系为该季度保持45天以上的供应链关系。
新增一个Break列,如果当期和下一期Active都为1,则取0;如果当期还有供应链关系,但下一期断链,即Active=0,则取1;在Active=0时取空值