コード例 #1
0
ファイル: fundutil.py プロジェクト: nehudesi/MSim
def get_sharpe_ratio(fund_ts):
    """
    @summary Returns daily computed Sharpe ratio of fund time series
    @param fund_ts: pandas time series of daily fund values
    @return  Sharpe ratio of  fund time series
    """
    return tsu.get_sharpe_ratio(tsu.daily(fund_ts))
コード例 #2
0
ファイル: fundutil.py プロジェクト: nehudesi/MSim
def get_winning_days(fund_ts):
    """
    @summary Returns percentage of winning days in fund time series
    @param fund_ts: pandas time series of daily fund values
    @return Percentage of winning days over fund time series
    """
    return tsu.get_winning_days(tsu.daily(fund_ts))
コード例 #3
0
def get_sharpe_ratio(fund_ts):
    """
    @summary Returns daily computed Sharpe ratio of fund time series
    @param fund_ts: pandas time series of daily fund values
    @return  Sharpe ratio of  fund time series
    """
    return tsu.get_sharpe_ratio(tsu.daily(fund_ts))
コード例 #4
0
def get_winning_days(fund_ts):
    """
    @summary Returns percentage of winning days in fund time series
    @param fund_ts: pandas time series of daily fund values
    @return Percentage of winning days over fund time series
    """
    return tsu.get_winning_days(tsu.daily(fund_ts))
