Esempio n. 1
0
    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)
Esempio n. 2
0
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])
Esempio n. 3
0
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])