QFO v1.0.1:把 A 股量化研究流程搬到本地电脑

2026-08-30 29 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

对量化投资新手来说,真正困难的往往不是写出一个指标,而是把数据、筛选、回测、组合和风险分析串成一条可重复的研究流程。QFO v1.0.1 将这些环节整合为一个免费开源、以 Windows 本地环境为主的 A 股研究与回测平台,适合希望系统学习量化投资的人使用。

从数据同步开始建立研究闭环

QFO 的核心定位不是单独的回测脚本,而是一套本地量化研究工作流。数据中台统一管理股票、ETF、可转债、指数、资金流和财务等研究所需数据,减少用户在多个数据源、Excel 文件和临时脚本之间反复切换的成本。

对于新手,这种统一管理尤其重要。一个策略的结果不仅取决于回测代码,还取决于数据是否完整、字段含义是否一致、时间范围是否正确,以及复权、停牌和交易日处理是否合理。将数据同步和研究模块放在同一套平台中,有助于把注意力放回到策略假设本身。

从筛选到风险分析,而不是只看收益率

QFO v1.0.1 覆盖的流程包括资产筛选、因子研究、策略回测、组合优化、风险分析和可视化。这样的流程可以拆成几个连续问题:

  1. 从股票、ETF、可转债或指数中选择研究对象。
  2. 用价格、资金流、财务等数据构造或观察因子。
  3. 将筛选规则转化为可执行策略并进行历史回测。
  4. 比较收益、回撤、波动和其他风险指标。
  5. 在多个资产或策略之间进行组合配置和优化。
  6. 通过可视化检查收益曲线、持仓变化和风险暴露。

这套顺序能提醒使用者:高收益并不等于好策略。一个策略如果最大回撤过大、换手率过高,或者表现只集中在少数行情阶段,就需要进一步检查,而不能只根据年化收益率下结论。

可以这样安排一次本地研究

下面是一个与平台无关的最小研究示例,用来验证“短期均线上穿长期均线时持有”的基本回测逻辑。它假设你已经准备了一个名为 prices.csv 的文件,至少包含两列:dateclose。示例只用于理解研究流程,实际使用 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 的价值在于提供一条较完整的本地研究路径,让学习者可以围绕同一份数据持续验证假设,而不是被零散脚本和表格打断。

使用时应保留每次实验的参数、数据区间和结果文件,并把策略表现拆解到不同市场阶段。只有当一个策略经得起数据质量检查、样本外测试和风险约束,它才值得进入更谨慎的模拟交易阶段。


相关推荐