from simple_order_gen import SimpleOrderGen from prediction_performance import PredictionPerformance import matplotlib.pyplot as plt symbol = "GOOG" learn_start_date = dt.datetime(2004, 9, 1) learn_end_date = dt.datetime(2011, 1, 1) now = dt.datetime.now() today = dt.datetime(now.year, now.month, now.day) stock_period = StockPeriod(symbol, dt.datetime(2000, 1, 1), today) learners = map( lambda fs: EnsembleLearner.machine_learner_for_features_string(symbol, fs, stock_period), ensemble_feats.goog_lower_bound8, ) ensemble = EnsembleLearner(symbol, learn_start_date, learn_end_date, stock_period, learners) ensemble.learn() predictions = ensemble.predict_period(dt.datetime(2012, 1, 1), dt.datetime(2013, 1, 1), 0.1) pp = PredictionPerformance(predictions, ensemble.learners[0].feats.relative_data["close"][symbol], 2) print "tot return:", pp.tot_return() print "mean return:", pp.return_mean() print "std return:", pp.return_std() print "sharpe's ratio:", pp.sharpe_ratio() pp.predictions["tot_return"].plot() plt.show()
if use_another_domain: another_domain_predictions = joined_cached_predicitons[settings.test_end_time:(settings.test_end_time + relativedelta(months=1))] #another_domain_predictions = joined_cached_predicitons[(settings.val_end_time + relativedelta(months=1)):(settings.val_end_time + relativedelta(months=2) )] another_pp = PredictionPerformance(another_domain_predictions, first_learners[0].feats.relative_data['close'][symbol], 2) another_domain_pp.append(another_pp) data_holder = [] if use_another_domain: for pp, pp_val, pp_another in iter.izip(prediction_performances, val_prediction_performances, another_domain_pp): data_holder.append([pp.tot_return(), pp.return_mean(), pp.return_std(), pp.sharpe_ratio(), pp_val.tot_return(), pp_another.tot_return()]) chart_df = pd.DataFrame(data= data_holder, columns = ["tot_return", "mean", "std", "sharpe", "val_return", "cur_return"]) # chart_df["cur_return"] = ((1 + chart_df["cur_return"]) ** 12) - 1 chart_df["cur_return"] = chart_df["cur_return"] * 12 #chart_df["tot_return"] = chart_df["tot_return"] * 12 else: for pp, pp_val in iter.izip(prediction_performances, val_prediction_performances): data_holder.append([pp.tot_return(), pp.return_mean(), pp.return_std(), pp.sharpe_ratio(), pp_val.tot_return()])