Overall Statistics
Total Trades
200
Average Win
0.18%
Average Loss
-0.24%
Compounding Annual Return
-3.036%
Drawdown
6.700%
Expectancy
-0.190
Net Profit
-3.728%
Sharpe Ratio
-0.709
Probabilistic Sharpe Ratio
0.953%
Loss Rate
54%
Win Rate
46%
Profit-Loss Ratio
0.74
Alpha
-0.02
Beta
-0.176
Annual Standard Deviation
0.029
Annual Variance
0.001
Information Ratio
-0.224
Tracking Error
0.107
Treynor Ratio
0.118
Total Fees
$0.00
Estimated Strategy Capacity
$1000000.00
Lowest Capacity Asset
USDDKK 8G
from AlgorithmImports import *
# endregion

class CustomIndexStrategy(QCAlgorithm):

    def Initialize(self):

        self.Pair_1_Multiplier = 4
        self.Pair_1 = "USDDKK"
        self.holdingDays = 1
        self.SetStartDate (2015, 3, 3) 
        self.SetEndDate(2016,5,24)
        self.SetCash(1000000)  
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        self.EURSEK = self.AddForex(self.Pair_1, Resolution.Daily, Market.Oanda)
        self.symbols = [self.Pair_1]
        self.prevPrices = { symbol : RollingWindow[QuoteBar](7) for symbol in self.symbols }
        self.ticketPair1 = None 

    def OnData(self,data):
        
        for symbol in self.symbols:
            if data.ContainsKey(symbol):
                self.prevPrices[symbol].Add( data[symbol] )

        if not all([ window.IsReady for window in self.prevPrices.values() ]):
            return
            
        Pair1_window = self.prevPrices[self.Pair_1]
        Pair1_1D = Pair1_window[1].Close
        Pair1_0D = Pair1_window[0].Close

        if self.ticketPair1 is not None and self.UtcTime < self.ticketPair1.Time + timedelta(days=(self.holdingDays)):
            return

        if self.ticketPair1 is None and self.IsMarketOpen(self.Pair_1) and Pair1_0D < Pair1_1D and self.Time.weekday() != 4:
            if self.Time.day == 25 and self.Time.month == 12: return
            self.ticketPair1 = self.MarketOrder(self.Pair_1, 100000 * self.Pair_1_Multiplier)    

        if self.ticketPair1 is not None and self.UtcTime >= self.ticketPair1.Time + timedelta(days = self.holdingDays) and self.Time.weekday() != 4: 
            if self.Time.day == 25 and self.Time.month == 12: return
            self.MarketOrder(self.Pair_1, -100000 * self.Pair_1_Multiplier)
            self.ticketPair1 = None