成本与风控 / RISK CONTROL

仓位和单笔风险:先定义能承受的损失

仓位不是“有多少资金就下多少单”,而是由账户风险、止损距离、合约乘数和成交成本共同决定的执行结果。

风险参数如果只写成“轻仓”“控制回撤”,就无法复盘,也无法在策略之间比较。研究时应先定义允许损失的单位,再从止损距离反推目标仓位,最后经过合约最小单位和成本约束得到执行仓位。

先把三个概念分开

  1. 账户风险:这一次交易最多允许损失账户权益的多少比例。
  2. 止损距离:从入场价到保护性止损价的价格距离。
  3. 执行仓位:经过合约乘数、最小手数和现金约束后的最终下单数量。

三者不能互相替代。止损距离变大时,即使账户风险比例不变,执行仓位也应变小;如果点差和滑点变大,风险预算也不能继续按理想价格计算。

一个可复核的仓位公式

可以先把单笔风险金额定义为账户权益乘以预先登记的风险比例,再用每单位止损损失和往返成本反推数量:

risk_amount = equity × risk_per_trade
position_size = risk_amount / (stop_distance × point_value + round_trip_cost)

其中 `point_value` 必须和品种的合约规格一致,`round_trip_cost` 应覆盖入场和出场的手续费、点差与滑点。若某一项缺失,应标记“成本未完整”,而不是把缺失项当成零。

仓位落地前的约束

  • 数量必须满足合约最小变动单位,不能因为四舍五入突破风险预算;
  • 保证金、杠杆和可用资金必须分别记录,不能用账户权益代替可用资金;
  • 止损价格必须位于持仓方向的亏损侧,价格异常时暂停下单;
  • 实际成交价、成交数量和成本应在结果报告中回写。

暂停交易条件要提前写

风险控制最重要的不是事后解释,而是事前定义什么情况下不再新增风险。下面是可放入研究契约的表达方式,具体阈值需要在实验前登记:

示例暂停条件

当日累计损失达到日内上限,或连续亏损次数达到预设阈值,或订单状态未知、滑点超过上限、持仓与账本不一致时,停止新增交易,先完成状态核验。

暂停条件触发后,系统应该保留事件时间、触发字段和恢复条件。不能只在页面上显示一个模糊的“风险较高”。

用压力场景检查风险

不要只用一组理想成本做验证。至少应分别测试止损扩大、点差扩大、滑点增加、连续亏损和数据缺失五类场景,并检查最终仓位、账户损失和暂停逻辑是否仍然符合预设边界。

边界说明

明确仓位公式只能让风险假设可复核,不代表风险可以被消除。跳空、流动性不足、成交失败、杠杆变化和模型失效都可能让实际损失偏离估计。任何阈值都应通过独立样本和压力测试验证。