天驭学院 · 教学材料 · Python 量化交易实战
課程講義
数据清洗不是让每行都通过,而是显式隔离无法解释的输入。重复时间、坏OHLC、缺失或非有限数值应分别计数,不能静默删除后宣称无异常。
下载脏CSV→保留原副本→跑清洗→核对有效/重复/隔离→查看异常原因→保存清洗哈希与特征表。
复现240有效、1重复、3隔离;解释若同时间两行内容不同,为什么不能随便留最后一行。
冲突重复需核来源和版本,可隔离而非任意覆盖;计数应覆盖每条输入。补零或回填未来价格会制造行情,不能作为修复。
合成收盘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))课程数值、价格、账户和案例均为教学假设;固定材料可离线复现。完成标记仅记录学习,不是能力认证、服务批准或收益保证。
数据清洗不是让每行都通过,而是显式隔离无法解释的输入。重复时间、坏OHLC、缺失或非有限数值应分别计数,不能静默删除后宣称无异常。
按題設保存成果、核對參考結果後填寫自評。勾選不是自動批改或能力認證。
完成标记仅记录个人学习,不代表能力认证。练习使用教学假设或合成数据,不要求真实开户、入金或交易。