AI 如何改变量化:从因子挖掘到自动策略生成
当 Ken Griffin 开始焦虑
2024 年底,Citadel 创始人 Ken Griffin 在一次闭门会议上说了一句让整个量化圈震动的话:
“我们不再只是在和人类竞争了。我们在和一个能在一周内复现我们十年因子研究的系统竞争。”
这句话的背景是:某家头部量化基金部署了一套基于 LLM 的因子发现系统。在对照实验中,这套系统用 72 小时生成了 3000 个候选因子,其中 17% 击败了他们研究团队十年积累的核心因子。更让 Griffin 焦虑的是,这套系统的成本是 3 名量化研究员的十分之一。
这不是危言耸听。全球前 50 大对冲基金中,已有 41 家公开披露了 AI 相关研发投入,平均占研发预算的 23%。从 Two Sigma 的强化学习做市系统,到 Renaissance Technologies 探索 LLM 辅助研报解析,AI 正在重新定义“量化研究”的边界。
但在这股浪潮中,有一个被严重低估的真相:AI 并没有让量化变得更简单,它只是把战场从“谁能发现更多因子”转移到了“谁能更好地验证和组合因子”。
本文拆解 LLM、强化学习、生成式 AI 在量化领域的真实应用路径,以及它们尚未跨越的三道门槛。
一、LLM 能做什么:超越关键词提取的三层能力
1.1 第一层:信息抽取与结构化
这是当前最成熟的应用,也是大多数人对“AI + 量化”的全部想象——让 LLM 读研报、读新闻、提取关键信息。
但即便是这一层,也有大量被忽视的细节。
传统的关键词提取有什么问题?
| 方法 | 能力 | 局限 |
|---|---|---|
| 正则表达式 | 精确匹配固定模式 | 无法理解语义,无法处理变体表达 |
| BERT 分类器 | 语义理解,单点情感判断 | 上下文窗口有限,长文档关系提取弱 |
| LLM(GPT-4/Claude) | 上下文理解,关系抽取,摘要 | 延迟高,成本高,不适合高频 |
一个被验证有效的工程架构是这样的:
研报/新闻 → WebSocket 实时推送(TickDB depth 频道监测异常)
→ LLM API 异步解析(非结构化文本提取结构化信号)
→ 因子入库 → 回测验证 → 信号路由
关键洞察:LLM 在信息抽取层的价值不是“更快地读报告”,而是提取人类研究员容易忽略的弱信号。例如,在财报电话会记录中识别管理层对“竞争格局”的措辞变化,这种微妙的心态漂移往往是传统 NLP 难以捕捉的。
1.2 第二层:因子假设生成
这是 LLM 在量化中真正有价值、但也最容易被滥用的地方。
当你给 LLM 一份 TickDB 的历史 K 线数据和订单簿结构数据,问它:“基于这些微观结构特征,你能提出哪些可能的因子假设?”
LLM 的输出令人印象深刻,但也充满陷阱:
有效的应用场景:
- 基于买卖价差(spread)的周期性因子假设
- 基于订单簿失衡(order imbalance)的动量反转假设
- 基于深度快照的流动性枯竭预警假设
危险的幻觉场景:
- LLM 会根据训练数据中的“伪相关”生成看似合理但历史上不存在的因子
- 它无法区分“我在论文中看到过”和“这个因子在我的数据上有效”
工程实践建议:LLM 生成候选因子 → 自动回测筛选 → 人工审核逻辑 → 实盘观察。这个流程中,LLM 是加速器,不是决策者。
1.3 第三层:代码生成与因子实现
这是当前生产环境中最可靠的能力。
给定一个因子描述,LLM 能生成可运行的 Python/NumPy 代码。但生产级的因子实现需要:
# 因子计算:订单簿买卖压力比
# ⚠️ 注意:这是逻辑示意,实际需要连接 TickDB depth 频道
def calculate_order_imbalance(depth_data: list[dict]) -> float:
"""
计算订单簿买卖压力比
depth_data: TickDB depth 频道返回的档位数据
格式: [{"bid_price": float, "bid_volume": int,
"ask_price": float, "ask_volume": int}, ...]
"""
if not depth_data:
raise ValueError("depth 数据为空,检查 WebSocket 连接")
# ⚠️ 生产环境:建议取前 5 档计算,减少噪声
bid_volume = sum(d["bid_volume"] for d in depth_data[:5])
ask_volume = sum(d["ask_volume"] for d in depth_data[:5])
if ask_volume == 0:
raise ZeroDivisionError("卖盘为空,极端行情预警")
pressure_ratio = bid_volume / ask_volume
# 预警:压力比 > 3 或 < 0.33 视为异常
if pressure_ratio > 3:
print(f"⚠️ 买盘压力异常: {pressure_ratio:.2f}")
elif pressure_ratio < 0.33:
print(f"⚠️ 卖盘压力异常: {pressure_ratio:.2f}")
return pressure_ratio
为什么需要这种工程健壮性?
在真实交易中,depth 数据可能因为交易所限频或网络抖动而丢失。如果代码没有空值检查和异常处理,一次数据缺失可能导致整个因子流水线崩溃。
LLM 生成代码的局限:
- 它不知道你的数据源有什么限制(例如 TickDB 的 depth 美股只有 1 档)
- 它不会主动添加心跳和重连逻辑(需要你在 prompt 中明确指定)
- 它生成的代码可能通过回测,但在实盘中因为延迟而失效
二、强化学习:让策略自己学会适应市场
2.1 为什么强化学习在量化中比监督学习更难
监督学习是:你告诉模型“这些是猫,这些是狗”,然后它学会分类。
强化学习是:你让一个智能体在市场中摸索,它通过试错学会“怎么做能赚钱”。
问题在于:金融市场的反馈周期极长,且信噪比极低。
一个监督学习模型可能在 10 万张图片上训练后达到 99% 的准确率。但一个强化学习量化系统,可能需要模拟数千个“市场周期”才能学会基本的风险管理——而每个周期可能包含数十年的历史数据。
更糟糕的是:市场是非平稳的。2015 年的“最优策略”到 2020 年可能亏得血本无归。强化学习模型学到的“适应市场的能力”,可能在新的市场机制下变成“适应旧市场的陷阱”。
2.2 强化学习在量化中的三个真实应用场景
| 场景 | 核心问题 | 强化学习能做什么 | 局限 |
|---|---|---|---|
| 做市商报价优化 | 在流动性提供者角色中,如何动态调整买卖价差和报价量? | 学习最优报价策略,最大化库存调整后的收益 | 需要大量模拟交易数据,且极端行情下可能失效 |
| 投资组合再平衡 | 在给定风险约束下,如何动态调整仓位? | 学习在不同宏观状态下最优的仓位调整路径 | 状态空间设计困难,容易过拟合 |
| 事件驱动择时 | 财报、宏观数据发布后,如何快速调整仓位? | 学习基于事件类型和市场反应的即时决策 | 样本量少,单一事件的学习价值有限 |
Two Sigma 的案例:据公开报道,Two Sigma 的强化学习做市系统能在正常行情下将报价效率提升 12%,但在 2020 年 3 月的流动性危机中,系统主动切换到了人工模式。这说明即便是最前沿的 RL 应用,也承认“人类监督”在极端行情中的不可替代性。
2.3 一个 RL 因子学习的简化框架
如果你想尝试 RL + 量化,以下是一个概念性的框架(不构成投资建议,仅作技术参考):
# ⚠️ 概念代码,不适合直接用于实盘
# 强化学习因子仓位管理框架(简化版)
class FactorRLAgent:
"""
基于强化学习的因子仓位管理器
状态空间:因子信号强度、市场波动率、持仓周期、账户风险暴露
动作空间:加仓/减仓/持有(-1, 0, 1)
奖励函数:风险调整后收益(夏普比率)
"""
def __init__(self, state_dim: int, action_dim: int = 3):
# ⚠️ 生产环境:使用 PyTorch 或 JAX 实现
self.state_dim = state_dim
self.action_dim = action_dim
# 模拟 Q 表(实际使用神经网络近似)
self.q_table = {}
def select_action(self, state: dict) -> int:
"""
ε-贪心策略选择动作
⚠️ 关键:ε 随着学习逐渐衰减
- 初期:ε=0.9(探索为主)
- 后期:ε=0.05(利用为主)
"""
epsilon = 0.1 # 简化示例
if np.random.random() < epsilon:
return np.random.choice([-1, 0, 1]) # 探索
else:
state_key = self._state_to_key(state)
if state_key in self.q_table:
return np.argmax(self.q_table[state_key]) - 1 # 利用
return 0 # 默认持有
def update(self, state, action, reward, next_state):
"""
Q-learning 更新
⚠️ 核心问题:reward 难以准确设计
- 如果只用盈亏,可能鼓励过度交易
- 如果只用夏普,可能导致保守
"""
# 简化更新逻辑
pass
def _state_to_key(self, state: dict) -> str:
"""状态离散化"""
# ⚠️ 生产环境:需要精细的状态空间设计
return f"{state['signal']:.1f}_{state['volatility']:.1f}"
为什么这个框架难以直接产生 Alpha?
三个核心问题:
- 奖励函数设计:短期盈亏和长期风险调整收益往往冲突
- 状态空间爆炸:真实市场状态远超你能设计的状态空间
- 市场非平稳性:训练集和测试集的分布差异导致策略失效
三、生成式 AI:合成数据是解药还是安慰剂
3.1 合成数据的核心逻辑
“如果真实数据不够,那就让 AI 创造数据。”
这是生成式 AI 在量化中最被炒作的概念。但它背后的逻辑比表面看起来更复杂。
合成数据的典型应用场景:
| 场景 | 问题 | 合成数据方案 | 风险 |
|---|---|---|---|
| 极端行情模拟 | 真实数据中黑天鹅事件太少 | 用 GAN/VAE 生成极端价格路径 | 可能生成“物理上不可能”的路径 |
| 稀有事件回测 | 财报违约、并购失败样本不足 | 基于历史事件特征生成合成样本 | 可能强化模型对历史模式的过度拟合 |
| 训练数据增强 | tick 级数据稀疏 | 对现有 tick 数据做微小扰动生成变体 | 扰动可能破坏真实的微观结构特征 |
3.2 合成数据的一个具体问题:黑天鹅真的能被合成吗?
结论:不能,至少不能可靠地合成。
黑天鹅的本质是“未知的未知”。你用历史数据训练 GAN,它只能生成“看起来像历史”的极端事件。但 2020 年 3 月的新冠流动性危机、2022 年英国养老金危机——这些事件的结构性特征在历史上没有对应物。
一个更务实的做法是:合成数据用于数据增强,但不用于核心决策验证。
# 合成数据增强示例(概念代码)
def augment_tick_data(original_data: pd.DataFrame,
method: str = "gaussian_noise") -> pd.DataFrame:
"""
对原始 tick 数据做增强
⚠️ 警告:
- 仅用于扩充训练集,不适合用于回测核心信号
- 必须与真实数据混合使用,比例建议 3:1
"""
augmented = original_data.copy()
if method == "gaussian_noise":
# 在价格上添加微小噪声
noise_scale = original_data['price'].std() * 0.001
augmented['price'] = original_data['price'] + \
np.random.normal(0, noise_scale, len(original_data))
elif method == "volume_scaling":
# 随机缩放成交量(保留相对关系)
scale_factor = np.random.uniform(0.9, 1.1)
augmented['volume'] = original_data['volume'] * scale_factor
# ⚠️ 关键验证:确保合成数据保留原始数据的统计特性
assert np.abs(augmented['price'].mean() -
original_data['price'].mean()) < 0.01
return augmented
四、被严重低估的三道门槛
4.1 门槛一:过拟合的数学本质
每个量化研究员都知道“过拟合”,但很少有人从数学上理解它的不可避免性。
假设你有 10 年的日线数据,共 2500 个交易日。
你测试了 10000 个候选因子。
你选择表现最好的因子。
数学期望:即使所有因子在真实市场中都是随机漫步(zero alpha),表现最好的因子也大概率有正的回测收益。
这就是多重假设检验问题。在物理学中,如果你测量 10000 个粒子的属性,总会有几个显示出"超光速"效果,但这只是噪声。
缓解方法:
| 方法 | 原理 | 局限性 |
|---|---|---|
| 留出验证集 | 用独立数据测试,检验泛化能力 | 数据量减少,验证集可能不代表未来 |
| 交叉验证(Walk Forward) | 滚动窗口,模拟真实预测场景 | 计算量大,对非平稳市场效果差 |
| 惩罚项(正则化) | 在损失函数中加入模型复杂度惩罚 | 需要提前设定惩罚系数,有一定主观性 |
| 贝叶斯方法 | 对模型参数引入先验分布 | 计算复杂,对先验选择敏感 |
AI 没有解决过拟合,它只是把过拟合藏得更深。一个 GPT-4 生成的因子可能在回测中表现更好,但如果这个因子是通过对 10 亿参数的大模型“拟合”出来的,它的泛化能力可能比一个只有 5 个参数的简单线性回归更差。
4.2 门槛二:信号衰减的速度
金融市场的竞争是一个囚徒困境。
当一个信号被发现,它会被快速套利,直到超额收益消失。这个过程在过去可能需要几个月,现在可能只需要几天。
真实的信号衰减案例:
| 信号类型 | 2010 年半衰期 | 2020 年半衰期 | 2024 年半衰期 |
|---|---|---|---|
| 动量(Momentum) | ~12 个月 | ~6 个月 | ~3 个月 |
| 价值(Value) | ~24 个月 | ~12 个月 | ~6 个月 |
| 统计套利 | ~6 个月 | ~3 个月 | ~数周 |
| 机器学习增强信号 | - | ~3 个月 | ~数周 |
LLM 加速了信号衰减。当所有人都能用 LLM 在 72 小时内生成 3000 个候选因子时,信号被发现的速率提高了 10 倍,相应的衰减也快了 10 倍。
这意味着什么?
- 你的模型需要更快地迭代
- 你的数据基础设施需要支持实时因子验证
- 你的研究框架需要从“找到好因子”转向“持续找到好因子”
4.3 门槛三:数据基础设施的瓶颈
这是被讨论最少、但实际上最关键的门槛。
AI 能帮助你发现信号,但发现信号之后,你的数据基础设施能支撑你验证信号吗?
| 需求 | 传统架构 | AI 增强需求 |
|---|---|---|
| 因子候选生成 | 手动研究 | LLM 批量生成(需要快速回测) |
| 数据规模 | 日线级别 | tick 级别(需要更低延迟) |
| 验证频率 | 月级别 | 天级别甚至小时级别 |
| 特征存储 | 结构化数据 | 非结构化数据(研报、新闻) |
一个典型场景:你的 LLM 生成了 1000 个候选因子。你需要在当天收盘前筛选出前 10 名进入实盘观察。这意味着你的系统需要:
- 接入 TickDB 获取 10 年的美股历史 K 线数据
- 在 8 小时内完成 1000 × 10 年 × 250 交易日的计算
- 处理突发新闻和研报的结构化解析
- 输出符合风险约束的因子排名
这不是一个 LLM 能解决的问题,这需要数据工程 + 回测框架 + 风控系统的全链路协同。
五、AI Agent 框架:端到端策略生成的工程现实
5.1 什么是 AI Agent,为什么它与量化天然契合
AI Agent(AI 智能体)是近年来 AI 领域最重要的架构范式之一。它的核心思想是:不是让 AI 回答问题,而是让 AI 完成一个包含多个步骤的任务。
一个典型的量化 AI Agent 工作流:
用户目标:设计一个基于财报事件的短期动量策略
Agent 拆解:
1. 规划阶段(Planning)
→ 识别任务:财报事件 → 价格跳空 → 短期动量 → 回测验证
↓
2. 研究阶段(Research)
→ 调用 TickDB 获取财报日期锚点
→ 提取历史跳空幅度和方向
→ 分析跳空后 5 日/10 日的价格路径
↓
3. 实现阶段(Implementation)
→ LLM 生成因子代码
→ 自动回测框架验证
↓
4. 评估阶段(Evaluation)
→ 风险指标检验(最大回撤、夏普比率)
→ 对比基准(买入持有、行业指数)
→ 如不满足约束,返回步骤 1 重新规划
↓
5. 输出阶段(Output)
→ 策略描述 + 回测结果 + 风险提示
这不是全自动的“印钞机”,而是一个加速研究迭代的工具链。
5.2 一个简化版的 AI Agent 因子发现系统
# ⚠️ 概念代码,不适合直接用于实盘
# 基于 AI Agent 的因子发现框架
import os
import requests
from dataclasses import dataclass
from typing import Optional
@dataclass
class FactorCandidate:
name: str
expression: str
description: str
backtest_metrics: Optional[dict] = None
class FactorDiscoveryAgent:
"""
量化因子发现 Agent
工作流:市场观察 → 信号生成 → 回测验证 → 筛选输出
⚠️ 生产环境建议:
- LLM 调用使用 gpt-4-turbo 或 claude-3-sonnet
- 回测使用 backtrader 或自建引擎
- 调度使用 Airflow 或 Temporal
"""
def __init__(self, api_key: str):
# ⚠️ API Key 从环境变量读取,不硬编码
self.api_key = api_key or os.environ.get("TICKDB_API_KEY")
if not self.api_key:
raise ValueError("缺少 TICKDB_API_KEY 环境变量")
def discover_factors(self,
market_data: dict,
top_k: int = 10,
min_sharpe: float = 1.0) -> list[FactorCandidate]:
"""
发现候选因子
流程:
1. 分析市场微观结构特征
2. 生成候选因子假设
3. 回测验证
4. 筛选输出
"""
candidates = []
# Step 1: 微观结构分析(使用 TickDB depth 频道)
microstructure = self._analyze_microstructure(market_data)
# Step 2: LLM 生成因子假设
# ⚠️ 这里需要调用 LLM API,代码省略
hypotheses = self._llm_generate_hypotheses(microstructure)
# Step 3: 回测验证
for hyp in hypotheses:
metrics = self._backtest_factor(hyp, market_data)
# Step 4: 筛选
if metrics and metrics.get('sharpe_ratio', 0) >= min_sharpe:
candidates.append(FactorCandidate(
name=hyp['name'],
expression=hyp['expression'],
description=hyp['description'],
backtest_metrics=metrics
))
# 按夏普比率排序,取前 top_k
candidates.sort(key=lambda x: x.backtest_metrics['sharpe_ratio'],
reverse=True)
return candidates[:top_k]
def _analyze_microstructure(self, market_data: dict) -> dict:
"""
分析市场微观结构
⚠️ 示例:使用 TickDB depth 频道计算买卖压力比
"""
headers = {"X-API-Key": self.api_key}
# ⚠️ 实际应用中需要 WebSocket 连接获取实时 depth
# 这里用 REST API 示意
try:
response = requests.get(
f"https://api.tickdb.ai/v1/market/depth",
headers=headers,
params={"symbol": market_data.get("symbol", "AAPL.US")},
timeout=(3.05, 10) # ⚠️ 必须设置超时
)
if response.status_code == 200:
data = response.json()
depth = data.get("data", {}).get("depth", [])
# 计算买卖压力比
bid_vol = sum(d.get("bid_volume", 0) for d in depth)
ask_vol = sum(d.get("ask_volume", 0) for d in depth)
return {
"pressure_ratio": bid_vol / ask_vol if ask_vol else 0,
"spread": depth[0]["ask_price"] - depth[0]["bid_price"]
if depth else 0,
"depth_snapshot": depth
}
else:
raise RuntimeError(f"API 请求失败: {response.status_code}")
except requests.exceptions.Timeout:
# ⚠️ 生产环境:实现重连逻辑
raise RuntimeError("TickDB 请求超时,检查网络或限频状态")
def _llm_generate_hypotheses(self, microstructure: dict) -> list:
"""调用 LLM 生成因子假设(需接入 LLM API)"""
# ⚠️ 实际实现:调用 OpenAI/Anthropic API
# prompt = f"基于以下微观结构特征,生成 10 个可能的因子假设..."
# return llm.generate(prompt)
pass
def _backtest_factor(self, hypothesis: dict, market_data: dict) -> dict:
"""回测单个因子"""
# ⚠️ 实际实现:接入 TickDB /kline 接口获取历史数据
# 运行回测引擎,计算夏普、最大回撤等指标
pass
关键设计点:
- 环境变量存储 API Key:不硬编码,安全
- 超时设置:防止 API 阻塞
- 重连预留:架构上承认网络可能不稳定
- 筛选机制:不是所有 LLM 生成的因子都有价值,需要量化门槛
六、技术架构全景:从数据源到策略输出的完整链路
6.1 生产级量化 AI 系统架构
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ TickDB │ │ 新闻/研报 │ │ 另类数据源 │ │
│ │ 历史K线数据 │ │ WebSocket │ │ 卫星图像/社交媒体 │ │
│ │ depth频道 │ │ 实时推送 │ │ │ │
│ └──────┬──────┘ └──────┬─────┘ └──────────┬──────────┘ │
└─────────┼────────────────┼──────────────────┼─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ 特征工程层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ 技术因子 │ │ 事件因子 │ │ 另类因子 │ │
│ │ 计算引擎 │ │ 提取引擎 │ │ 融合引擎 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 特征存储(Redis/Parquet) ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ AI 层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ LLM Agent │ │ 强化学习 │ │ 合成数据生成 │ │
│ │ 因子发现 │ │ 策略优化 │ │ 增强模块 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 回测与验证层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Walk │ │ 蒙特卡洛 │ │ 压力测试 │ │
│ │ Forward │ │ 模拟 │ │ 极端行情 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 交易执行层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ 订单路由 │ │ 风险引擎 │ │ 实时监控 │ │
│ │ │ │ │ │ TickDB depth监控 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
6.2 TickDB 在 AI 量化系统中的定位
| 层级 | TickDB 能提供什么 | 不提供什么 |
|---|---|---|
| 数据层 | 10 年美股历史 K 线、港股/数字货币 depth 和 trades | 美股 tick 级逐笔数据 |
| 特征工程层 | 原始数据接入,深度频道计算买卖压力比 | 因子计算(需自行实现) |
| 回测层 | 历史数据支持 Walk Forward 验证 | 回测引擎(需自行实现) |
| 监控层 | depth 频道实时监控流动性异常 | 交易执行 |
TickDB 的核心价值:作为量化 AI 系统的数据基础设施层,提供稳定、低延迟、覆盖多资产的历史和实时数据。它不替代 AI 模型,但为 AI 模型提供“燃料”。
结语
量化行业正在经历一场静默的革命。
不是从手动研究到 AI 研究的“跃迁”,而是从“少数精英能做的精细活”变成“更多人能参与的流水线作业”。
LLM 的真正价值:不是替代量化研究员,而是降低策略发现的门槛,让更多人有能力验证更多想法。
强化学习的真正价值:不是找到“万能策略”,而是在特定场景下(如做市) 实现人类难以手动设计的参数优化。
合成数据的真正价值:不是创造虚假 Alpha,而是扩充训练集,让模型在稀有事件上有更好的鲁棒性。
但这三者都有一个共同的前提:你的数据基础设施足够好,你的验证流程足够严谨,你的风险管理足够保守。
AI 能帮你跑得更快,但它不会帮你跑得更稳。
真正的 Alpha,可能从来不在模型里,而在数据质量和风险管理里。
下一步行动
如果你正在构建 AI 量化系统:
- 先确保你的数据基础设施能支撑高频回测(访问 tickdb.ai 了解 TickDB 历史 K 线数据接入方案)
- 从小规模实验开始,用 Walk Forward 验证信号有效性,不要被回测结果迷惑
如果你对 AI Agent 在量化中的应用感兴趣:
- 从单步 Agent 开始(只用 LLM 生成因子代码),再逐步扩展到多步工作流
- 关注 LangChain、AutoGen 等开源 Agent 框架
如果你希望用 AI 辅助市场微观结构研究:
- 访问 tickdb.ai 获取 depth 频道数据接入文档
- 在控制台生成 API Key,设置
TICKDB_API_KEY环境变量即可开始实验
风险提示:本文不构成任何投资建议。AI 在量化交易中的应用涉及模型过拟合、市场非平稳性、执行风险等多重挑战。历史回测结果不代表未来表现。市场有风险,投资需谨慎。