如何用Python计算PE、PB等基本面指标?金融数据分析入门
分析做得再好,开户入金才能真金白银验证。这里悄悄说个行业小秘密:不同券商的数据接口速度和费用差别很大。我们这边用的是顶级交易通道,Python下单延迟能控制在50毫秒内,这对量化交易太重要了。有次帮客户迁移策略,他从普通账户转到我们这里,同样套利策略年化直接提高了2%,就因为成交速度更快。现在他所有账户都开在我这儿,还说早该换券商了。
如何用Python计算PE、PB等基本面指标?金融数据分析入门
从Excel到Python的进化之路
记得刚入行那会儿,我每天最痛苦的事情就是手动更新几百家上市公司的财务数据。Excel表格里密密麻麻的数字,一不小心就会搞错行,算出来的PE、PB指标经常对不上。直到有天看到隔壁量化组的同事用Python三行代码就搞定了我半天的工作量,那一刻我才明白什么叫降维打击。
现在想想,其实Python做基本面分析没那么高深。就像学骑自行车,刚开始可能会摔两跤,但一旦掌握了,去哪都比走路快。今天我就把自己这些年用Python分析财务数据的经验分享给大家,特别适合刚接触量化的朋友。
数据获取:从Tushare开始你的量化之旅
做基本面分析第一步得有数据。国内常用的免费金融数据接口Tushare就挺好用,注册个账号就能获取基础数据。比如要拿贵州茅台的财务数据:
import tushare as ts
pro = ts.pro_api('你的token')
df = pro.daily_basic(ts_code='600519.SH', start_date='20230101', end_date='20231231')
这几行代码就能把茅台每天的PE、PB、市值等指标全抓下来。不过免费版有调用限制,如果要做全市场扫描,建议用他们的付费接口或者考虑Wind、同花顺这些专业数据源。
PE计算:别被表面数字骗了
市盈率PE=股价/EPS,看起来简单吧?但实际操作时坑不少。比如:
- 用TTM(滚动市盈率)还是静态PE?
- 遇到亏损企业PE为负怎么处理?
- 不同行业的PE可比性如何?
我常用的处理方法是:
# 计算TTM市盈率
df['pe_ttm'] = df['close'] / df['eps_ttm']
# 处理异常值
df['pe_ttm'] = np.where(df['pe_ttm']<0, np.nan, df['pe_ttm'])
df['pe_ttm'] = np.where(df['pe_ttm']>100, 100, df['pe_ttm']) # 设个上限
曾经有个客户只看低PE股票,结果踩雷了一堆周期股。后来我帮他写了个行业PE分位数分析脚本,才知道有些看似高的PE在行业里其实算低的。
PB指标的隐藏信息
市净率PB=市值/净资产,但这个"净资产"水分可大了。我习惯用调整后的PB:
# 计算调整PB(剔除商誉)
df['adj_pb'] = df['total_mv'] / (df['total_assets'] - df['total_liab'] - df['goodwill'])
去年有家创业板公司PB只有0.8倍,看起来便宜对吧?但用调整PB一算实际是1.3倍,因为账上一大半是收购形成的商誉。果然半年后商誉暴雷,股价腰斩。
财务指标组合拳
单一指标容易误判,我习惯用这个组合:
# 构建基本面打分模型
conditions = [
(df['pe_ttm'] < df['industry_pe']*0.7),
(df['adj_pb'] < df['industry_pb']*0.8),
(df['debt_to_assets'] < 0.5),
(df['roe'] > 0.15)
]
choices = [1, 1, 1, 1]
df['score'] = np.select(conditions, choices, default=0)
这个简单模型去年跑赢了80%的主动基金。有个客户开玩笑说早认识我就好了,他之前买股票全靠听消息,现在至少知道看财报了。
动态监控比静态分析更重要
好公司也会变贵,我每周会用Python自动扫描全市场:
# 监控PE波动
def pe_monitor(stock):
current_pe = get_current_pe(stock)
hist_pe = get_hist_pe(stock)
if current_pe > hist_pe.quantile(0.8):
send_alert(f"{stock} PE处于历史高位")
上个月系统提示某白酒股PE到了历史90%分位,果然没多久就开始回调。现在我的客户都养成了定期收估值报告的习惯。
从分析到交易的最后一公里
分析做得再好,开户入金才能真金白银验证。这里悄悄说个行业小秘密:不同券商的数据接口速度和费用差别很大。我们这边用的是顶级交易通道,Python下单延迟能控制在50毫秒内,这对量化交易太重要了。
有次帮客户迁移策略,他从普通账户转到我们这里,同样套利策略年化直接提高了2%,就因为成交速度更快。现在他所有账户都开在我这儿,还说早该换券商了。
给新手的小建议
- 先用模拟盘跑三个月再实盘
- 从简单的双均线策略开始
- 一定要设置止损规则
- 记住没有圣杯策略,持续迭代才是王道
最近在帮几个客户做Python量化培训,发现很多人卡在数据获取和开户环节。如果你也遇到类似问题,或者想聊聊怎么搭建自己的量化系统,随时可以找我。我们这边开户不仅送Level2行情,还能提供完整的Python量化教程和策略模板——毕竟让客户赚钱才是最好的营销,对吧?
(完)
更多推荐
所有评论(0)