摘要:在金融、会计实证研究中,经常需要研究者手工收集大量的数据,这不仅费时而且费力,使研究很难进展下去。而使用批量下载工具与Sas系统编程相结合的方法,可以将手工收集数据的过程简化为计算机程序执行,实现快速而准确地收集研究所需的样本数据。本文通过实例,介绍了具体的实现步骤及要注意的问题。
关键词:批量下载;Sas程序;实证研究
1 引言
在金融、会计研究中,经常需要对已有的理论或新构建的理论进行实证检验,这就必然涉及到对数据的收集、整理与分析。尽管有一些专门的数据供应商,如国内常用的金融数据库有万得金融终端(wind)、巨灵以及CCER等,可以提供研究所需的数据,使研究者从费时而繁琐的数据收集任务中解脱出来,集中精力于理论的构建与检验,但有时这些商业数据库并不能提供研究所需的全部数据,一些数据仍然需要研究者去手工收集。
手工收集数据的过程是相当艰苦的,一些研究只好被迫放弃,一些研究则使用不一定具有代表性的小样本,也有少数研究者以少充多,报告虚假结果。这要么导致研究无法进行,要么导致研究结果的可信度降低。如果能够通过计算机程序实现快速收集数据,这些问题可能可以避免。本文探讨如何应用批量下载工具和Sas程序相结合,在实证金融、会计研究中实现快速而准确地收集具有代表性的样本数据。国外已有研究者在研究中使用这项技术。[1]
2 批量下载工具结合Sas程序收集数据的步骤
利用批量下载工具结合Sas程序收集数据,包括三个基本步骤:准备并安装所需软件;批量下载;利用Sas编程提取数据。
2.1准备所需软件
需要一个批量下载工具,一套Sas程序。常见的批量下载工具有网络蚂蚁、Flashget、迅雷等等,选择其中的任何一款都可以,我们常用的是Flashget1.96版本。至于Sas程序,我们采用的是8.2版。
2.2 批量下载
这一步的目的是通过下载工具将包含研究所需信息(数据)的网页批量下载。Flashget提供两种批量下载方法,通配符方法和“导入列表”的方法。
通配符的方法比较简单,举例来说,如果需要代码为600000到600100的临时公告,可以用Flashget在全景网上批量下载。打开Flashget,点“文件/添加成批任务”,在弹出“添加成批任务”窗口url一栏输入“http://company.p5w.net/gszl/Lsg
g.asp?zqdm=600(*)”,按照提示设定通配符的长度为3,范围从“000”到“100”,完成后点“确定”就可以将代码600000开始到600100的临时公告(第一页)全部下载下来。
通配符的方法虽然简单,但也有局限性,Flashget只提供1个通配符(其它下载工具也是如此)。比如上例,结果是只将第一页的临时公告下载下来了。显然需要将第1页到最末页的临时公告全部下载下来才是完整的。这就需要利用Flashget提供的“导入列表”的方式进行批量下载。所谓“列表”,指的是一个后缀名为“lst”的文本文件,将需要下载的url(地址)写入到该文件中,“告诉”Flashget要执行哪些下载任务。
比如要下载代码为600000和600001的临时公告,假设每个公司的临时公告都为3页,将下列url地址写入到一个后缀名为“lst”的文件中(每行一个url)并保存。
http://company.p5w.net/gszl/lsgg.asp?pageNo=1&zqdm=600000
http://company.p5w.net/gszl/lsgg.asp?pageNo=2&zqdm=600000
http://company.p5w.net/gszl/lsgg.asp?pageNo=3&zqdm=600000
http://company.p5w.net/gszl/lsgg.asp?pageNo=1&zqdm=600001
http://company.p5w.net/gszl/lsgg.asp?pageNo=2&zqdm=600001
http://company.p5w.net/gszl/lsgg.asp?pageNo=3&zqdm=600001
然后打开Flashget,点“文件/导入”,在弹出窗口中输入上面保存的列表文件,就可以一次将600000和600001的前三页临时公告下载下来。
2.3 利用Sas编程提取信息
Sas是Statistical Analysis System的简称,一般翻译成统计分析系统,虽然我们经常用来做统计分析,比如描述性统计、相关分析、回归分析,但是Sas的精髓在于编程,在于它灵活的数据收集、整理与计算的功能。
由于我们在研究时须提取的信息是一些非结构化的信息,一般来说需要借助一些关键标识、或关键词来查找并转换为对研究者有用的结构化信息。不同的研究由于研究目的不一样,收集的信息也不一样,提取信息的具体程序会有所差别,但基本的思想是一样的。具体如何用Sas编程提取所需的信息,参见下节实例中的介绍。
3 一个应用实例
假设准备考察股权分置改革后,“大小非”减持受到哪些因素的影响,这是一个很有意义的课题,急需比较深入的理论探讨。要使研究能够顺利进行,必须首先识别出哪些上市公司的“大小非”有减持行为。在没有现成数据库可用的情况下,可以通过查找上市公司的临时公告,通常情况下,查找公告标题即可确定有无减持行为。这通过Falshget等批量下载工具结合Sas程序编程可以实现。具体的步骤如下。
3.1 确定首页url列表
减持公告可以从全景网上找到(很多金融、会计领域的实证研究都从该网站上收集数据),通常上市公司临时公告不止1页,在每一页上都有“第几页,共几页”的信息。如果先将上市公司临时公告的第一页下载下来,提取“共几页”的信息,就可以把其它页面页的url也确定下来。第1页的url列表可用Sas程序编程得到,程序如下所示(假设每个上市公司都有一个文本文件保存在“D:\jcb_gfzq\T0002\export”下,命名方式为SZ或SH加股票代码,这可以通过流行的股票行情软件通达信直接导出):
%let url='http://company.p5w.net/gszl/lsgg.asp?pageNo=1&zqdm=';
filename dm pipe "dir D:\jcb_gfzq\T0002\export /b";
data code;
length code $30. url$256.;
infile dm;
input code;
if upcase(substr(trim(code),length(trim(code))-3,4))='.TXT' and upcase(substr(trim(code),1,3)) in ('SZ0','SH6') then; url=&url.||substr(trim(code),3,6);
else delete;
file "E:\上市公司数据\临时公告第1页url列表.lst";
put url;
run;
运行上述程序后,在E盘上市公司数据目录下面产生1个名为“临时公告第1页url列表.lst”的列表文件,研究者可根据需要改变路径与文件名。
3.2 用Flashget下载临时公告
打开Flashget软件,点“文件/导入列表”,在弹出窗口中打开文件“E:\上市公司数据\临时公告第1页url列表.lst”,根据提示,将下载的文件保存在目录“E:\downloads\Lsgg_page1”下,Flashget会对每个下载的文件自动命名,后缀名为asp。
3.3 提取临时公告第一页标题并产生其它页面的url列表
这一步需要将临时公告的标题提取出来,同时为了能够下载将临时公告其它页面的信息,须将每家上市公司“共几页”的信息也提取出来,以便产生其它页面url列表。