def formatMetrics(self): ''' output all calculated metrics ''' bestSymbol = None bestMetric = None worstSymbol = None worstMetric = None output = [] for symbols, metric in self.__calculated.items(): output.append("%s: %s" % (symbols, metric.formatResult())) if bestSymbol == None or metric.result[BasicMetric.END_VALUE] > bestMetric.result[BasicMetric.END_VALUE]: bestSymbol = symbols bestMetric = metric if worstSymbol == None or metric.result[BasicMetric.END_VALUE] < worstMetric.result[BasicMetric.END_VALUE]: worstSymbol = symbols worstMetric = metric output.append("MEAN end value: %.1f, mean sharp ratio: %.2f" % (mean([m[BasicMetric.END_VALUE] for m in self.__calculated.values() if m[BasicMetric.END_VALUE] > 0]), mean([m[BasicMetric.SRATIO] for m in self.__calculated.values() if m[BasicMetric.SRATIO] > -1]))) output.append("Best %s: %s" % (bestSymbol, bestMetric.formatResult())) output.append("Worst %s: %s" % (worstSymbol, worstMetric.formatResult())) return '\n'.join(output)
dam = DAMFactory.createDAM("sql", {'db': 'sqlite:////data/stock.sqlite'}) dateTicks = dam.readBatchTupleQuotes(symbols, 20031210, 20131210) symbolTicks = {} for timeStamp in sorted(dateTicks.iterkeys()): for symbol, tick in dateTicks[timeStamp].iteritems(): if symbol not in symbolTicks: symbolTicks[symbol] = [] symbolTicks[symbol].append(tick) bads = [] goods = {} # symbol as key, std as value for symbol, ticks in symbolTicks.iteritems(): avgClose = mean([tick.close for tick in ticks]) std = 100 * stddev([tick.close for tick in ticks]) / avgClose print "std for %s is %f" % (symbol, std) ticks = ticks[-30:] avgVolumnDollar = mean([tick.volume * tick.close for tick in ticks]) if avgVolumnDollar > 1000000 and avgClose > 6 and avgClose < 100: goods[symbol] = std else: bads.append(symbol) print "=========bad %s==============" % len(bads) print bads sortedList = sorted(goods.iteritems(), key=lambda x: x[1])
dam = DAMFactory.createDAM("sql", {'db': 'sqlite:////data/stock.sqlite'}) dateTicks = dam.readBatchTupleQuotes(symbols, 20031210, 20131210) symbolTicks = {} for timeStamp in sorted(dateTicks.iterkeys()): for symbol, tick in dateTicks[timeStamp].iteritems(): if symbol not in symbolTicks: symbolTicks[symbol] = [] symbolTicks[symbol].append(tick) bads = [] goods = {} # symbol as key, std as value for symbol, ticks in symbolTicks.iteritems(): avgClose = mean([tick.close for tick in ticks]) std = 100 * stddev([tick.close for tick in ticks])/avgClose print "std for %s is %f" % (symbol, std) ticks = ticks[-30:] avgVolumnDollar = mean([tick.volume * tick.close for tick in ticks]) if avgVolumnDollar > 1000000 and avgClose > 6 and avgClose < 100: goods[symbol] = std else: bads.append(symbol) print "=========bad %s==============" % len(bads) print bads sortedList = sorted(goods.iteritems(), key=lambda x: x[1])