def beatspx(thedate,dbconn): symlst = metadata.getStockList("default",dbconn) beatspxlst = pandas.DataFrame(columns=('symbol', 'sector', 'chg')) beapspxchg = 0.0 for symbol in symlst: chg = perfdata.queryOneDatePerf(symbol,thedate,dbconn) if chg>2.04: sector = stocklist.getSector(symbol,dbconn) #beatspxlst[symbol] = sector beatspxlst.loc[len(beatspxlst)+1]=[symbol,sector,chg] print "choose ",symbol,",",sector,"=",chg # de-duplicated by sector #lst1 = pandas.Series(beatspxlst) beatspxlst = beatspxlst.sort_index(by="chg",ascending=False) print beatspxlst print "=========================" beatspxlst = beatspxlst.drop_duplicates(cols='sector') print beatspxlst['symbol'] for symbol in beatspxlst['symbol']: chg = perfdata.queryYtdPerf(symbol,dbconn) beapspxchg += chg print symbol,",",sector,"=",chg print "beapspx YTD performance=", beapspxchg
def calc(dbconn): resetTable(dbconn) today = datetime.date.today() day_ytd = today.replace(month=1,day=1) day_5d = today-datetime.timedelta(days=5) day_10d = today-datetime.timedelta(days=10) day_20d = today-datetime.timedelta(days=20) day_50d = today-datetime.timedelta(days=50) day_100d = today-datetime.timedelta(days=100) day_200d = today-datetime.timedelta(days=200) day_1y = today.replace(year=today.year-1) day_2y = today.replace(year=today.year-2) day_5y = today.replace(year=today.year-5) symLst = metadata.getStockList(dbconn) for sym in symLst: # calculate p_today = stockeod.getLatestPrice(sym,dbconn) p_ytd = stockeod.getClosePrice(sym,day_ytd,dbconn) p_1y = stockeod.getClosePrice(sym,day_1y,dbconn) p_2y = stockeod.getClosePrice(sym,day_2y,dbconn) p_5y = stockeod.getClosePrice(sym,day_5y,dbconn) p_5d = stockeod.getClosePrice(sym,day_5d,dbconn) p_10d = stockeod.getClosePrice(sym,day_10d,dbconn) p_20d = stockeod.getClosePrice(sym,day_20d,dbconn) p_50d = stockeod.getClosePrice(sym,day_50d,dbconn) p_100d = stockeod.getClosePrice(sym,day_100d,dbconn) p_200d = stockeod.getClosePrice(sym,day_200d,dbconn) pf_5y = (p_today-p_5y)*100/p_5y pf_2y = (p_today-p_2y)*100/p_2y pf_1y = (p_today-p_1y)*100/p_1y pf_ytd = (p_today-p_ytd)*100/p_ytd pf_200d = (p_today-p_200d)*100/p_200d pf_100d = (p_today-p_100d)*100/p_100d pf_50d = (p_today-p_50d)*100/p_50d pf_20d = (p_today-p_20d)*100/p_20d pf_10d = (p_today-p_10d)*100/p_10d pf_5d = (p_today-p_5d)*100/p_5d cursor = dbconn.cursor() try: tb="" sql = "insert into perfdata(symbol,lastdate,y5d,y2d,y1d,ytd,td200,td100,td50,td20,td10,td5) \ values ('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)" \ % (sym,today,pf_5y,pf_2y,pf_1y,pf_ytd,pf_200d,pf_100d,pf_50d,pf_20d,pf_10d,pf_5d) cursor.execute(sql) dbconn.commit() except: print "error" tb = traceback.format_exc() dbconn.rollback() finally: #print tb return
def calc(thedate,dbconn): symlst = metadata.getStockList("default",dbconn) #symdict = {} totalchg = 0.0; top10 = 0.0 for symbol in symlst: #print symbol chg = perfdata.queryYtdPerf(symbol,dbconn) print chg totalchg += chg if chg>2.04: top10+=chg #chg = perfdata.queryPerf(symbol,thedate,dbconn) #ret = "%s=%.2f %%" % (symbol,chg) #symdict[symbol] = chg #print ret print "YTD performance=", totalchg print "TOP spx YTD performance=", top10