def testcode_marketsim(symbol = 'ML_based', base_dir = './orders/', \
sv = 100000, leverLimit = True, verbose = True):
### Use one of the order folders below ###
# of = "./orders/benchmark.csv"
# of = "./orders/bestPossibleStrategy.csv"
# of = "./orders/rule_based.csv"
# of = "./orders/ML_based.csv"
of = symbol_to_path(symbol, base_dir)
# sv = 100000 # starting value of portfolio, i.e. initial cash available
# Process orders
portVals = compute_portvals(of, sv, leverLimit)
if isinstance(portVals, pd.DataFrame):
portVals = portVals[portVals.columns[0]] # just get the first column as a Series
else:
"warning, code did not return a DataFrame"
start_date = portVals.index[0]
end_date = portVals.index[-1]
pricesSPX = get_data(['$SPX'], pd.date_range(start_date, end_date))
pricesSPX = pricesSPX['$SPX']
cum_ret, avg_daily_ret, std_daily_ret, sharpe_ratio = get_portfolio_stats(portVals, \
daily_rf = 0, samples_per_year = 252)
cum_ret_SPY, avg_daily_ret_SPY, std_daily_ret_SPY, sharpe_ratio_SPY = \
get_portfolio_stats(pricesSPX, daily_rf = 0, samples_per_year = 252)
# Compare portfolio against $SPX
if verbose == True:
dfTemp = pd.concat([portVals, pricesSPX], axis = 1, keys = ['portfolio', '$SPX'])
plot_normalized_data(dfTemp,'', '', '')
print "\nDate Range: {} to {}".format(start_date.date(), end_date.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])
return cum_ret, portVals
marketsim.py 文件源码
python
阅读 17
收藏 0
点赞 0
评论 0
评论列表
文章目录