teststrategy.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:ReinforcementL_trading 作者: zhangbppku8663 项目源码 文件源码
def print_port(of, sv=1000000, output=False, lvrg=False, symbol='SPY'):
    '''
    :param of: .csv order file
    :param sv: starting value of the portfolio
    :param output: whether to output info
    :param lvrg: whether to consider leverage of the portfolio
    :param symbol: stock symbol to consider
    :return: void
    '''

    portvals, start_date, end_date = compute_portvals(orders_file=of, start_val=sv, lvrg=lvrg)
    if isinstance(portvals, pd.DataFrame):
        portvals = portvals[portvals.columns[0]]  # just get the first column
    else:
        "warning, code did not return a DataFrame"

    cum_ret, avg_daily_ret, std_daily_ret, sharpe_ratio = compute_portfolio_stats(portvals)
    # SPX data originally has a'$" in front which creates problem as an improper name
    symb_vals = get_data([symbol], pd.date_range(start_date, end_date))

    cum_ret_SPY, avg_daily_ret_SPY, std_daily_ret_SPY, sharpe_ratio_SPY = compute_portfolio_stats(symb_vals.SPY_test)

    if output:
        # Compare portfolio against $SPX
        print "Date Range: {} to {}".format(start_date, end_date)
        print
        print "Sharpe Ratio of Fund: {}".format(sharpe_ratio)
        print "Sharpe Ratio of SPY : {}".format(sharpe_ratio_SPY)
        print
        print "Cumulative Return of Fund: {}".format(cum_ret)
        print "Cumulative Return of SPY : {}".format(cum_ret_SPY)
        print
        print "Standard Deviation of Fund: {}".format(std_daily_ret)
        print "Standard Deviation of SPY : {}".format(std_daily_ret_SPY)
        print
        print "Average Daily Return of Fund: {}".format(avg_daily_ret)
        print "Average Daily Return of SPY : {}".format(avg_daily_ret_SPY)
        print
        print "Final Portfolio Value: {}".format(portvals[-1])

        norm_port = portvals / portvals[0]
        norm_SPY = symb_vals.SPY_test / symb_vals.SPY_test[0]
        plt.plot(norm_port)
        plt.plot(norm_SPY)
        plt.title('Daily portfolio value and SPY')
        plt.ylabel('Normalized price')
        plt.legend(['Portfolio', 'SPY'], loc=2)
        plt.show()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号