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)