Agent Lab 支持的 Built-in 策略
重要声明:策引提供策略研究、模拟组合与长期观察工具。平台不提供投资建议,实验结果只反映历史模拟行为。真实账户中的决策与风险由用户自行判断和承担。
Agent Lab 的策略配置有两种互斥形态,一次实验只能二选一:
| 形态 | 含义 |
|---|---|
| Supported built-in 配置 | 通过服务端策略标识符 + 结构化参数,选择策引已有的内置策略能力。它不是任意代码,不含源代码、模块路径或可执行内容。 |
| Strategy DSL 配置 | 开放的组合式规则描述契约(strategy_definition),用于表达新的、透明的规则图。 |
本文只列出 Agent Lab 支持的 built-in 表面(allowlist)。内部引擎的策略类远多于这里的清单,不在清单里的策略名会被校验直接拒绝,不要凭 Engine 内部实现猜测或发明名字。
选择路径
研究意图
-> 已有 supported built-in 是否忠实实现该行为?
Yes -> 使用 built-in 结构化配置
No -> Strategy DSL 能否忠实表达?
Yes -> 使用 DSL
No -> UNSUPPORTED / 衍生分析
当 built-in 恰好匹配用户要研究的行为时,优先使用 built-in;不要把已有能力硬塞进 DSL 近似。当用户要定义新的透明规则时,使用 DSL。
支持的 Built-in 清单
BuyHoldStrategy(交易策略)
- 意图:全窗口重复 BUY 权限(repeated BUY permission)。资金策略决定每次是否有可用现金执行买入。这是经典定投(DCA)的交易侧。
- 参数:无。
- 允许的资金策略搭配:
FixedInvestmentStrategy。 - 示例:见下方经典 DCA(定投)。
FixedInvestmentStrategy(资金策略)
- 意图:周期性资金投入(月度或年度),决定定投的现金节奏与单次金额。
- 参数(结构化值,缺省时使用引擎默认值):
| 参数 | 说明 |
|---|---|
initial_capital | 初始资金(数值,> 0) |
investment_amount | 每次定投金额(数值,> 0) |
investment_frequency | 定投频率:"y" 年度 / "m" 月度(枚举,区分大小写) |
percents | 单个标的的最大仓位百分比,大于 0 且不超过 100(0 < percents <= 100) |
fund_val_start | 兼容参数(legacy):Engine 契约接受该字段,#158 经典示例使用 100。当前 Engine 的现金流调整净值/XIRR 口径并不读取它——不要把该字段当作可研究参数来解释。 |
- 允许的交易策略搭配:
BuyHoldStrategy。
MomentumRotationStrategy(交易策略)
- 意图:按动量周期在固定候选标的中轮动持有动量最强的资产。用于验证 built-in 路径是通用能力,而不是定投特例。
- 参数:
| 参数 | 说明 |
|---|---|
momentum_period | 动量计算周期(天),默认 21 |
rebalance_frequency | 再平衡频率:"d" 每日 / "w" 每周 / "m" 月度(枚举,区分大小写) |
本页只列出 Agent Lab 当前公开的参数表面。未列出的参数名(包括引擎内部 支持的其它参数)会在校验阶段以
Unknown parameter拒绝,请勿凭 Engine 内部实现补参数。
- 允许的资金策略搭配:
PercentCapitalStrategy。
PercentCapitalStrategy(资金策略)
- 意图:按总资产百分比决定单标的仓位上限,是动量轮动在正式产品中的既有资金搭配。
- 参数:
| 参数 | 说明 |
|---|---|
initial_capital | 初始资金(数值,> 0) |
percents | 单个标的的最大仓位百分比,大于 0 且不超过 100(0 < percents <= 100) |
- 允许的交易策略搭配:
MomentumRotationStrategy。
Built-in 配置形态
Built-in 形态与 DSL 形态共用同一套 envelope(name、symbols、start_date、end_date、currency、market、commission、update_time):
{
"name": "QQQ 月度定投实验",
"description": "经典月度定投 + 买入持有",
"symbols": [{ "symbol": "QQQ" }],
"start_date": "2015-01-01",
"end_date": "2025-12-31",
"currency": "USD",
"market": "US",
"commission": 0.0001,
"strategy": { "name": "BuyHoldStrategy", "params": {} },
"capital_strategy": {
"name": "FixedInvestmentStrategy",
"params": {
"initial_capital": 100000,
"investment_amount": 1000,
"investment_frequency": "m",
"percents": 95,
"fund_val_start": 100
}
}
}
规则:
strategy_definition与strategy + capital_strategy只能出现一个;两者同时出现、都不出现、只出现一半都会被拒绝。strategy.name/capital_strategy.name必须是本页清单中的名字;参数是结构化值(字符串、布尔、数字等),不是代码。- 搭配必须符合本页的 pairing 表;未知策略、未开放策略都会在
validate_strategy_config阶段被拒绝,而不是等到实验失败。 - 参数表面是封闭的:
params里出现本页表格之外的参数名(例如investment_amount拼成investment_amout)会以Unknown parameter在校验阶段拒绝——它不会像额外字段那样被静默忽略,实验也不会带着引擎默认值"看似成功"地跑完。 - 已声明参数的值约束(枚举、
gt/ge/lt/le数值边界、基本类型)也在校验阶段生效,例如investment_amount: -1000或percents: 101会直接失败。
经典 DCA(定投)
经典定投 = BuyHoldStrategy + FixedInvestmentStrategy:
BuyHoldStrategy:持续给出 BUY 权限(repeated BUY),由资金策略决定有没有钱执行;FixedInvestmentStrategy:按investment_frequency周期性注入现金(月/年),investment_amount决定每次金额。
不要用 ordinary DSL 的 always-true 买入条件来模拟定投。ordinary DSL 使用 B/H 持仓状态机:
EMPTY + true -> BUY
HOLD + true -> HOLD
因此 always-true 条件只能买一次并持续持有,无法表达后续定投加仓。定投/定期投入 + 买入持有,请使用 supported built-in 路径。
明确的排除范围
以下内容在 Agent Lab 中不可用,会校验失败:
FileBasedStrategy与任意文件驱动的策略;- AI / 自主 LLM 运行时策略(例如
AITraderAgentStrategy); - 依赖某个正式组合私有文件、secret 或外部状态的策略;
- 任何动态 class / module 路径;
- 任意可执行代码 / Python / JavaScript / Pine;
- 本页清单之外的一切策略名(包括引擎内部存在的其它 CODE 策略)。
校验成功只表示“当前契约支持且可执行”,不代表收益、稳健或推荐。