2012年10月27日星期六

练习:在Amibroker中建立S&P1200数据库


参考 http://www.amibroker.org/userkb/2008/03/25/ascii-import-standard-and-poors-global-1200/
Standard and Poor's Global 1200指数:覆盖70%的全球资本市场,由7个主要指标,包括31个地区的市场组成。
第一步:到标普官网下载SPG1200指数的成份股列表。http://www.standardandpoors.com Index Constituents
第二步:整理成份股板块分类信息。AB KB文章里的列表是直接在标普官网上下载的。现在官网上有已经没有具体成分个股的详细信息了。只好用VBA写了个excel工具从Yahoo Finance查询下载。很多公司在多个市场都有上市的股票,symbol重名的也很多,最后把不确定的股票都删掉,再去掉查不到industry和sector信息的,最终留下来969个股票。
第三步:将Sector和Industry序列分别存入broker.sectors 和broker.industries文件,在AB中建立新数据库SPG1200。然后是编辑SPG1200.format文件并保存在Formats目录下。还要把SPG1200.format手动添加到import.types文件里。文章说是自动添加,害得我跟只苍蝇一样在玻璃上撞来撞去,尝试了若干可能,最后才发现需要手动把SPG1200.format添到import.types文件里。
        sector和industry建立后,在第一个sector里面会有一堆industry185,186等直到industry256。如果是按照添加到方式,AB中原来的这些数字命名的sector就会都保留着。
        还有就是broker.industries中industry name+前面的数字的字符总数不能超过41个。超过的字符会在AB建立数据库的时候自动换行,变成一个新的industry,没有错误提示!比如有这么一个indusrty定义:3 Textile - Apparel Footwear & Accessories 在AB数据库里变成了两个industry:Textile - Apparel Footwear & Accessorie和s。逐一核对才找到原因。

第四步:把symbol,symbol full name,MarketID,IndustryID存入.csv文件导入AB中。这里又有一个地方文章没写清楚,查manual也没有明确的答案,我试了一下午才弄明白。在broker.industries文件里建立的是industry和sector的对应关系,所以多个industry前面可能是同样的数字(即多个industry对应同一个sector)。而在导入symbol时,每个industryID是依次排列的数字(!),且排列顺序必须同broker.industries文件里面的industry的排列顺序一致,这样导入的symbol才能同已经在AB数据库建立的市场结构对应好。附图是整理好的几个文件,一看应该就明白了。

      

还有一个地方值得注意,就是需要导入到.csv文件如果处于编辑状态,AB是不会导入的,但也没有错误提示。
                                                -Apr.14-

没有评论:

发表评论