1 个回答
一、股票量化交易数据质量控制的核心环节
- 数据采集:优先选择交易所官方数据、权威第三方平台(Wind/Bloomberg)或合规开源工具(Tushare/AkShare),需验证数据源的更新频率、覆盖范围及历史完整性。
- 数据清洗:处理缺失值(前向填充/均值填充)、异常值(3σ原则/箱线图筛选)、重复值(去重),统一数据格式(日期/数值类型)。
- 数据验证:交叉验证不同数据源的同一指标(如收盘价)、逻辑验证(成交量非负/涨跌幅计算合理)、时间序列连续性验证(无日期断层)。
- 存储与版本:用数据库(MySQL/PostgreSQL)存储数据,Git管理清洗脚本确保可追溯。
- 监控反馈:设置日常监控(如数据更新警报),定期复盘清洗规则优化。
二、各大软件上的数据质量控制方法
1. Python生态工具
- Pandas:
df.dropduplicates(subset=['code','date']) - 缺失值处理:df.fillna(method='ffill', limit=3)(前向填充最多3次) - 异常值检测:df[(df['price'] > df['price'].quantile(0.995)) | (df['price'] < df['price'].quantile(0.005))]
- Tushare/AkShare:
if result['code'] == 0确认数据获取成功 - 数据长度验证:len(result['data'])是否匹配预期时间范围
- Wind API:
w.wsd("000001.SH", "close", "2023-01-01", "2023-12-31", "adjustflag=1")(前复权)
2. 券商量化平台(聚宽/米筐/优矿)
- 内置工具:使用平台
data.checkintegrity()函数验证数据完整性 - 自定义脚本:编写过滤逻辑(如
df = df[df['volume'] > 0]排除无效成交量) - 复权验证:对比平台前复权与后复权数据,确认分红拆股处理准确
3. 传统交易软件(通达信/同花顺)
- 导出验证:将数据导出为CSV,用Excel条件格式标记异常值(如股价≤0)
- 交叉核对:对比同一股票在不同软件中的收盘价/成交量是否一致
4. SQL数据库
- 缺失值查询:
SELECT FROM stockdata WHERE close IS NULL; - 逻辑错误检查:
SELECT FROM stockdata WHERE open > close * 2 OR high < low; - 去重:
SELECT DISTINCT code, date FROM stock_data;
三、关键注意事项
- 复权优先级:策略回测必须使用前复权数据,避免分红拆股导致的价格断层。
- 时间戳统一:所有数据需对齐北京时间,避免跨时区(如美股数据转换为国内时间)。
- 数据源冗余:核心指标(如收盘价)需至少2个数据源交叉验证,降低错误风险。
- 版本追踪:用Git记录清洗脚本修改,确保回测结果可复现。
---
【低费率交易方案】 要想交易手续费低,需结合您的资金量和渠道选择,以下是具体方案:
一、场内 ETF(适合高频交易、大额资金,需证券账户)
- 核心成本:交易佣金(通常万2.5-万3)+ 单笔最低5元 + 少量经手费,无印花税(ETF)。
- 低费率方案:
- 操作指引:
二、场外基金(适合定投、长期持有)
- 费率分析:申购费折扣不一,短期赎回费较高。
- 优化建议:
三、低费率购买建议(总结)
- 定投/高频:走场内,通过《问金测评》开通VIP低佣账户。
- 注意事项:场外注意持有时间;场内注意流动性。
请 登录 后参与回答