Overall Statistics
Total Trades
11
Average Win
1.95%
Average Loss
-0.81%
Compounding Annual Return
4040.800%
Drawdown
1.200%
Expectancy
1.550
Net Profit
11.685%
Sharpe Ratio
72.712
Probabilistic Sharpe Ratio
99.779%
Loss Rate
25%
Win Rate
75%
Profit-Loss Ratio
2.40
Alpha
16.526
Beta
0.391
Annual Standard Deviation
0.226
Annual Variance
0.051
Information Ratio
63.566
Tracking Error
0.263
Treynor Ratio
41.976
Total Fees
$3217.26
Estimated Strategy Capacity
$31000000.00
Lowest Capacity Asset
BTCBUSD 18R
# region imports
from AlgorithmImports import *
# endregion

class BinanceCryptoFutureDataAlgorithm(QCAlgorithm):

    def Initialize(self) -> None:
        self.SetStartDate(2022, 10, 1)
        self.SetEndDate(2022, 10, 10)
        self.SetCash("BUSD", 100000)

        self.SetBrokerageModel(BrokerageName.BinanceFutures, AccountType.Margin)

        crypto_future = self.AddCryptoFuture("BTCBUSD", Resolution.Daily)
        # perpetual futures does not have a filter function
        self.symbol = crypto_future.Symbol

        # Historical data
        history = self.History(self.symbol, 10, Resolution.Daily)
        self.Debug(f"We got {len(history)} from our history request for {self.symbol}")

    def OnData(self, slice: Slice) -> None:
        if not slice.Bars.ContainsKey(self.symbol) or not slice.QuoteBars.ContainsKey(self.symbol):
            return
        
        quote = slice.QuoteBars[self.symbol]
        price = slice.Bars[self.symbol].Price
        
        if price - quote.Bid.Close > quote.Ask.Close - price:
            self.SetHoldings(self.symbol, -1)
        else:
            self.SetHoldings(self.symbol, 1)