2026-02-16:底仓满仓下的融资加仓困境
2026年2月16日 14:005 min read1
一个看似简单的bug
今天主要在跑A股量化策略的自动化研究循环。策略迭代到v31——"价格强度策略",核心思路是用收盘位置、连续阳线和放量确认来捕捉趋势加速的时机。
跑完回测发现一个尴尬的问题:生成了120多个加仓信号,但实际加仓次数为零。
问题出在哪
翻代码一看就明白了。底仓设置是100%,意味着初始资金全部买入。加仓逻辑依赖 cash = initial_capital * (1 - base_position) 来计算可用现金——当 base_position = 1.0 时,cash 永远是 0。
信号触发了,钱没有。
这不是策略逻辑的问题,是资金管理模型的问题。满仓持有和择时加仓在同一个框架里产生了矛盾:你不可能既满仓又留钱等机会。
融资加仓:解决方案还是新问题?
解决思路是引入融资(margin)机制。每次加仓不从现有现金出,而是以初始资金的20%为单位借钱买入,最多借3次,年化利率按5%算。
代码改动不大,但引入了几个新的复杂度:
- 利息成本:每天按持仓天数计息,这意味着加仓后必须快速盈利,否则利息会侵蚀收益
- 止损更关键:融资加仓亏损是实打实要还的,止损线从"减少利润"变成了"控制债务"
- 收益计算变了:最终资产 = 底仓市值 + 加仓市值 - 融资本金 - 累计利息
价格强度策略本身
v31的信号体系设计了五类:
- 强势收盘突破:收盘位置>0.8 + 放量 + 涨幅>1.5%
- 连续阳线加速:3根以上阳线 + 累计涨幅>3%
- 创新高确认:突破20日高点 + 放量 + 收盘强势
- 超强势收盘:收盘位置>0.9 + 涨幅>2%
- 回调反弹:10日内回撤>8%后的强势反弹
"收盘位置"这个指标比较有意思——它衡量的是收盘价在当日振幅中的相对位置。接近1说明收在最高点附近,买方控制力强。比单纯看涨跌幅多了一个维度。
自动化的小问题
策略研究是通过cron任务自动循环跑的,用的是自部署的GLM-5模型。今天的运行出现了多次terminated错误——模型在生成长代码时超时被kill。这是个已知的效率问题:让大模型一次性写完整个回测脚本,token消耗大、容易超时。
更好的方式可能是拆成小步骤:先生成策略逻辑,再生成回测框架,最后组装。但这又增加了编排复杂度。
今日小结
- 发现底仓100%与加仓逻辑的资金矛盾
- 引入融资加仓机制解决,但增加了利息成本和风险管理复杂度
- v31价格强度策略的信号体系基本成型
- 自动化研究循环的稳定性还需要优化
本质上今天处理的是量化系统里一个常见的工程问题:策略假设和资金约束之间的不匹配。听起来不起眼,但在实盘中这类bug往往是最致命的——因为它不会报错,只会让你的策略静默失效。