コード例 #5
0
ファイル: analyze.py プロジェクト: nehudesi/MSim
def analyzeMain():
    ts_fund = _csv_read_fund('values.csv')
    try:
        benchmark = raw_input('Enter Benchmark: ')
    except ValueError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()

    except SyntaxError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()
    except NameError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()

    bench_vals = _read_bench(benchmark, list(ts_fund.index))
    # print bench_vals
    multiple = ts_fund[0] / bench_vals[0]
    bench_vals = bench_vals * multiple

    print "Details of the Performance of the portfolio"
    print "Total Fund:", ts_fund[0]
    print 'Data Range : ', ts_fund.index[0], ' to ', ts_fund.index[-1]
    print 'Sharpe Ratio of Fund :', tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0]
    print 'Sharpe Ratio of ' + benchmark + ' :', tsu.get_sharpe_ratio(
        tsu.daily(bench_vals))[0]
    print 'Total Return of Fund : ', (((ts_fund[-1] / ts_fund[0]) - 1) + 1)
    print 'Total Return of ' + benchmark + ' :', ((
        (bench_vals[-1] / bench_vals[0]) - 1) + 1)
    print 'Standard Deviation of Fund : ', np.std(tsu.daily(ts_fund.values))
    print 'Standard Deviation of ' + benchmark + ' :', np.std(
        tsu.daily(bench_vals.values))

    print 'Average Daily Return of Fund : ', np.mean(tsu.daily(ts_fund.values))
    print 'Average Daily Return of ' + benchmark + ' :', np.mean(
        tsu.daily(bench_vals.values))
    KS, P = ks_statistic(ts_fund)
    print "KS P:", KS, P
    plt.clf()
    plt.plot(ts_fund.index, ts_fund.values)
    plt.plot(ts_fund.index, bench_vals)
    plt.ylabel('Fund Value', size='xx-small')
    plt.xlabel('Date', size='xx-small')
    plt.legend(['Fund', 'Benchmark'], loc='best')
    plt.xticks(size='xx-small')
    plt.yticks(size='xx-small')
    plt.grid(axis='both')
    plt.show()
    savefig('funds.png', format='png')

    try:
        report = input("Want to generate report(Press 1): ")

    except ValueError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()

    except SyntaxError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()
    except NameError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()

    if report == 1:
        name = str(dt.datetime.now())
        file_conv = name.replace(" ", "")
        file_conv1 = file_conv.replace(":", "_")
        file_conv2 = file_conv1.replace("-", "_")
        filename = file_conv2 + ".html"
        print 'Generating report..', filename
        html_file = open(filename, "w+")
        html_file.write("<HTML>\n")
        html_file.write("<HEAD>\n")
        html_file.write("<TITLE>MSim Generated Report:" + name + "</TITLE>\n")
        html_file.write("<H1>Details of the Performance of the portfolio</H1>")
        html_file.write("</HEAD>\n\n")
        html_file.write("<BODY>\n\n")
        html_file.write(
            "<IMG SRC = \'./funds.png\' title=Funds vs Benchmark align=right height= 500 width = 600/>\n"
        )
        html_file.write("<p><i> Total Fund:" + str(ts_fund[0]) + "</p\n")
        html_file.write("<p><i>Data Range : </i>," + str(ts_fund.index[0]) +
                        "to ," + str(ts_fund.index[-1]) + "</p\n")
        html_file.write("<p><i>Sharpe Ratio of Fund :</i>" +
                        str(tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0]) +
                        "</p\n")
        html_file.write("<p><i>Sharpe Ratio of </i>" + benchmark + ":" +
                        str(tsu.get_sharpe_ratio(tsu.daily(bench_vals))[0]) +
                        "</p\n")

        html_file.write("<p><i>Sharpe Ratio of Fund : ,</i>" +
                        str(tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0]) +
                        "</p\n")
        html_file.write("<p><i>Sharpe Ratio of </i>" + benchmark + ":" +
                        str(tsu.get_sharpe_ratio(tsu.daily(bench_vals))[0]) +
                        "</p\n")
        html_file.write("<p><i>Total Return of Fund :</i>" +
                        str((((ts_fund[-1] / ts_fund[0]) - 1) + 1)) + "</p\n")
        html_file.write("<p><i>Total Return of </i>" + benchmark + " : " +
                        str((((bench_vals[-1] / bench_vals[0]) - 1) + 1)) +
                        "</p\n")
        html_file.write("<p><i>Standard Deviation of Fund : </i>" +
                        str(np.std(tsu.daily(ts_fund.values))) + "</p\n")
        html_file.write("<p><i>Standard Deviation of </i>" + benchmark + ":" +
                        str(np.std(tsu.daily(bench_vals.values))) + "</p\n")

        html_file.write("<p><i>Average Daily Return of Fund : </i> " +
                        str(np.mean(tsu.daily(ts_fund.values))) + "</p\n")
        html_file.write("<p><i>Average Daily Return of </i>" + benchmark +
                        " : " + str(np.mean(tsu.daily(bench_vals.values))) +
                        "</p\n")
        html_file.write(
            "<link type=text/csv rel=stylesheet href=D:\Sim\MSimv2.1/orders.csv />"
        )

        html_file.write("</BODY>\n\n")
        html_file.write("</HTML>")
