Backtrader教程:傭金計劃 - 信貸利息

  |  

在某些情況下,真實經紀人的現金金額可能會減少,因為資產操作包括利率。例子:

  • 賣空股票

  • 交易所買賣基金包括多頭和空頭

該費用直接與經紀人帳戶中的現金餘額挂鉤。但它仍然可以被視為傭金計劃的一部分。因此,它已被建模為 backtrader

CommInfoBase 類(以及隨之而來的主 CommissionInfo 介面物件)已擴展為:

  • 兩(2)個新參數,允許設置利率並確定是否應僅應用於空頭或同時應用於多頭和空頭

參數

  • interest (防守: 0.0

    如果此值為非零,則為持有賣空頭寸所收取的年利息。這主要用於股票賣空

    套用預設公式:days * price * size * (interest / 365)

    必須以絕對值指定:0.05 -> 5%

    注意

    可以通過重寫該方法來更改行為:get_credit_interest

  • interest_long (防守: False

    一些產品,如ETF,需要對空頭和多頭頭寸收取利息。如果 ths 為Trueinterest 零,則將在兩個方向上收取利息

公式

預設實現將使用以下公式:

days * abs(size) * price * (interest / 365)

哪裡:

  • days:自開倉或信用利息計算 last 天數

覆蓋公式

為了改變公式,需要子類CommissionInfo 化。要重寫的方法是:

def _get_credit_interest(self, size, price, days, dt0, dt1):
    '''
    This method returns  the cost in terms of credit interest charged by
    the broker.

    In the case of ``size > 0`` this method will only be called if the
    parameter to the class ``interest_long`` is ``True``

    The formulat for the calculation of the credit interest rate is:

      The formula: ``days * price * abs(size) * (interest / 365)``


    Params:
      - ``data``: data feed for which interest is charged

      - ``size``: current position size. > 0 for long positions and < 0 for
        short positions (this parameter will not be ``0``)

      - ``price``: current position price

      - ``days``: number of days elapsed since last credit calculation
        (this is (dt0 - dt1).days)

      - ``dt0``: (datetime.datetime) current datetime

      - ``dt1``: (datetime.datetime) datetime of previous calculation

    ``dt0`` and ``dt1`` are not used in the default implementation and are
    provided as extra input for overridden methods
    '''

可能是經紀人在計算利率時不考慮週末或銀行假日。在這種情況下,這個子類可以解決問題。

import backtrader as bt

class MyCommissionInfo(bt.CommInfo):

   def _get_credit_interest(self, size, price, days, dt0, dt1):
       return 1.0 * abs(size) * price * (self.p.interest / 365.0)

在本例中,在公式中:

  • days 已被替換為 1.0

因為如果週末/銀行假日不計算在內,下一次計算將始終發生在1 上一次計算之後的交易da

推薦閱讀

相關文章

Backtrader向 OHLC 提供買入價/賣出價數據

最近,backtrader通過實現line覆蓋來執行從 ohlc-land 逃逸,這允許重新定義整個層次結構,例如,具有僅具有 bid,ask 和 datetime lines的data feeds。

Backtrader股票篩選

在尋找其他一些東西時,我在StackOverlow家族網站之一上遇到了一個問題:Quantitative Finance aka Quant StackExchange。問題: 它被標記為Python,因此值得一看的是 backtrader 是否能夠勝任這項任務。 分析儀本身 該問題似乎適合用於簡單的分析器。

BacktraderPyFolio 集成

注意 2017年2月 pyfolio API 已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。

Backtrader教程:數據饋送 - 展期交割

並非每個供應商都為可以交易的工具提供連續的未來。有時提供的數據是仍然有效的到期日期的數據,即:仍在交易的日期 這在回溯測試方面並不是很有幫助,因為數據分散在幾個不同的儀器上,這些儀器另外...時間重疊。 能夠正確地將這些儀器的數據從過去連接到連續的流中,可以減輕疼痛。

Backtrader教程:過濾器 - 參考

工作階段篩檢程式 類 backtrader.filters。

Backtrader數據多時間幀

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

Backtrader教程:繪圖 - 日期範圍

該版本1.9.31.x 增加了製作部分繪圖的功能。 使用策略實例中保存的完整時間戳陣列的索引 或者使用實際datetime.date 或 datetime.datetime 實例來限制必須繪製的內容。 一切都超過標準cerebro.plot。

Backtrader交叉回溯測試陷阱

在backtrader 社區中 ,傾向於重複的事情是,用戶解釋了複製在例如 TradingView 中獲得的回溯測試結果的意願,這些天非常流行,或者其他一些回溯測試平臺。

Backtrader動量策略

在另一篇偉大的文章中,泰迪·科克(Teddy Koker)再次展示了演算法交易策略的發展之路: 研究優先應用 pandas 回溯測試,然後使用 backtrader 榮譽!!! 該帖子可以在以下位置找到: 泰迪·科克(Teddy Koker)給我留言,問我是否可以評論 backtrader的用法。

Backtrader終極振蕩器

backtrader開發啟動時的目標之一是使開發新的指標變得非常容易(至少對作者本人而言),以在數學和視覺上測試想法。 門票#102 是關於將 UltimateOscillator 添加到 backtrader 注意 它將在下一個版本中添加,同時可以使用下面的代碼使用它。 票證中所示的參考: 以及: 無需在這裡重複。