对量化投资新手来说,真正困难的往往不是写出一个指标,而是把数据、筛选、回测、组合和风险分析串成一条可重复的研究流程。QFO v1.0.1 将这些环节整合为一个免费开源、以 Windows 本地环境为主的 A 股研究与回测平台,适合希望系统学习量化投资的人使用。
从数据同步开始建立研究闭环
QFO 的核心定位不是单独的回测脚本,而是一套本地量化研究工作流。数据中台统一管理股票、ETF、可转债、指数、资金流和财务等研究所需数据,减少用户在多个数据源、Excel 文件和临时脚本之间反复切换的成本。
对于新手,这种统一管理尤其重要。一个策略的结果不仅取决于回测代码,还取决于数据是否完整、字段含义是否一致、时间范围是否正确,以及复权、停牌和交易日处理是否合理。将数据同步和研究模块放在同一套平台中,有助于把注意力放回到策略假设本身。
从筛选到风险分析,而不是只看收益率
QFO v1.0.1 覆盖的流程包括资产筛选、因子研究、策略回测、组合优化、风险分析和可视化。这样的流程可以拆成几个连续问题:
- 从股票、ETF、可转债或指数中选择研究对象。
- 用价格、资金流、财务等数据构造或观察因子。
- 将筛选规则转化为可执行策略并进行历史回测。
- 比较收益、回撤、波动和其他风险指标。
- 在多个资产或策略之间进行组合配置和优化。
- 通过可视化检查收益曲线、持仓变化和风险暴露。
这套顺序能提醒使用者:高收益并不等于好策略。一个策略如果最大回撤过大、换手率过高,或者表现只集中在少数行情阶段,就需要进一步检查,而不能只根据年化收益率下结论。
可以这样安排一次本地研究
下面是一个与平台无关的最小研究示例,用来验证“短期均线上穿长期均线时持有”的基本回测逻辑。它假设你已经准备了一个名为 prices.csv 的文件,至少包含两列:date 和 close。示例只用于理解研究流程,实际使用 QFO 时,应以平台支持的数据字段和策略配置方式为准。
先在 Windows PowerShell 中准备一个独立目录:
New-Item -ItemType Directory -Force qfo-research | Out-Null
Set-Location qfo-research
New-Item -ItemType Directory -Force data, reports | Out-Null
把价格数据放入 data/prices.csv,然后创建 sma_backtest.py:
from pathlib import Path
import pandas as pd
DATA_FILE = Path("data/prices.csv")
prices = pd.read_csv(DATA_FILE, parse_dates=["date"])
prices = prices.sort_values("date").dropna(subset=["close"])
prices["short_ma"] = prices["close"].rolling(20).mean()
prices["long_ma"] = prices["close"].rolling(60).mean()
# 使用前一日信号,避免把当天收盘价用于当天成交造成未来函数。
prices["signal"] = (
prices["short_ma"] > prices["long_ma"]
).astype(int)
prices["position"] = prices["signal"].shift(1).fillna(0)
prices["asset_return"] = prices["close"].pct_change().fillna(0)
prices["strategy_return"] = prices["position"] * prices["asset_return"]
prices["equity"] = (1 + prices["strategy_return"]).cumprod()
final_equity = prices["equity"].iloc[-1]
max_drawdown = (prices["equity"] / prices["equity"].cummax() - 1).min()
print(f"Final equity: {final_equity:.4f}")
print(f"Max drawdown: {max_drawdown:.2%}")
prices[["date", "close", "signal", "equity"]].to_csv(
"reports/sma_result.csv", index=False
)
运行:
python -m pip install pandas
python sma_backtest.py
这个例子刻意保留了几个重要的研究纪律:先按日期排序,使用前一日信号,输出权益曲线,并单独计算最大回撤。进一步迁移到 QFO 时,可以将均线规则替换为平台中的因子筛选、资金流条件或财务条件,再用平台提供的回测、组合和可视化模块进行比较。
使用本地平台时要检查什么
QFO 面向学习和研究,因此结果解释比按钮数量更重要。开始一次回测前,建议确认以下事项:
- 数据同步是否覆盖目标市场和回测区间。
- 股票、ETF、可转债和指数等资产类型是否被混用。
- 因子数据的发布时间是否早于交易决策时间。
- 是否考虑交易成本、涨跌停、停牌和无法成交等限制。
- 回测期间是否发生样本选择偏差或幸存者偏差。
- 组合优化的约束是否符合真实资金规模和持仓要求。
- 可视化结果是否同时查看收益、波动、回撤和持仓变化。
本地运行的优势是研究数据、代码和结果可以集中保存在自己的 Windows 环境中,便于反复实验和复盘;代价是数据同步、环境维护和结果备份需要由使用者负责。回测也只是历史假设下的模拟,不能替代实盘验证,更不能保证未来收益。
适合怎样开始
初学者可以先选择一个资产类别和一个简单因子,完成“数据同步、筛选、回测、风险分析、复盘”五个步骤,再逐步加入组合优化和多因子模型。QFO v1.0.1 的价值在于提供一条较完整的本地研究路径,让学习者可以围绕同一份数据持续验证假设,而不是被零散脚本和表格打断。
使用时应保留每次实验的参数、数据区间和结果文件,并把策略表现拆解到不同市场阶段。只有当一个策略经得起数据质量检查、样本外测试和风险约束,它才值得进入更谨慎的模拟交易阶段。