vnpy使用初体验,从代码运行,导入csv数据,回测及参数调优

数据我导入数据库了,setting是配置好的,直接就可以使用了!

图片

直接运行main.py即可:

图片

主界面长这样:

图片

通过“功能”菜单打开“回测”界面:

图片

点击回测,就可以运行策略啦:

经典的DualTrust策略,年化19.81%,这是基于分钟线的操作。

图片

如下是vnpy内置带的策略,后续我会补充:

图片

仔细对比下来,vnpy有一个缺点——写策略特别麻烦,为了完美还原和兼容实盘的逻辑,就是tick是一个一个到达的逻辑,它甚至没有向量化计算指标,每个值是数据到达后现算的。

比如, 以dualthrast策略为例,要计算14天的max_high。

它其实是自己递归着算的

last_bar = self.bars[-2]

if last_bar.datetime.date() != bar.datetime.date():
    if self.day_high:
        self.day_range = self.day_high - self.day_low
        self.long_entry = bar.open_price + self.k1 * self.day_range
        self.short_entry = bar.open_price - self.k2 * self.day_range

    self.day_open = bar.open_price
    self.day_high = bar.high_price
    self.day_low = bar.low_price

    self.long_entered = False
    self.short_entered = False
else:
    self.day_high = max(self.day_high, bar.high_price)
    self.day_low = min(self.day_low, bar.low_price)

这会带出一个问题,如果结果不好,到底是策略不行,还是策略有bug。

我们应该把精力专注在策略和因子的研发上,这也就是Quantlab的初心,基本上就是低代码或者零代码写策略,只要你的因子计算没写错,信号天达没写错,策略就是对的!

由于vnpy最初是做期货实盘接口起家,后面补充的backtesting,所以backtesting只是一个补充。

vnpy双均线的核心代码:

1、on_bar的时候,计算双均线指标(在实盘的时候,数据是依次到达和合成的,确实需要每次都计算一下最新的指标)。

fast_ma = am.sma(self.fast_window, array=True)
self.fast_ma0 = fast_ma[-1]
self.fast_ma1 = fast_ma[-2]

slow_ma = am.sma(self.slow_window, array=True)
self.slow_ma0 = slow_ma[-1]
self.slow_ma1 = slow_ma[-2]

cross_over = self.fast_ma0 > self.slow_ma0 and self.fast_ma1 < self.slow_ma1
cross_below = self.fast_ma0 < self.slow_ma0 and self.fast_ma1 > self.slow_ma1

if cross_over:
    if self.pos == 0:
        self.buy(bar.close_price, 1)
    elif self.pos < 0:
        self.cover(bar.close_price, 1)
        self.buy(bar.close_price, 1)

elif cross_below:
    if self.pos == 0:
        self.short(bar.close_price, 1)
    elif self.pos > 0:
        self.sell(bar.close_price, 1)
        self.short(bar.close_price, 1)

2、传统量化框架里的写法:

if crossover(self.ma1, self.ma2):
            self.buy()
        elif crossover(self.ma2, self.ma1):
            self.sell()

当然,传统量化框架,如何直接平移到实盘,这是一个要思考的问题。

当然国内期货允许同时开多单和空单,所以先平后开的操作,不过这个小细节都好办。

CTA系列,从vnpy开始是挺好的选择。

原计划是使用backtesting.py,但考虑到后续对接实盘,多标的,本地化等多种原因,目前看vnpy还是最成熟且经过实战检验,也是完善的社区支持。

图片

它是“插件化”的结构,因此需要自己去下载多个工程,然后组出出来。(我没有用软件的方式来安装,因为金融这个事情,所有代码最好是已知的才放心)。

图片

图片

我没有使用vntrader studio,直接使用代码运行的:

图片

总体观感,相比多数开源软件,vnpy的完成度还是比较友好的。但相对成熟软件,还有距离。我估计很多同学未必能跑得起来。

另外就是数据一定要导入到数据库里,或者使用RQData(付费的),这对于想简单尝试一下的同学,略有门槛。

 

吾日三省吾身

有些事情,需要释放一些大脑带宽才能想得清楚。

在你焦虑,迷茫,不知往什么方向走时,停下来,放空一下。

其实没什么大不了,有时候,事情反而明朗了。

星球的老朋友都清楚,咱们的Quantlab,有很重的bt(一个小众的回测框架,主要是算子,积木式写策略)和Qlib的身影(主要是因子表达式)。

这个框架天然适合大类资产配置,股票多因子,多标的轮动等。

但仔细想来,这个适合什么场景呢?

适当公募基金做指增,或者私募做增值。————说白了,都是代客理财。

只要是代理,收益来源很大一部分就是管理费,当然业绩需要有保证,才能收到管理费。

所以,为什么现在市场很多公司开始做”指增“——跑盈指数就好了,市场beta不用管了。私募好一点,多数有绝对收益要求。

因此,大家更关心控制回撤与夏普比。——最好的方法是什么呢?——分散。

比如公募基金是有明确规定,单标的不得超过组合的10%。

——分散当然可以有效降低风险,不过收益也会随之减少。

对于多数自营的量化普通人的逻辑,我昨天说的大部分做量化以及想接触量化人的目标是——每天1%。每天1%可能夸张了,但更像风险投资的逻辑,一级市场VC的逻辑是1%的投资胜率,但1个公司投资回报可能是1000倍(高赔率)。那仍然是十倍的回报(1%的投资1000倍)。

推演一下如下逻辑,仍然是分散:

比如把仓位分成20份,每次5%。可以同时跑20个策略。止损,让利润奔跑。做好加减仓的精细化管理。

轮动其实是粗放式的,一般仓位就不太重要。或者说是严格限制风险头寸。

而单标的而言,是精细化管理,什么时候止损,什么时候加仓。

这里的逻辑就是CTA。——杠杆、多空,T+0。

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

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

相关推荐

发表回复

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