策略也是需要经过验证的 - backtrader

目前基於Python的量化回测框架有很多,开源框架有zipline、vnpy和backtrader等等,本次以backtrader来示范,

安装方法可以参考官方网站

简单的设定

from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import backtrader as bt

if __name__ == '__main__':
    cerebro = bt.Cerebro()

    print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())

    cerebro.run()

    print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())

比如说我们要回测SPY状况

from datetime import datetime
import backtrader as bt
from dateutil.relativedelta import relativedelta
import yfinance as yf
  
class TestStrategy(bt.Strategy):
    def __init__(self):
        self._next_buy_date = datetime(2010, 1, 5)
  
    def next(self):
        if self.data.datetime.date() >= self. _next_buy_date.date():
            self. _next_buy_date += relativedelta(months=1)
            self.buy(size=1)
  
cerebro = bt.Cerebro()
data = bt.feeds.PandasData(dataname=yf.download('SPY', '2015-07-06', '2021-09-23', auto_adjust=True))
  
cerebro.adddata(data) 
cerebro.addstrategy(TestStrategy)
cerebro.broker.set_cash(cash=10000)
cerebro.run()
cerebro.plot() 

https://ithelp.ithome.com.tw/upload/images/20210923/20028592BiXDFHwNLa.png


<<:  30-8 之 Presentation Layer - MVC ( Model-View-Controller )

>>:  [Day 8]开赛八天即遭遇难题(後端篇)

[Day27] CH13:画出你的藏宝图——图形使用者介面

终於来到我们最後一个主题了,今天我们要介绍的是图形使用者介面(graphical user inte...

开源网路钓鱼框架-Gophish(上)

开赛时提到的社交工程钓鱼邮件 除了快速好上手的SET工具之外 gophish具有美美的UI介面,简洁...

D3JsDay08做为视觉化图表的燃料,从网路撷取档案的资料—fetch Data

浅谈原始码 D3包装了Javascript的fetchAPI来撷取资料我们这里可以看到D3Js的原始...

30天轻松学会unity自制游戏-简易介绍google play上架

上架google play要先跟google缴交$25美元终生上架费用@@如果有钱有设备也可以申请a...

软件开发 五层次的用户体验

软件开发中,产品经理在规划产品方案时,都会注意用户体验的部分,其实关於用户体验的部分 James G...