Overall Statistics |
Total Orders 7 Average Win 3.88% Average Loss 0% Compounding Annual Return 11497.758% Drawdown 0.100% Expectancy 0 Start Equity 200000.0 End Equity 230303.94 Net Profit 15.152% Sharpe Ratio 809.947 Sortino Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 179.874 Beta 0.281 Annual Standard Deviation 0.222 Annual Variance 0.049 Information Ratio 565.804 Tracking Error 0.318 Treynor Ratio 638.899 Total Fees $380.06 Estimated Strategy Capacity $24000000.00 Lowest Capacity Asset BTCBUSD 18R Portfolio Turnover 46.21% |
from AlgorithmImports import * class BinanceCryptoFutureDataAlgorithm(QCAlgorithm): def initialize(self) -> None: self.set_start_date(2022, 10, 1) self.set_end_date(2022, 10, 10) self.set_cash("BUSD", 100000) self.set_brokerage_model(BrokerageName.BINANCE_FUTURES, AccountType.MARGIN) crypto_future = self.add_crypto_future("BTCBUSD", Resolution.DAILY) # perpetual futures does not have a filter function self.btcusd = crypto_future.symbol # Historical data history = self.history(self.btcusd, 10, Resolution.DAILY) self.debug(f"We got {len(history)} from our history request for {self.btcusd}") def on_data(self, slice: Slice) -> None: if self.btcusd in slice.margin_interest_rates: interest_rate = slice.margin_interest_rates[self.btcusd].interest_rate self.log(f"{self.btcusd} close at {slice.time}: {interest_rate}") if not slice.bars.contains_key(self.btcusd) or not slice.quote_bars.contains_key(self.btcusd): return quote = slice.quote_bars[self.btcusd] price = slice.bars[self.btcusd].price if price - quote.bid.close > quote.ask.close - price: self.set_holdings(self.btcusd, -1) else: self.set_holdings(self.btcusd, 1)