Python量化入门:用Pandas计算OBV,量价分析基础

第一次听说OBV时我也懵

记得刚入行那会儿,听老交易员说起OBV指标,我一脸茫然。什么能量潮?什么累积成交量?听着就像玄学。直到后来自己用Python跑了一遍数据,才发现这玩意儿确实有点意思。

上周有个客户问我:"你们券商开户能对接量化交易吗?"我说当然可以,顺便给他演示了用Pandas计算OBV的代码。结果这哥们当场就开了户,说终于找到能说人话的客户经理了。

OBV到底是个啥

简单说,OBV(On-Balance Volume)就是把成交量当钱看。价格上涨时的成交量算作"流入",价格下跌时的成交量算作"流出",然后像记账一样累加起来。

想象你在经营一个小卖部:

  • 今天矿泉水涨价了还卖出去100箱 → 说明大家真想要(+100)
  • 明天降价了才卖出50箱 → 说明需求疲软(-50)
  • 把这些数字连续加起来,就是OBV

为什么量化交易要看OBV

去年有个做白酒股的客户让我印象深刻。他说:"你看茅台这K线走得漂亮吧?但我OBV指标早就提示不对劲了。"后来果然回调了20%。

OBV的聪明之处在于:

  1. 它不骗人 - 成交量是实打实的真金白银
  2. 经常比价格先动 - 大资金进场总会有痕迹
  3. 和价格背离时特别准 - 价格创新高但OBV没跟上?小心了

手把手教你用Python算OBV

先准备好环境:

import pandas as pd
import yfinance as yf  # 需要先pip install yfinance

获取数据(这里用腾讯港股举例):

data = yf.download('0700.HK', start='2023-01-01', end='2023-12-31')

核心计算其实就5行代码:

# 计算每日价格变化
data['price_change'] = data['Close'].diff()

# 判断涨跌方向
data['direction'] = data['price_change'].apply(lambda x: 1 if x > 0 else (-1 if x < 0 else 0))

# 计算OBV
data['obv'] = (data['direction'] * data['Volume']).cumsum()

# 画个图看看
data[['Close','obv']].plot(secondary_y='obv', figsize=(10,6))

你可能遇到的坑

刚开始我照着教科书写代码,结果OBV曲线像心电图一样乱跳。后来发现几个关键点:

  1. 停牌日要处理:港股经常半天交易,得先把这些异常值滤掉
data = data[data['Volume'] > 0]  # 剔除零成交量日
  1. 平盘日的处理:价格没涨没跌时,有些算法用前一日方向,我更喜欢归零
data['direction'] = np.where(data['price_change']==0, 0, data['direction'])
  1. 单位问题:港股成交量单位是"手",A股是"股",记得统一

进阶玩法:OBV的量化策略

单纯看OBV太单调,我常用的几个组合:

黄金交叉策略

# 计算OBV的短期和长期均线
data['obv_ma5'] = data['obv'].rolling(5).mean()
data['obv_ma20'] = data['obv'].rolling(20).mean()

# 生成交易信号
data['signal'] = np.where(data['obv_ma5'] > data['obv_ma20'], 1, -1)

量价背离检测

# 找出价格新高但OBV没跟上的日子
new_high = data['Close'] == data['Close'].rolling(20).max()
obv_not_high = data['obv'] < data['obv'].rolling(20).max()
divergence_days = data[new_high & obv_not_high]

实盘要注意的事

上个月有个客户兴冲冲跑来说用OBV策略赚了钱,结果一问是在比特币上测试的...这里提醒几个实盘要点:

  1. 不同品种参数要调整:A股用(5,20)均线还行,加密货币可能要用(4,18)
  2. 配合其他指标使用:我习惯加上RSI过滤假信号
  3. 注意交易成本:OBV策略通常换手率高,佣金得谈个好价钱(比如我们券商量化客户万一免五)

我的开户用户专属福利

看到这里的都是真爱,说几个只有从我这里开户才能享受到的:

  • 免费提供OBV策略模板(带止损模块的完整版)
  • 专属API文档(我自己写的白话版,比官网好懂)
  • 每月量化沙龙邀请(上次请了私募的量化总监来讲课)

上周刚帮一个客户把他的OBV策略接入了实盘,用的就是我们券商的量化网关。他说终于不用每天手动算指标了,系统自动交易还能睡个安稳觉。

最后说两句心里话

做了这么多年开户经理,见过太多人把量化想得太神秘。其实像OBV这样的基础指标,用Python几十行代码就能跑起来。关键是要迈出第一步——先有个能跑量化交易的账户不是?

如果你也想试试用Python做量价分析,不妨找我聊聊。开户只是开始,后续的策略调试、数据对接这些脏活累活,我们团队都能帮着解决。毕竟在这个行业,能让客户赚钱的服务才是好服务。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