Example #1
0
def convertStockDay(stock,startStep,start,end):
    stckID = meSchema.getStckID(stock)
    result = meSchema.getStck(stckID,startStep)
    if len(result) == 78:
        return True  # If already 78.. then most likely already converted.
    elif len(result) > 0:
        db.delete(result)

    step = startStep
    stockRange = meSchema.getStockRange(stock,start,end)
    k = len(stockRange)
    if k < 78:
        return False
    m = k - 78
    skip = 0
    meList = []

    for i in range(k):
        if i%5 in [0,3] and skip < m:
            skip += 1
        else:
            meStck = meSchema.stck(ID    = stckID,
                                   step  = step,
                                   quote = stockRange[i].lastPrice)
            meList.append(meStck)
            if len(meList) == 78:
                db.put(meList)
                return True
            step += 1
            
    return False
 def post(self):
     startDayIndex = int(self.request.get('startDayIndex'))
     Symbol = str(self.request.get('Symbol'))
     stckID = meSchema.getStckID(Symbol)
     csvFile = Symbol + '_01-2005_11-2010.csv'
     dailyQuotes = list(csv.reader(open(csvFile)))
     dailyQuotes.reverse()
     # Index 0 is for step 1000001 to 1000080
     # Index 1 is for step 1000081 to 1000160
     # Index N is for step N*80 + 1 to (N+1)*80  # plus 1000000
     putList = []
     for N in range(len(dailyQuotes)):
         dailyOpenStep   = 1000000 + N*80 + 1
         dailyCloseStep  = 1000000 + N*80 + 80
         '''Must draw random steps for High and Low.'''
         daySteps = [step for step in range(dailyOpenStep+1,dailyCloseStep)]
         highLow = sample(daySteps, 2)
         dailyHighStep = highLow[0]
         dailyLowStep = highLow[1]
         ''' Set Quote Values '''
         OpenQuote  = dailyQuotes[N][1]
         HighQuote  = dailyQuotes[N][2]
         LowQuote   = dailyQuotes[N][3]
         CloseQuote = dailyQuotes[N][4]
         ''' Create stck Entities for stckID Quotes'''
         openStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyOpenStep),
                                  ID = stckID, quote = float(OpenQuote), step = dailyOpenStep)
         highStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyHighStep),
                                  ID = stckID, quote = float(HighQuote), step = dailyHighStep)
         lowStck  = meSchema.stck(key_name=str(stckID) + '_' + str(dailyLowStep),
                                  ID = stckID, quote = float(LowQuote), step = dailyLowStep)
         closeStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyCloseStep),
                                  ID = stckID, quote = float(CloseQuote), step = dailyCloseStep)
         putList.extend([openStck,highStck,lowStck,closeStck])
     meSchema.batchPut(putList)
Example #3
0
def outputHistoryForChart(keyname, namespace = ''):
    originalNamespace = namespace_manager.get_namespace()
    if namespace == '':
        stckIDs = [1,2,3,4]
    else:
        stckIDs = [meSchema.getStckID(namespace)]

    try:
        namespace_manager.set_namespace(namespace)
        meta = meSchema.metaAlg.get_by_key_name(keyname)
    finally:
        namespace_manager.set_namespace(originalNamespace)
        
    history = eval(meta.history)
    returns = deque([])
    steps = deque([])
    for hist in history:
        steps.appendleft(hist['step'])
        returns.appendleft(hist['return'])

    # Need to get stock quotes for step in steps.. and calculate averaged return
    # step[0] - 400 is the reference step.
    quoteSteps = [steps[0] - 400]
    quoteSteps.extend(steps)
    stckKeys = []
    for step in quoteSteps:
        for stckID in stckIDs:
            stckKeys.append(str(stckID) + '_' + str(step))
    stckQuotes = meSchema.stck.get_by_key_name(stckKeys)
    stckReturns = []
    for i in range(len(stckIDs), len(stckQuotes), len(stckIDs)):
        rets = []
        for j in range(0,len(stckIDs)):
            rets.append((stckQuotes[i+j].quote - stckQuotes[j].quote)/stckQuotes[j].quote)
        average = sum(rets)/len(rets)
        stckReturns.append(average)
    print 'Long Basket Returns: ',
    for ret in stckReturns:
        print '%2.3f' % (100*ret),
    print ''
    print 'Returns: ',
    for ret in returns:
        print '%2.3f' % (100*ret),
    print ''
    print 'Steps: ',
    for step in steps:
        print step,
    print ''
def primeDesireCache(step):
    # Function to pull out last 400 steps of potential desires.
    import princeFunc
    memdict = {}
    queryStr = princeFunc.getDesireQueryStr(max(step-405,0),step)
    desires = db.GqlQuery(queryStr).fetch(20000)
    for desire in desires:
        # eval desire and pull out cmp(shares,0) and symbol for memcache
        desirekey = desire.key().name()
        desireDict = eval(desire.desire)
        for stock in desireDict:
            # Must convert symbol to id for memcaching.
            stckID = meSchema.getStckID(stock)
            buysell = cmp(desireDict[stock]['Shares'],0)
        algKey = desirekey.split("_")[-1]      # Extract algKey from end.
        memkey = "desire_" + algKey + "_" + str(buysell) + "_" + str(stckID)
        step = int(desirekey.split("_")[0])    # Extract step from front part of desirekey.
        if not memdict.__contains__(memkey):
            memdict[memkey] = step
        elif memdict[memkey] < step:
            memdict[memkey] = step
    memcache.set_multi(memdict)