def getYearRatioUsingMonth(funds,year): days=[] for date in funds.index: if(date.year==year): days.append(date) funds=funds.reindex(index=days) m=tsu.monthly(funds) avg=float(sum(m))/len(m) std=0 for a in m: std=std+float((float(a-avg))**2) std=sqrt(float(std)/(len(m)-1)) return (avg/std)
def print_monthly_returns(fund_ts, years, ostream): """ @summary prints monthly returns for given fund and years to the given stream @param fund_ts: pandas fund time series @param years: list of years to print out @param ostream: stream to print to """ ostream.write(" ") month_names = du.getMonthNames() for name in month_names: ostream.write(" " + str(name)) ostream.write("\n") i = 0 mrets = tsu.monthly(fund_ts) for year in years: ostream.write(str(year)) months = du.getMonths(fund_ts, year) for k in range(1, months[0]): ostream.write(" ") for month in months: ostream.write(" % + 6.2f" % (mrets[i]*100)) i += 1 ostream.write("\n")
def reportFunctionality(funds, symbols,filename=sys.stdout): if(len(symbols)!=0): funds2=runOther(funds,symbols) arg2=1 else: arg2=0 if(filename==sys.stdout): html_file=sys.stdout else: html_file = open(filename,"w") #top html_file.write("<HTML>\n") html_file.write("<HEAD>\n") html_file.write("<TITLE>QSTK Generated Report from "+readableDate(funds.index[0])+" to "+readableDate(funds.index[-1])+"</TITLE>\n") html_file.write("</HEAD>\n\n") html_file.write("<BODY><CENTER>\n\n") years=du.getYears(funds) html_file.write("<H2>Performance Summary for "+sys.argv[1]+"</H2>\n") html_file.write("For the dates "+readableDate(funds.index[0])+" to "+readableDate(funds.index[-1])+"\n") html_file.write("<H3>Yearly Performance Metrics</H3>\n") html_file.write("<TABLE CELLPADDING=10>\n") html_file.write("<TR><TH></TH>\n") for year in years: html_file.write("<TH>"+str(year)+"</TH>\n") html_file.write("</TR>\n") #yearly return html_file.write("<TR>\n") html_file.write("<TH>Annualized Return:</TH>\n") for year in years: retur=getYearReturn(funds,year) html_file.write("<TD>\n") print >>html_file, "%.2f\n" % (retur*100) html_file.write("%</TD>\n") html_file.write("</TR>\n") #yearly winning days html_file.write("<TR>\n") html_file.write("<TH>Winning Days:</TH>\n") for year in years: # change to compare to inputs - ratio=tsu.getYearRatio(funds,year) if(arg2!=0): win=getWinningDays(funds,funds2,year) html_file.write("<TD>\n") print >>html_file, "%.2f\n" % (win*100) html_file.write("%</TD>\n") else: html_file.write("<TD>No comparison.</TD>\n") html_file.write("</TR>\n") #max draw down html_file.write("<TR>\n") html_file.write("<TH>Max Draw Down:</TH>\n") for year in years: drop=getYearMaxDrop(funds,year) html_file.write("<TD>\n") print >>html_file, "%.2f" % (drop*100) html_file.write("%</TD>\n") html_file.write("</TR>\n") #yearly sharpe ratio using daily rets html_file.write("<TR>\n") html_file.write("<TH>Daily Sharpe Ratio:</TH>\n") for year in years: ratio=tsu.getYearRatio(funds,year) html_file.write("<TD>\n") print >>html_file, "%.2f\n" % ratio html_file.write("</TD>\n") html_file.write("</TR>\n") #yearly sharpe ratio using monthly rets html_file.write("<TR>\n") html_file.write("<TH>Monthly Sharpe Ratio:</TH>\n") for year in years: ratio=getYearRatioUsingMonth(funds,year) html_file.write("<TD>\n") print >>html_file, "%.2f\n" % ratio html_file.write("</TD>\n") html_file.write("</TR>\n") html_file.write("</TABLE>\n") html_file.write("<BR/>\n\n") vals=funds.values; vals2=np.append(vals,funds2.values,2) df=DataMatrix(index=funds.index,data=funds.values, columns=['fund']) df2=DataMatrix(index=funds2.index,data=funds2.values,columns=['other']) df['other']=df2['other'] corrcoef=numpy.corrcoef(funds.values[0:-1],funds2.values) html_file.write("<H3>Correlation=") print >>html_file, "%.2f\n" % corrcoef[0][1] html_file.write("<H3>\n") html_file.write("<BR/>\n\n") #montly returns mrets=tsu.monthly(funds) html_file.write("<H2>Monthly Returns</H2>\n") html_file.write("<TABLE CELLPADDING=10>\n") html_file.write("<TR>\n") html_file.write("<TH></TH>\n") month_names=du.getMonthNames() for name in month_names: html_file.write("<TH>"+str(name)+"</TH>\n") html_file.write("</TR>\n") i=0 for year in years: html_file.write("<TR>\n") html_file.write("<TH>"+str(year)+"</TH>\n") months=du.getMonths(funds,year) for month in months: html_file.write("<TD>\n") print >>html_file, "%.2f\n" % (mrets[i]*100) html_file.write("%</TD>\n") i+=1 html_file.write("</TR>\n") html_file.write("</TABLE>\n") html_file.write("<BR/>\n\n") #fund value graph fundlist=[]; fundlist.append(funds) fundlist.append(funds2) converter.fundsToPNG(fundlist,'funds.png') html_file.write("<IMG SRC=\'./funds.png\'/>\n") html_file.write("<BR/>\n\n") #end html_file.write("</CENTER></BODY>\n\n") html_file.write("</HTML>")