Backtrader教程:分析儀 - PyFolio

  |  

注意

從(至少)2017-07-25pyfolio 開始,API已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。

因此,集成示例不起作用

pyfolio參考 http://quantopian.github.io/pyfolio/ 主頁:

pyfolio is a Python library for performance and risk analysis of financial
portfolios developed by Quantopian Inc. It works well with the Zipline open
source backtesting library

現在,它也適用於 backtrader。需要什麼:

  • pyfolio 明顯地

  • 以及它的依賴關係(例如pandasseaborn ...

    注意

    在與版本0.5.1集成期間,需要更新依賴項的最新包,例如 seaborn 從以前安裝 0.7.0-dev0.7.1的包,顯然是由於缺少該方法 swarmplot

用法

  1. PyFolio 分析儀添加到混合物中 cerebro

    cerebro.addanalyzer(bt.analyzers.PyFolio)
    
  2. 執行並檢索1st 策略:

    strats = cerebro.run()
    strat0 = strats[0]
    
  3. 使用您指定任何名稱或將為其提供的預設名稱檢索分析器:pyfolio。例如:

    pyfolio = strats.analyzers.getbyname('pyfolio')
    
  4. 使用 analyzer 方法get_pf_items 檢索稍後所需的 4 個 pyfolio元件:

    returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
    

    !!!注意

    The integration was done looking at test samples available with
    `pyfolio` and the same headers (or absence of) has been replicated
    
  5. pyfolio 合作(這已經在backtrader生態系統之外)

一些與backtrader沒有直接關係的用法說明

  • pyfolio自動繪圖在Jupyter Notebook之外工作,但在內部效果最好

  • pyfolio 數據表的輸出似乎在Jupyter Notebook之外幾乎不起作用。它在筆記本內部工作

如果願意的話pyfolio ,結論很容易:在 Jupyter Notebook中工作

示例代碼

代碼將如下所示:

...
cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
...
results = cerebro.run()
strat = results[0]
pyfoliozer = strat.analyzers.getbyname('pyfolio')
returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
...
...
# pyfolio showtime
import pyfolio as pf
pf.create_full_tear_sheet(
    returns,
    positions=positions,
    transactions=transactions,
    gross_lev=gross_lev,
    live_start_date='2005-05-01',  # This date is sample specific
    round_trips=True)

# At this point tables and chart will show up

參考

查看分析儀的Analyzers參考PyFolio以及分析儀內部使用哪些analyzers

推薦閱讀

相關文章

Backtrader跨越數位

《backtrader》的發佈1.9.27.105糾正了一個疏忽。這是一個疏忽,因為拼圖的所有部分都已到位,但啟動並不是在所有角落都進行的。 該機制使用一個名為的屬性_mindatas,因此讓我們將其稱為: mindatas。 社區問了這個問題,答案並不是很到位。

Backtrader期貨補償與現貨補償

版本1.9.32.116 增加了對社區中呈現的有趣用例 的支援 以期貨開始交易,包括實物交割 讓一個指標告訴你一些事情 如果需要, close 現貨價格操作,有效地取消實物交割,無論是為了接收貨物還是為了必須交付貨物(並希望獲利)來頭寸。

Backtrader教程:分析儀 - PyFolio

注意 從(至少)2017-07-25pyfolio 開始,API已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。

Backtrader信貸利息

在某些情況下,真實經紀人的現金金額可能會減少,因為資產操作包括利率。例子: 賣空股票 交易所買賣基金包括多頭和空頭 這意味著不僅交易構成了系統的盈利能力,因為信貸上的利息在帳戶上佔有一席之地。 為了涵蓋這種情況, backtrader 包括(從發佈1.8.8.96開始)功能來考慮這一點。

Backtrader教程:數據饋送 - 擴展 (Extending DataFeed)

GitHub 中的問題實際上是在推動文檔部分的完成,或者説明我瞭解我是否backtrader 具有我從一開始就設想的易用性和靈活性以及在此過程中做出的決定。 在本例中為問題 #9。

Backtrader教程:日誌記錄 - 編寫器

將以下內容寫出到流中: csv 流,

Backtrader多數據範例

社區中的幾個主題似乎以如何跟蹤訂單為導向,特別是當幾個data feeds在起作用時,還包括當多個訂單一起工作時,

Backtrader教程:安裝

要求和版本 backtrader 是獨立的,沒有外部依賴關係(除非要繪圖) 基本要求是: Python 2.7 Python 3.2 / 3.3/ 3.4 / 3.5 pypy/pypy3 如果需要繪圖,則其他要求: Matplotlib >= 1.4.

Backtrader數據多時間幀

有時投資決策是使用不同的時間框架做出的: 每周評估趨勢 每天執行條目 或者5分鐘對60分鐘。 這意味著需要將多個時間幀的數據組合在 backtrader 中以支援此類組合。 對它的本機支持已經內置。

Backtrader按日線交易

似乎在世界某個地方有一種权益(Interest)可以總結如下: 使用每日柱線引入訂單,但使用開盤價 這來自工單#105订单执行逻辑与当前数据和#101动态投注计算中的對話 backtrader 嘗試盡可能保持現實,並且在處理每日柱線時適用以下前提: 當每日柱被評估時,柱線已經結束 這是有道理的,