| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 75.043% Drawdown 2.700% Expectancy 0 Net Profit 2.315% Sharpe Ratio 7.838 Probabilistic Sharpe Ratio 85.999% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.444 Beta 0.416 Annual Standard Deviation 0.093 Annual Variance 0.009 Information Ratio 0.363 Tracking Error 0.113 Treynor Ratio 1.755 Total Fees $0.00 |
class TransdimensionalCalibratedAutosequencers(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 10, 1)
self.SetCash('USD', 10000)
self.SetCash('BTC', 1)
self.SetCash('ETH', 1)
self.btcusd = self.AddCrypto("BTCUSD").Symbol
self.ethbtc = self.AddCrypto("ETHBTC").Symbol
self.usd_trade_amount = 1000
self.done = False
self.plot_holdings()
def OnData(self, data):
if not self.done and \
data.ContainsKey(self.btcusd) and \
data[self.btcusd] is not None and \
data.ContainsKey(self.ethbtc) and \
data[self.ethbtc] is not None:
quantity = self.usd_trade_amount / data[self.btcusd].Price / data[self.ethbtc].Price
self.Log(f"Ordering {quantity} ETH")
self.MarketOrder('ETHBTC', quantity)
self.done = True
def OnOrderEvent(self, order_event):
if order_event.Status == OrderStatus.Filled:
usd_value = order_event.FillQuantity * self.CurrentSlice[self.ethbtc].Price * self.CurrentSlice[self.btcusd].Price
self.Log(f"Spent ${usd_value} USD")
def OnEndOfDay(self):
self.plot_holdings()
def plot_holdings(self):
for currency in ['ETH', 'BTC', 'USD']:
self.Plot(currency, "Holdings", self.Portfolio.CashBook[currency].Amount)