第二章 数据源探索:Wind/东方财富API、REITs公告数据、交易所披露数据、第三方数据平台
做REITs量化研究,第一步不是写代码,而是搞清楚数据从哪来。
我见过太多人,因子模型建得漂漂亮亮,回测曲线也好看,结果一上实盘就崩。为什么?数据源有问题。底层数据不准,上层全是空中楼阁。这一章,咱们就把数据源的底裤扒干净。
2.1 数据源全景:一张图看懂
先给你一张框架图,把REITs数据源的全貌看清楚。我个人习惯,做任何项目前先画数据地图,不然容易迷路。
这张图我每次讲课都会放。你看,数据源分四大块:金融终端、公告数据、交易所披露、第三方平台。每一块都有自己的定位,谁也替代不了谁。
2.2 Wind与东方财富API:主力数据源
做量化,Wind是绕不开的。虽然贵,但数据质量确实稳。我早期做REITs研究时,团队预算有限,先用东方财富顶了一阵子,后来发现有些字段对不上,最后还是上了Wind。
2.2.1 Wind数据接入
Wind的Python接口叫WindPy,用法很直接。我给你看一段我常用的代码模板:
from WindPy import w
w.start()
# 获取REITs行情数据
# 代码示例:获取某REIT近一年的日频数据
data = w.wsd("508000.SH", "close,volume,amt,pe_ttm",
"2024-01-01", "2024-12-31",
"Fill=Previous")
print(data.Data)
w.isconnected()检查,能省很多事。
2.2.2 东方财富API
东方财富的接口更开放,适合个人研究者。不过要注意,它的数据字段命名和Wind不太一样。比如分红数据,Wind叫dividend,东方财富可能叫bonus。映射关系你得自己维护。
import akshare as ak
# 获取REITs列表
reit_list = ak.reits_realtime_em()
print(reit_list.head())
# 获取单只REITs历史行情
reit_history = ak.fund_etf_hist_em(
symbol="508000",
period="daily",
start_date="20240101",
end_date="20241231"
)
2.3 REITs公告数据:因子挖掘的富矿
说实话,行情数据大家都有,真正拉开差距的是公告数据。REITs的公告里藏着大量非结构化信息,比如可供分配金额、资产估值变动、租约到期情况。这些才是构建Alpha因子的核心素材。
2.3.1 公告数据获取方式
| 数据来源 | 获取方式 | 更新频率 | 数据质量 |
|---|---|---|---|
| 上交所官网 | PDF下载 + OCR解析 | 实时 | 高(原始文件) |
| 深交所官网 | PDF下载 + OCR解析 | 实时 | 高(原始文件) |
| Wind公告模块 | API直接获取 | T+1 | 中(已结构化) |
| 第三方聚合平台 | 网页爬虫 | 不定时 | 低(需清洗) |
我个人更推荐直接从交易所官网拿PDF,然后自己解析。虽然麻烦,但数据最原始,不会被人为加工过。你想想看,如果别人已经处理过一遍,你拿到的可能已经是二手信息了。
2.3.2 公告数据解析示例
解析PDF公告,我常用pdfplumber这个库。给你看个实际案例:
import pdfplumber
import re
def parse_reit_dividend(pdf_path):
"""从REITs分红公告中提取关键信息"""
with pdfplumber.open(pdf_path) as pdf:
text = ""
for page in pdf.pages:
text += page.extract_text()
# 提取可供分配金额
pattern = r"可供分配金额[::]\s*([\d,]+\.?\d*)"
match = re.search(pattern, text)
if match:
distributable = float(match.group(1).replace(",", ""))
# 提取分红登记日
date_pattern = r"权益登记日[::]\s*(\d{4}年\d{1,2}月\d{1,2}日)"
date_match = re.search(date_pattern, text)
return {
"distributable_amount": distributable,
"registration_date": date_match.group(1) if date_match else None
}
2.4 交易所披露数据:官方权威来源
交易所的数据是最权威的,没有之一。上交所和深交所都有专门的REITs信息披露页面。我建议你把这些页面加到爬虫任务里,定时抓取。
主要关注这几类数据:
- 上市公告书:包含底层资产详情、估值方法、杠杆率上限
- 季度/年度报告:运营数据、现金流、资产估值变动
- 临时公告:资产收购/处置、租约变更、分红方案
- 持有人结构:机构持仓比例、前十大持有人变化
我记得有一次,某只REITs突然大跌,大家都在找原因。我翻了一遍交易所的临时公告,发现是底层资产的租约到期续签率低于预期。这个信息在公告里写得很清楚,但很多人只盯着行情看,忽略了公告。
2.5 第三方数据平台:锦上添花
第三方平台的数据,说白了就是「整合+加工」。比如一些数据服务商会把REITs的运营指标做成标准化表格,省去你自己解析PDF的功夫。但代价是——你可能不知道它加工过程中有没有出错。
常用的第三方平台包括:
- REITs数据聚合网站:提供行业平均指标、同类对比
- 金融数据SaaS平台:如聚宽、优矿,有现成的REITs因子库
- 开源社区数据:GitHub上有人维护REITs数据集,但质量参差不齐
2.6 数据源选择策略
讲了这么多,到底怎么选?我总结了一个优先级原则:
- 行情数据:首选Wind,次选东方财富。Wind的复权处理更规范。
- 财务数据:从公告PDF中自行提取,或者用Wind的结构化数据。
- 运营数据:必须从原始公告获取,第三方加工过的不可靠。
- 事件数据:交易所官网 + 公告监控,实时性要求高。
你想想看,如果因子构建的基础数据就有问题,那后面所有的模型、回测、策略,都是在垃圾数据上跳舞。所以,花时间把数据源搞清楚,绝对是值得的。
一句话总结:Wind解决「有没有」的问题,公告数据解决「好不好」的问题,交易所数据解决「对不对」的问题,第三方平台解决「快不快」的问题。四者结合,才是完整的数据生态。
好了,数据源这块就聊到这。下一章咱们开始动手,用Python把这些数据真正抓下来,存到数据库里。到时候我会给你看我的完整数据管道代码。