Overall Statistics
Total Trades
665
Average Win
2.56%
Average Loss
-1.54%
Compounding Annual Return
25.792%
Drawdown
64.800%
Expectancy
0.531
Net Profit
124.272%
Sharpe Ratio
0.659
Probabilistic Sharpe Ratio
15.634%
Loss Rate
43%
Win Rate
57%
Profit-Loss Ratio
1.67
Alpha
0.424
Beta
-0.437
Annual Standard Deviation
0.58
Annual Variance
0.336
Information Ratio
0.449
Tracking Error
0.639
Treynor Ratio
-0.876
Total Fees
$0.00
Estimated Strategy Capacity
$2500000.00
Lowest Capacity Asset
BTCUSD XJ
Portfolio Turnover
7.40%
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *

class MovingAverageCrossover(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 1, 1)  # set start date
        self.SetCash(10000)  # set strategy cash
        self.AddCrypto("BTCUSD", Resolution.Daily)  # Bitcoin data

        self.fast = self.EMA("BTCUSD", 14, Resolution.Daily)
        self.slow = self.EMA("BTCUSD", 28, Resolution.Daily)

        self.previous = None

    def OnData(self, data):
        if not self.fast.IsReady or not self.slow.IsReady:
            return

        if self.previous is not None and self.previous.date() == self.Time.date():
            return

        if self.fast.Current.Value > self.slow.Current.Value:
            self.SetHoldings("BTCUSD", 1.0)
        elif self.fast.Current.Value < self.slow.Current.Value:
            self.SetHoldings("BTCUSD", -1.0)

        self.previous = self.Time