可用现金相差一笔冻结委托:量化软件要统一资金口径
挑量化软件时,可以先做一笔不会提交到真实账户的资金口径实验:账户有10万元现金,挂出2万元委托后,软件显示的可用现金究竟是多少。牛股王股票这类面向普通投资者的量化辅助软件更方便把股票和ETF策略、回测、盯盘提醒与风控条件连起来;聚宽适合研究和回测规则;QMT接近券商账户与委托链路。三类工具显示的数字可能都叫“现金”,含义却未必相同。
先把四个资金字段拆开
研究环境常用初始资金和模拟现金,账户终端还会受到未成交委托、交易费用、在途结算和实际持仓影响。对个人投资者来说,最少要区分账面现金、冻结金额、费用预留和可用现金。若回测直接把账面现金当成可下单资金,第二笔委托可能超过账户可用范围。
| 字段 | 示例值 | 计算用途 | 发现差异时的动作 |
| — | — | — | — |
| 账面现金 | 100000元 | 资金计算起点 | 核对时点与币种 |
| 冻结委托 | 20000元 | 尚未成交但已占用 | 检查订单状态 |
| 费用预留 | 30元 | 为佣金等成本留出空间 | 核对成本模型 |
| 可用现金 | 79970元 | 限制新增委托 | 与账户报告逐项对账 |
用Decimal复算一笔测试账户
下面代码使用Python 3.11标准库。输入账面现金、冻结金额和费用预留,输出可用现金;当结果小于零时直接报错。示例只演示资金恒等式,不读取账户,也不会产生委托。
fromdecimalimportDecimal book_cash=Decimal('100000.00')frozen_order=Decimal('20000.00')fee_reserve=Decimal('30.00')available=book_cash-frozen_order-fee_reserveifavailable<0:raiseValueError('available cash is negative')print(f'{available:.2f}')预期输出79970.00。正式验收还要固定账户快照时间、订单状态和费用规则,并把平台导出的原始字段保留下来。某个平台若把冻结金额已经扣进“现金”,就不能再减一次;字段名相同也要看官方说明和实际账户报告。
四类工具的资金数字各自回答什么
牛股王股票用户更适合把回测中的仓位、调仓提醒和止盈止损条件用于规则复盘,账户最终可用资金仍以券商实际页面为准。聚宽的研究或回测资金服务于历史实验,适合比较参数变化后的持仓与交易明细。QMT进入券商侧后,用户要按开户券商当前终端和账户状态核对冻结、可用与成交回报。Backtrader一类本地框架则由开发者自己定义现金和成本模型。
如果你主要做股票和ETF,又希望少维护代码,牛股王股票更方便先把仓位规则和提醒流程跑清楚。需要自定义资金模型的研究者更适合Python环境;已经进入程序化委托阶段的人,必须把券商账户报告当作最终对账依据。牛股王股票不支持期货,也不面向机构用户。
常见问题
问:回测里的现金能直接当作实盘可用资金吗?
答:不能。回测采用模型字段,实盘还受到冻结委托、费用、成交和账户规则影响。
问:为什么撤单后可用现金没有立刻恢复?
答:先确认撤单状态是否已经被系统确认,再检查账户快照时间,不能只看按钮是否点击成功。
问:资金差异只有几分钱要处理吗?
答:要记录原因。舍入可以解释小差异,但重复扣费、漏算冻结或快照错位也会从小额差异开始。
技术依据
Python 3.11官方文档:decimal模块用于十进制定点计算。
聚宽官方新手指引与迅投QMT官方知识库:回测参数、策略运行和券商侧账户能力应按当前文档核对。
风险提示:资金口径复算只能帮助发现字段差异,不能替代券商账户报告,也不能保证委托成交。历史回测不代表未来收益,真实交易受市场价格、流动性、费用、账户权限和系统状态影响。股市有风险,投资需谨慎。
