Overall Statistics
Total Trades
129
Average Win
11.27%
Average Loss
-5.02%
Compounding Annual Return
84.273%
Drawdown
40.000%
Expectancy
1.128
Net Profit
2626.364%
Sharpe Ratio
1.935
Probabilistic Sharpe Ratio
93.895%
Loss Rate
34%
Win Rate
66%
Profit-Loss Ratio
2.24
Alpha
0.588
Beta
0.08
Annual Standard Deviation
0.309
Annual Variance
0.095
Information Ratio
1.395
Tracking Error
0.34
Treynor Ratio
7.502
Total Fees
$1470112.34
Estimated Strategy Capacity
$420000.00
Lowest Capacity Asset
BTCUSD E3
# Hold for 1 month and then rebalance.

import pandas as pd
from datetime import datetime

class AssetClassMomentumAlgorithm(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2016, 1, 1)  
        self.SetCash(1000000) 
        self.SetCash("BTC",0)
      
        self.symbols =  ['BTCUSD'] 
         
#################################
########### Brokerage   ------------------
        self.SetBrokerageModel(BrokerageName.AlphaStreams)
        
        for symbol in self.symbols:
            self.AddCrypto(symbol, Resolution.Hour, Market.Bitfinex)
            

    def OnData(self, data):
            
    ##########    # 25 - 2            
        if self.Time.day >= 25 and self.Time.day <= 27 and  not self.Securities["btcusd"].Invested :#  self.Portfolio.Invested: #self.Portfolio.CashBook["BTC"].Amount == 0 :
           
         #   usdTotal = self.Portfolio.CashBook ["USD"]. Amount
         #   limitPrice = round (self.Securities ["BTCUSD"]. Price * 0.99, 2)
         #   # use only half of our total USD
         #   quantity = usdTotal / limitPrice
           # self.DefaultOrderProperties.TimeInForce = TimeInForce.Day
          #  self.LimitOrder("BTCUSD", quantity, limitPrice)
  
          #   self.MarketOrder("BTCUSD", self.Portfolio.CashBook["USD"].Amount / self.Securities["BTCUSD"].Price)
           self.SetHoldings("BTCUSD",1)
        #  if self.Time.day >= 28 or self.Securities["btcusd"].Invested  :
            
            
        if self.Time.day >= 3 and self.Time.day <= 5 and self.Portfolio.Invested:
            self.Liquidate()
    
    def OnEndOfDay(self, symbol):
        self.Plot('Strategy Q', 'Q',self.Portfolio.CashBook["USD"].Amount / self.Securities["BTCUSD"].Price)