问题描述
解决方案
在量化交易策略设计中,按账户资金比例下单(Percentage Sizing)和按固定金额下单(Fixed Value Sizing)是两种最常见的资金管理(Position Sizing)方式。它们的核心区别在于仓位大小是否随账户净值的变化而动态调整。
以下是这两种方式的详细对比及在 QMT 平台中的应用说明:
1. 核心逻辑区别
按账户资金的一定比例下单 (Percentage Sizing)
- 定义:每次交易的金额是账户总资产(通常是现金+持仓市值)的一个固定百分比。
- 计算公式:
下单金额 = 当前账户总资产 × 设定比例 - 特点(复利效应):
- 盈利时:随着账户资金增长,下单金额会自动增加,从而放大收益(复利增长)。
- 亏损时:随着账户资金缩水,下单金额会自动减少,从而降低风险暴露,起到一定的“自我保护”作用。
- 适用场景:趋势跟踪策略、长期资产配置、希望实现复利增长的策略。
按固定金额下单 (Fixed Value Sizing)
- 定义:无论账户总资产是多少,每次交易都使用一个预设的固定金额(例如每次买入 1 万元)。
- 计算公式:
下单金额 = 预设固定值 - 特点(单利效应):
- 盈利时:账户增长了,但仓位没有增加,资金利用率会逐渐降低(除非人工调整固定额度)。
- 亏损时:账户缩水了,但下单金额不变,导致该笔交易占总资金的比例上升,风险敞口相对变大。
- 适用场景:网格交易(Grid Trading)、均值回归策略、测试策略逻辑(排除资金管理干扰)、资金规模较小且固定的初期阶段。
2. 举例说明
假设初始资金为 100,000 元,策略要求每次开仓。
-
场景 A:按 10% 比例下单
- 第一笔交易:买入金额 = 100,000 × 10% = 10,000 元。
- 假设第一笔盈利 5,000 元,账户变为 105,000 元。
- 第二笔交易:买入金额 = 105,000 × 10% = 10,500 元(仓位自动增加)。
-
场景 B:按固定 10,000 元下单
- 第一笔交易:买入金额 = 10,000 元。
- 假设第一笔盈利 5,000 元,账户变为 105,000 元。
- 第二笔交易:买入金额 = 10,000 元(仓位保持不变)。
3. QMT 平台中的 API 对应
在 QMT 的 Python API 中,这两种方式有对应的专用函数:
(1) 按比例下单的函数
order_percent(stockcode, percent, ...)- 含义:发送一个等于目前投资组合价值(市值+现金)一定百分比的买/卖单。
- 示例:
order_percent('600000.SH', 0.1, ContextInfo, 'account_id')表示买入占总资产 10% 的浦发银行。
order_target_percent(stockcode, tar_percent, ...)- 含义:调整仓位,使其市值达到总资产的指定比例。如果当前持有 5%,目标是 10%,则会自动买入差额部分。
(2) 按固定金额下单的函数
order_value(stockcode, value, ...)- 含义:使用指定的金额买入/卖出股票。
- 示例:
order_value('600000.SH', 10000, ContextInfo, 'account_id')表示买入 1 万元的浦发银行。
order_target_value(stockcode, tar_value, ...)- 含义:调整仓位,使其市值达到指定的固定金额。
4. 总结对比表
| 维度 | 按资金比例下单 | 按固定金额下单 |
|---|---|---|
| 资金增长模式 | 复利(滚雪球式增长) | 单利(线性增长) |
| 风险特征 | 亏损时自动减仓,风险相对恒定 | 亏损时仓位占比变大,风险相对增加 |
| 资金利用率 | 较高,随净值动态调整 | 随净值增加而降低 |
| 计算复杂度 | 需获取账户总资产实时数据 | 简单,无需账户总资产数据 |
| QMT 常用函数 | order_percent / order_target_percent |
order_value / order_target_value |
Q&A
Q: 在回测中,为什么按比例下单通常比按固定金额下单的最终收益更高?
A: 如果策略本身是正期望的(能盈利),按比例下单利用了复利效应。随着盈利累积,本金增加,后续的下单金额也随之增加,从而放大了总收益。而按固定金额下单在资金增长后没有增加投入,导致资金利用率下降,收益增长呈线性。
Q: QMT 中的 order_percent 是按可用资金的比例还是总资产的比例?
A: 根据 QMT 文档,order_percent 通常是基于**目前投资组合价值(市场价值和目前现金的总和)**的百分比,而不仅仅是可用现金。这意味着它是基于账户总权益来计算仓位的。
Q: 什么时候应该选择按固定金额下单?
A: 当你进行网格交易(需要每格买卖固定数量或金额以赚取差价)、或者你的策略处于验证阶段(不希望资金管理干扰对策略胜率的判断)、或者账户资金规模非常大导致按比例下单会造成过大的市场冲击成本时,选择按固定金额下单更为合适。