Overall Statistics
Total Trades
39
Average Win
9.86%
Average Loss
-4.22%
Compounding Annual Return
27.928%
Drawdown
27.200%
Expectancy
1.634
Net Profit
278.833%
Sharpe Ratio
1.254
Probabilistic Sharpe Ratio
66.295%
Loss Rate
21%
Win Rate
79%
Profit-Loss Ratio
2.34
Alpha
0.199
Beta
0.01
Annual Standard Deviation
0.16
Annual Variance
0.026
Information Ratio
0.346
Tracking Error
0.221
Treynor Ratio
19.367
Total Fees
$146487.61
Estimated Strategy Capacity
$410000.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)