Navigation

    Backtrader Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/

    Commission schemes with funding fees for crypto futures

    Indicators/Strategies/Analyzers
    1
    3
    110
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • toinou222
      toinou222 last edited by

      Hi all,

      I read the docs about custom commission schemes and credit interest but not sure I understand it correctly.

      Some context: I'm trading on crypto exchange Binance on BTCUSDT futures market, my strategy use 4h data to compute long and short signal. Binance has a funding fee that has to be paid if a position is open at 0-8-16h00 and is approximatly 0.03% daily (0.01% per funding interval) + a premium (that I will ignore)

      "Binance uses a flat interest rate component, with the assumption that holding cash equivalent returns a higher interest than BTC equivalent. The difference is stipulated to be 0.03% per day by default (0.01% per funding interval since funding occurs every 8 hours)"

      import backtrader as bt
      
      class MyCommissionInfo(bt.CommInfo):
          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
              '''
      
          return days * abs(size) * price * (self.p.interest / 365.0)
      

      Not sure how to modify this to have what I want.

      Thanks for your help and let me know if more informations are needed!

      1 Reply Last reply Reply Quote 0
      • toinou222
        toinou222 last edited by

        I forgot to mention that there is also a trading fee for opening and closing a trade of 0.04%

        1 Reply Last reply Reply Quote 0
        • toinou222
          toinou222 last edited by

          Nobody's trying to do the same? No one's backtesting on crypto futures?
          Would really appreciate some help here
          Thanks

          1 Reply Last reply Reply Quote 0
          • 1 / 1
          • First post
            Last post
          Copyright © 2016, 2017, 2018 NodeBB Forums | Contributors
          $(document).ready(function () { app.coldLoad(); }); }