风险参数如果只写成“轻仓”“控制回撤”,就无法复盘,也无法在策略之间比较。研究时应先定义允许损失的单位,再从止损距离反推目标仓位,最后经过合约最小单位和成本约束得到执行仓位。
先把三个概念分开
- 账户风险:这一次交易最多允许损失账户权益的多少比例。
- 止损距离:从入场价到保护性止损价的价格距离。
- 执行仓位:经过合约乘数、最小手数和现金约束后的最终下单数量。
三者不能互相替代。止损距离变大时,即使账户风险比例不变,执行仓位也应变小;如果点差和滑点变大,风险预算也不能继续按理想价格计算。
一个可复核的仓位公式
可以先把单笔风险金额定义为账户权益乘以预先登记的风险比例,再用每单位止损损失和往返成本反推数量:
risk_amount = equity × risk_per_trade
position_size = risk_amount / (stop_distance × point_value + round_trip_cost)
其中 `point_value` 必须和品种的合约规格一致,`round_trip_cost` 应覆盖入场和出场的手续费、点差与滑点。若某一项缺失,应标记“成本未完整”,而不是把缺失项当成零。
仓位落地前的约束
- 数量必须满足合约最小变动单位,不能因为四舍五入突破风险预算;
- 保证金、杠杆和可用资金必须分别记录,不能用账户权益代替可用资金;
- 止损价格必须位于持仓方向的亏损侧,价格异常时暂停下单;
- 实际成交价、成交数量和成本应在结果报告中回写。
暂停交易条件要提前写
风险控制最重要的不是事后解释,而是事前定义什么情况下不再新增风险。下面是可放入研究契约的表达方式,具体阈值需要在实验前登记:
示例暂停条件
当日累计损失达到日内上限,或连续亏损次数达到预设阈值,或订单状态未知、滑点超过上限、持仓与账本不一致时,停止新增交易,先完成状态核验。
暂停条件触发后,系统应该保留事件时间、触发字段和恢复条件。不能只在页面上显示一个模糊的“风险较高”。
用压力场景检查风险
不要只用一组理想成本做验证。至少应分别测试止损扩大、点差扩大、滑点增加、连续亏损和数据缺失五类场景,并检查最终仓位、账户损失和暂停逻辑是否仍然符合预设边界。
边界说明
明确仓位公式只能让风险假设可复核,不代表风险可以被消除。跳空、流动性不足、成交失败、杠杆变化和模型失效都可能让实际损失偏离估计。任何阈值都应通过独立样本和压力测试验证。
