Overall Statistics
import datetime

def dateMatch(d, refdate):
    refdate = datetime.datetime.strptime(refdate, '%Y-%m-%d %H:%M:%S')
    return d >= refdate and d < refdate + datetime.timedelta(0, 60)

class ReproAlpha:
    # This alpha just tries to recreate a buggy trade
    def __init__(self):
        pass
    
    def Update(self, algorithm, slice):
        insights = []
        if dateMatch(algorithm.Time, "2012-10-18 09:58:00") :
            insights.append(Insight.Price("BRK.A", timedelta(
                        1), InsightDirection.Up, None, None, None, 0.45))
        elif dateMatch(algorithm.Time, "2007-02-27 09:31:00") :
            insights.append(Insight.Price("B", timedelta(
                        1), InsightDirection.Up, None, None, None, 0.45))
        else:
            # insights.append(Insight.Price("BRKA", timedelta(
            #             1), InsightDirection.Flat, None, None, None, 0.45))
            pass
        return insights
            
            
    def OnSecuritiesChanged(self, algorithm, changes):
        pass


class SleepyRedSnake(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2012, 10, 16)  # Set Start Date
        self.SetEndDate(2012, 10, 20)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash

        self.AddAlpha(ReproAlpha())

        self.SetExecution(ImmediateExecutionModel())
        self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel())

        self.UniverseSettings.Resolution = Resolution.Minute
        # self.AddEquity("SPY", Resolution.Minute)
        symbols = [ Symbol.Create("BRK.A", SecurityType.Equity, Market.USA),
                    Symbol.Create("B", SecurityType.Equity, Market.USA)]
        self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) )


    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
            Arguments:
                data: Slice object keyed by symbol containing the stock data
        '''

        # if not self.Portfolio.Invested:
        #    self.SetHoldings("SPY", 1)