コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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")
コード例 #4
0
ファイル: report.py プロジェクト: changqinghuo/SSE
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")
コード例 #5
0
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>")
コード例 #6
0
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>")