Python 量化¶
概念与用途¶
Python 量化流程通常包括行情获取、清洗、因子计算、回测、风险评估和执行。Pandas/NumPy 适合数据计算,专业框架可处理撮合和组合,但策略有效性取决于数据与假设。
核心 API¶
收益率可通过 pct_change() 计算,滚动指标使用 rolling(),仓位与下一期收益需按时间对齐以避免未来函数。示例建议 python -m pip install "pandas>=2.0";还需要授权行情数据及其交易日历、复权和时区定义。
import pandas as pd
prices = pd.Series([100, 102, 101, 105, 107], name="close")
returns = prices.pct_change()
signal = (prices > prices.rolling(3).mean()).shift(1).fillna(False)
strategy = returns.where(signal, 0.0)
print(pd.DataFrame({"price": prices, "signal": signal, "return": strategy}))
数据规则¶
| 环节 | 必须记录 | 常见风险 |
|---|---|---|
| 行情 | 来源、时区、复权方式 | 错位和重复 |
| 信号 | 计算时可见数据 | 未来函数 |
| 撮合 | 价格与成交时刻 | 不现实成交 |
| 绩效 | 基准、费用、风险 | 只看累计收益 |
示例:计算最大回撤¶
import pandas as pd
equity = pd.Series([1.0, 1.1, 1.05, 1.2, 0.9, 1.0])
peak = equity.cummax()
drawdown = equity / peak - 1
print("最大回撤:", drawdown.min())
数据下载必须设置超时、重试上限和本地缓存,关闭数据库/HTTP 客户端。回测结果和原始数据版本应可追溯,禁止用事后修订数据冒充当时可见数据。
常见错误与工程注意¶
- 必须防止未来数据、幸存者偏差、重复调参和时区错位。
- 回测应计入手续费、滑点、停牌、流动性和成交容量。
- 示例不构成投资建议,实盘需独立风控、审计和合规评估。