最近在几个量化平台上做了些实验,发现不同平台上财务数据的精度略有不同。因此考虑做一下对比实验。以000732.sz 泰禾集团为例:
2017-08-08 收盘价为16.48 元
2016年年报显示总股本为:1,244,450,720 股,且此后没有总股本变化
2016年年报显示:
归属于上市公司股东的净资产 | 18,000,836,048.24 |
2017年1季报显示:
归属于上市公司股东的净资产(元) | 18,119,207,762.63 |
截止到2017-08-08尚未发布半年报。所以在2017-08-09日开盘前的PB应该是:
PB = 总市值/一季报净资产 = 1,244,450,720 * 16.48 / 18,119,207,762.63 = 1.1318678020734383190574363843422 约= 1.13 约=1.132 约= 1.1319 约=1.13187 约=1.131868
另外,如果以上年年报看:
PB = 总市值/上年年报 = 1,244,450,720 * 16.48 / 18,000,836,048.24 = 1.1393108525981595782920738760794
米筐:
df = get_fundamentals(
query(
fundamentals.eod_derivative_indicator.pb_ratio,
).filter(
fundamentals.stockcode == '000732.XSHE'),
'2017-08-08')
df.minor_xs('000732.XSHE')
输出:
pb_ratio | |
---|---|
2017-08-08 | 1.1319 |
结论: 保留4位小数,结果正确
聚宽:
df = get_fundamentals(query(
valuation.pb_ratio
).filter(
valuation.code == '000732.XSHE'
), date='2017-08-08')
df
输出:
pb_ratio | |
---|---|
0 | 1.4404 |
结论:保留4位小数,结果不正确。所以我认为以财务数据选股不能在聚宽上做。
京东量化:
finance_df = get_fundamentals(
query(
fundamentals.equity_valuation_indicator.pb_ratio
).filter(
fundamentals.order_book_id=='000732.SZ')
, '2017-08-08')
finance_df
输出:
000732.SZ | |
---|---|
pb_ratio | 1.1319 |
order_book_id | 000732.SZ |
date | 2017-08-08 00:00:00 |
结论:保留4位小数,结果正确。
同花顺MindGo:
q = query(valuation.pb).filter(valuation.symbol == '000732.SZ')
df = get_fundamentals(q, date = '20170808')
print(df)
f_pb = df['valuation_pb'][0]
f_pb
输出:
valuation_pb
0 1.13
结论:保留2位小数,结果正确。但误差较大。
优矿:
学习曲线较高,暂未实验。
总体来看,优先顺序为:米筐>京东量化>同挂顺MindGo>聚宽