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 testMeasurement(self):
     dateValues = [StockDailyType('2011-01-03', '3190.04', '3239.03', '3190.04', '3235.77', '000', '3235.7'),
                   StockDailyType('2011-01-04', '3235.77', '3260.08', '3235.77', '3250.29', '000', '3250.2'),
                   StockDailyType('2011-01-05', '3250.29', '3263.05', '3242.98', '3254.25', '000', '3254.2'),
                   StockDailyType('2011-01-06', '3254.25', '3280.43', '3254.25', '3279.70', '000', '3279.7'),
                   StockDailyType('2011-01-07', '3279.70', '3280.77', '3253.14', '3261.35', '000', '3261.3'),
                   StockDailyType('2011-01-10', '3261.35', '3270.21', '3229.27', '3229.27', '000', '3229.2')]
     stockMeasurement = StockMeasurement(dateValues, '^GSPC')
     stockMeasurement.linearRegression()
     assert stockMeasurement.alpha()
     assert stockMeasurement.beta()
     assert stockMeasurement.mean()
     assert stockMeasurement.std()
     assert stockMeasurement.relativeReturnRate()
     assert stockMeasurement.marketReturnRate()
     assert stockMeasurement.returnRate()
 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)
Example #5
0
    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)