def execute(self, dateValuesDict):
     ''' processing input'''
     super(AvgDivProcessor, self).execute(dateValuesDict)
     for dateValues in dateValuesDict.values():
         stockMeasurement = StockMeasurement(dateValues)
         data = {
             'days': len(dateValues),
             'avg': stockMeasurement.mean(),
             'standard deviation': stockMeasurement.std(),
             'alpha': stockMeasurement.alpha(),
             'beta': stockMeasurement.beta()
         }
         return data
    def analyze(self):
        ''' analyze '''
        print 'Start analyzing'
        buildBenchmarkValues()

        returnRates = [[], [], [], [], [], [], []]
        alphas = [[], [], [], [], [], [], []]
        relativeReturnRates = [[], [], [], [], [], [], []]

        for fileName in filter(lambda f: f.endswith('.xls'),
                               os.listdir(self.__workingDir)):
            excelFile = os.path.join(self.__workingDir, fileName)
            sheetNames = ExcelLib.getSheetNames(excelFile)

            for sheetName in sheetNames:
                with ExcelLib(excelFile) as excel:
                    excel.openSheet(sheetName=sheetName)

                    contry = sheetName.split('.')[-1] if len(
                        sheetName.split('.')) != 1 else 'DEFAULT'
                    benchmark = benchmarks[contry]
                    print 'Processing %s with benchmark %s' % (sheetName,
                                                               benchmark)

                    for index, duration in enumerate(self.dayIntervals):
                        data = []
                        broke = False
                        for i in range(1, duration + 1):
                            #print "row %d, duration %d" % (i, duration)
                            if broke:
                                break

                            try:
                                values = excel.readRow(i)
                                for j in range(len(values)):
                                    values[j] = float(
                                        values[j]) if j != 0 else values[j]

                                data.append(StockDailyType(*values))
                            except Exception:
                                print 'Analyzing %s break at %d' % (sheetName,
                                                                    i)
                                broke = True
                                break
                        if data:
                            dateValues = sorted(data, key=itemgetter(0))

                            #print benchmarkValues[benchmark]
                            stockMeasurement = StockMeasurement(
                                dateValues, benchmark,
                                benchmarkValues[benchmark])
                            stockMeasurement.linearRegression()
                            returnRates[index].append(
                                stockMeasurement.returnRate())
                            alphas[index].append(stockMeasurement.alpha())
                            relativeReturnRates[index].append(
                                stockMeasurement.relativeReturnRate())

        with open(os.path.join(self.__workingDir, 'output.txt'),
                  'w') as outputFile:
            outputReturnRates = map(lambda x: sum(x) / len(x), returnRates)
            outputAlphas = map(lambda x: sum(x) / len(x), alphas)
            outputRelativeReturnRates = map(lambda x: sum(x) / len(x),
                                            relativeReturnRates)
            print "Days since going public %s" % self.dayIntervals
            print "returnRates: %s" % outputReturnRates
            print "alphas: %s" % outputAlphas
            print "relativeReturnRates: %s" % outputRelativeReturnRates
            outputFile.write("outputReturnRates %s\n" % outputReturnRates)
            outputFile.write("outputAlphas %s\n" % outputAlphas)
            outputFile.write("outputRelativeReturnRates %s\n" %
                             outputRelativeReturnRates)
            outputFile.write("returnRates %s\n" % returnRates)
            outputFile.write("alphas %s\n" % alphas)
            outputFile.write("relativeReturnRates %s\n" % relativeReturnRates)