コード例 #6
0
ファイル: analyze.py プロジェクト: nehudesi/MSim
def analyzeMain():
    ts_fund = _csv_read_fund('values.csv')
    try:
        benchmark = raw_input('Enter Benchmark: ')
    except ValueError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()

    except SyntaxError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()
    except NameError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()


    bench_vals = _read_bench(benchmark, list(ts_fund.index))
    # print bench_vals
    multiple = ts_fund[0] / bench_vals[0]
    bench_vals = bench_vals * multiple
    
    print "Details of the Performance of the portfolio"
    print "Total Fund:", ts_fund[0]
    print 'Data Range : ', ts_fund.index[0], ' to ', ts_fund.index[-1]
    print 'Sharpe Ratio of Fund :', tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0]
    print 'Sharpe Ratio of ' + benchmark + ' :', tsu.get_sharpe_ratio(
                                              tsu.daily(bench_vals))[0]
    print 'Total Return of Fund : ', (((ts_fund[-1] / ts_fund[0]) - 1) + 1)
    print 'Total Return of ' + benchmark + ' :', (((bench_vals[-1]
                                                / bench_vals[0]) - 1) + 1)
    print 'Standard Deviation of Fund : ', np.std(tsu.daily(
                                           ts_fund.values))
    print 'Standard Deviation of ' + benchmark + ' :', np.std(
                                           tsu.daily(bench_vals.values))

    print 'Average Daily Return of Fund : ', np.mean(tsu.daily(
                                           ts_fund.values))
    print 'Average Daily Return of ' + benchmark + ' :', np.mean(
                                           tsu.daily(bench_vals.values))
    KS, P = ks_statistic(ts_fund)    
    print "KS P:" , KS,P    
    plt.clf()
    plt.plot(ts_fund.index, ts_fund.values)
    plt.plot(ts_fund.index, bench_vals)
    plt.ylabel('Fund Value', size='xx-small')
    plt.xlabel('Date', size='xx-small')
    plt.legend(['Fund', 'Benchmark'], loc='best')
    plt.xticks(size='xx-small')
    plt.yticks(size='xx-small')
    plt.grid(axis='both')
    plt.show()
    savefig('funds.png', format = 'png')
    
    try:
        report = input("Want to generate report(Press 1): ")
        
    except ValueError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()
         
    except SyntaxError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()
    except NameError:
        basic.print_clrscr()
        basic.print_logo()
        basic.go_back()        
        
    if report == 1:
        name = str(dt.datetime.now())
        file_conv = name.replace(" ", "")
        file_conv1 = file_conv.replace(":","_")
        file_conv2 = file_conv1.replace("-","_")
        filename = file_conv2+".html"
        print 'Generating report..', filename
        html_file  =  open(filename,"w+")
        html_file.write("<HTML>\n")
        html_file.write("<HEAD>\n")
        html_file.write("<TITLE>MSim Generated Report:" + name + "</TITLE>\n")    
        html_file.write("<H1>Details of the Performance of the portfolio</H1>")
        html_file.write("</HEAD>\n\n")
        html_file.write("<BODY>\n\n")
        html_file.write("<IMG SRC = \'./funds.png\' title=Funds vs Benchmark align=right height= 500 width = 600/>\n")
        html_file.write("<p><i> Total Fund:" +str(ts_fund[0])+ "</p\n")        
        html_file.write("<p><i>Data Range : </i>," +str(ts_fund.index[0])+ "to ," +str(ts_fund.index[-1])+"</p\n")
        html_file.write("<p><i>Sharpe Ratio of Fund :</i>"+str(tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0])+"</p\n")
        html_file.write("<p><i>Sharpe Ratio of </i>" + benchmark + ":" +str(tsu.get_sharpe_ratio(tsu.daily(bench_vals))[0])+"</p\n")

        html_file.write("<p><i>Sharpe Ratio of Fund : ,</i>" +str(tsu.get_sharpe_ratio(tsu.daily(ts_fund))[0])+"</p\n")
        html_file.write("<p><i>Sharpe Ratio of </i>" + benchmark + ":" +str(tsu.get_sharpe_ratio(tsu.daily(bench_vals))[0])+"</p\n")
        html_file.write("<p><i>Total Return of Fund :</i>" +str((((ts_fund[-1] / ts_fund[0]) - 1) + 1))+"</p\n")
        html_file.write("<p><i>Total Return of </i>" + benchmark + " : " +str((((bench_vals[-1]/ bench_vals[0]) - 1) + 1))+"</p\n")
        html_file.write("<p><i>Standard Deviation of Fund : </i>" +str(np.std(tsu.daily(ts_fund.values)))+"</p\n")
        html_file.write("<p><i>Standard Deviation of </i>"+ benchmark + ":" +str(np.std(tsu.daily(bench_vals.values)))+"</p\n")
    
        html_file.write("<p><i>Average Daily Return of Fund : </i> " +str(np.mean(tsu.daily(ts_fund.values)))+"</p\n")
        html_file.write("<p><i>Average Daily Return of </i>" + benchmark + " : " + str(np.mean(tsu.daily(bench_vals.values)))+"</p\n")
        html_file.write("<link type=text/csv rel=stylesheet href=D:\Sim\MSimv2.1/orders.csv />")

        html_file.write("</BODY>\n\n")
        html_file.write("</HTML>")