天驭学院 · 教学材料 · Python 量化交易实战
课程讲义
OHLCV特征应对应决策时点。收益率、滚动均值与波动率使用截至当时的数据;未来收益可作标签,但不能与特征混用。
先清洗→算close.pct_change→滚动窗口→标可用时间→分开特征与标签→用前缀不变性检测未来依赖。
close为100/102/101,求两项有效收益;说明shift(-1)放入观察特征为什么危险。
2%与约−0.980392%;shift(-1)将未来行移到当前,可用于事后标签但不能当当时已知特征。小数收益与百分数要区分。
合成收盘100、102、101对应收益缺失、0.02、−0.00980392。若把101行复制一遍,须先去重再计算。SMA2在第二行101、第三行101.5。只有当信号使用时点早于计算数据时才需要额外滞后;不是所有rolling都机械shift一次。
df.shift(-1)可用于事后标签但不能进入特征;不要把缺失的首个收益填成可训练的有效样本。
把配套文件下载到同一目录,安装README列出的依赖,再执行。完整脚本同时输出清洗报告与OHLC重采样,下面不是虚构API。
import pandas as pd
df = pd.read_csv('ohlcv-synthetic.csv')
df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True)
df = df.sort_values('timestamp').drop_duplicates('timestamp')
df = df.set_index('timestamp')
df['return'] = df['close'].pct_change(fill_method=None)
df['sma_3'] = df['close'].rolling(3, min_periods=3).mean()
print(df[['close', 'return', 'sma_3']].head(8))课程数值、价格、账户和案例均为教学假设;固定材料可离线复现。完成标记仅记录学习,不是能力认证、服务批准或收益保证。
本节要点
完成标记仅记录个人学习,不代表能力认证。练习使用教学假设或合成数据,不要求真实开户、入金或交易。