3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
关于您在 JoinQuant(聚宽)平台使用 subportfolio(子账户)时遇到的问题,根据官方 API 文档,解答如下:
subportfolios 的配置与修改时机是的,set_subportfolios 只能在 initialize 函数中调用。
set_subportfolios 用于初始化或者修改 subportfolios 的配置,只能在 initialize 中调用,且每个 SubPortfolioConfig 中 cash 的和应该等于总的初始资金。initialize 函数在整个生命周期中只执行一次。即使您修改了代码,触发了 after_code_changed,也不能在 after_code_changed 中调用 set_subportfolios 来增加新的子账户或重新分配初始资金结构。如果必须增加新的子账户,通常只能重新创建一个模拟盘。after_code_changed 中)使用 transfer_cash(from_pindex, to_pindex, cash) 函数来实现子账户间的资金划转。如果在策略运行中途(模拟盘或实盘)有外部资金转入或转出,需要使用 inout_cash 函数来将其体现在 subportfolios 中。
inout_cash(cash, pindex=0)
cash:转入或转出的金额。正数表示入金(增加资金),负数表示出金(减少资金)。pindex:指定子账户的序号(从 0 开始)。例如,要给第二个子账户追加资金,设为 pindex=1。inout_cash 后,当日的出入金会从当日开始记入成本,并用于计算收益。也就是说,当日结束计算收益时的本金会自动包含这笔追加的资金,从而保证收益率计算的准确性。示例代码:
# 假设中途向默认子账户(pindex=0)追加了 100,000 元
inout_cash(100000, pindex=0)
(注:根据聚宽官方公告,一创聚宽实盘接口已于 2023 年 12 月 29 日停止维护,但上述 inout_cash 的逻辑在聚宽的模拟交易和支持的其他环境中依然适用。)