Quantlab开源量化系统升级:底层兼容pybroker,附年化20%的ETF波动率策略。

大概率,会启用pybroker。

底层引擎换成pybroker后,重构完成:

图片

一个很重要的原因,其实咱们现在的框架,与框架之间耦合不多。就是在再平衡环境调用了一下api。因此,咱们换引擎很容易,而且与大家无关,是透明的,对大家无感。

为何要换?

backtrader代码是严谨,但很多方式确实是上个世纪的东西了。python也在进化。

pybroker的调用代码如下——特别简洁,而且所有代码要读完都特别容易:

class Engine:
    def __init__(self, df: pd.DataFrame, config: ProjConfig, global_observer=None):
        self.strategy = StrategyAlgos(df, config, global_observer)
        self.result = None

    def run(self):
        self.result = self.strategy.backtest()
        return self.result

    def analysis(self):
        logger.debug('回测完成,开始分析...')
        self.result.orders.to_csv('orders.csv')
        print(self.result.orders)

还有很多优点,比如天然支持多标的(backtrader要取时间最大的),轮动,机器学习(WFA算法)等。

最大的一个动因是:backtrader要实现再平衡的话,就是有些要买,有些要买,非常麻烦,你得自己来计算哪个先卖,否则cash不够。而pybroker由框架决定, 我只需要给它调仓表就好了(order_target_percent)。

看pybroker的代码——BacktestMixin,先执行cover, sell,然后buy。

图片

pybroker的做空实现

pybroker的逻辑比较简单,就是配置ctx的buy_shares,也就是买入多少股,而最终会拿cash去验证,能成交多少股就成交多少股。买空操作,没有限制,就是记录margin(保证金),也就是说买空的时候,没有验证cash。似乎margin是另一个账户的概念。

pybroker的交易佣金配置:

config_pyb = StrategyConfig(fee_mode=FeeMode.ORDER_PERCENT, fee_amount=config.commission*100)

再强调一次,回测是模糊的正确。

很多同学在纠正的是100股/手,还是现在的100+1。真没必要,回测是验证大逻辑与策略可行性,正确性。

策略产出的信号,最终落实到broker,就是买或卖多少股,然后broker去实际下单。实盘的broker与交易软件的api相关,本身也不会使用无论是pybroker,还是backtrader,都需要封装过。

回测更关心策略的大方向。

pybroker目前看来简洁,符合预期。

图片

长期主义

书中自有黄金屋。

最近读了很多个人成长类的书,有些还是蛮有启发的。

但总结起来,结论可能大家听起来不那么舒服。

就是:成功学就是鸡汤,成长学基本是显学

什么意思呢?

成功是很多因素加和的结果,其中运气占了很多的比重,不可复制,因此已经成功的人,怎么讲都是对的,如何预判,如何卧薪尝胆,就是运气好罢了。

成长为何是显学呢?你要努力,要专注,要长期主义,要延时满足,听起来熟不熟悉?就是道理你都懂的,而且有的还是互相矛盾的,需要用“多重思维模型”来调和呢。

为何说长期主义呢,长期主义有一点就是“磨刀不误砍柴功”。我们一直在调优“AI量化”回测平台,其实就是磨刀的过程。

很多学员着急了,策略呢?

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103810
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注