""" See http://qoppac.blogspot.co.uk/2015/11/using-random-data.html for more examples """ from common import arbitrary_timeseries from commonrandom import generate_trendy_price from matplotlib.pyplot import show ans = arbitrary_timeseries(generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0, Volscale=0.0)) print ans print len(ans) ans.plot() show() ans = arbitrary_timeseries(generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0, Volscale=0.1)) ans.plot() show() ans = arbitrary_timeseries(generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0, Volscale=0.5)) ans.plot() show()
import logging """ See http://qoppac.blogspot.co.uk/2015/11/using-random-data.html for more examples """ from common import arbitrary_timeseries from commonrandom import generate_trendy_price from matplotlib.pyplot import show ans = arbitrary_timeseries( generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0, Volscale=0.0)) print ans print len(ans) ans.plot() show() ans = arbitrary_timeseries( generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0, Volscale=0.1)) ans.plot() show() ans = arbitrary_timeseries( generate_trendy_price(Nlength=180, Tlength=30, Xamplitude=10.0,
want_skew=0.0 want_Sharpes=[0.5, 1.0] length_period_years=20 # calculations length_period=length_period_years*DAYS_IN_YEAR want_ann_stdev=0.2 want_ann_mean=[ann_SR*want_ann_stdev for ann_SR in want_Sharpes] want_mean_list=[this_ann_mean/DAYS_IN_YEAR for this_ann_mean in want_ann_mean] want_stdev=want_ann_stdev/ROOT_DAYS_IN_YEAR happywithcurve=False while not happywithcurve: ## generate a new Curve equitycurves=[arbitrary_timeseries(autocorr_skewed_returns(rho, want_mean, want_stdev, want_skew, size=length_period), index_start=pd.datetime(1995,1,1)) for want_mean in want_mean_list] equitycurves_pd=pd.concat(equitycurves, axis=1) equitycurves_pd.columns=["A", "B"] equitycurves_pd.cumsum().plot() show() ans=raw_input("Happy with this? Y / N? ") if ans=="Y": happywithcurve=True sliced_data=slices_for_ts(equitycurves[0]) start_point=sliced_data[0] for idx in range(len(sliced_data))[1:]: sliced_curves=[eq_curve[start_point:sliced_data[idx]] for eq_curve in equitycurves] equitycurves_pd=pd.concat(sliced_curves, axis=1)
want_stdev) avg_annual_returns_this_scenario = [] avg_drawdowns_this_scenario = [] max_drawdowns_this_scenario = [] avg_avg_ratio_this_scenario = [] avg_max_ratio_this_scenario = [] ## Window '1000' is no ovelay at all for N_length in N_windows: print "N_length: %d" % N_length ## Generate a lot of random data many_curves_raw = [ arbitrary_timeseries( autocorr_skewed_returns(want_rho, adj_want_mean, adj_want_stdev, adj_want_skew, size=curve_length)) for notused in range(monte_runs) ] ## Apply the overlay many_curves = [ account_curve(apply_overlay(x, N_length, period_stdev, costs_SR)) for x in many_curves_raw ] ## Calc statistics annual_returns_these_curves = [ np.mean(x) * period_adj for x in many_curves ]
""" See http://qoppac.blogspot.co.uk/2015/11/using-random-data.html for more examples """ from common import arbitrary_timeseries from commonrandom import skew_returns_annualised from common import cum_perc from matplotlib.pyplot import show ans = arbitrary_timeseries( skew_returns_annualised(annualSR=0.5, want_skew=0.0, size=2500)) cum_perc(ans).plot() show() ans = arbitrary_timeseries( skew_returns_annualised(annualSR=0.5, want_skew=1.0, size=2500)) cum_perc(ans).plot() show() ans = arbitrary_timeseries( skew_returns_annualised(annualSR=1.0, want_skew=-3.0, size=2500)) cum_perc(ans).plot() show()
print "Scenario:" print scenario (notUsed, want_mean, want_stdev, want_skew, want_rho)=scenario (adj_want_mean, adj_want_skew, adj_want_stdev)=adj_moments_for_rho(want_rho, want_mean, want_skew, want_stdev) avg_annual_returns_this_scenario=[] avg_drawdowns_this_scenario=[] max_drawdowns_this_scenario=[] avg_avg_ratio_this_scenario=[] avg_max_ratio_this_scenario=[] ## Window '1000' is no ovelay at all for N_length in N_windows: print "N_length: %d" % N_length ## Generate a lot of random data many_curves_raw=[arbitrary_timeseries(autocorr_skewed_returns(want_rho, adj_want_mean, adj_want_stdev, adj_want_skew, size=curve_length)) for notused in range(monte_runs)] ## Apply the overlay many_curves=[account_curve(apply_overlay(x, N_length, period_stdev, costs_SR)) for x in many_curves_raw] ## Calc statistics annual_returns_these_curves=[np.mean(x)*period_adj for x in many_curves] avg_drawdowns_these_curves=[x.avg_drawdown() for x in many_curves] max_drawdowns_these_curves=[x.worst_drawdown() for x in many_curves] ## Add results avg_annual_returns_this_scenario.append(np.mean(annual_returns_these_curves)) avg_drawdowns_this_scenario.append(np.nanmean(avg_drawdowns_these_curves)) max_drawdowns_this_scenario.append(np.nanmean(max_drawdowns_these_curves)) avg_avg_ratio_this_scenario.append(np.nanmean([divxx(x) for x in zip(annual_returns_these_curves, avg_drawdowns_these_curves)])) avg_max_ratio_this_scenario.append(np.nanmean([divxx(x) for x in zip(annual_returns_these_curves, max_drawdowns_these_curves)]))
import logging """ See http://qoppac.blogspot.co.uk/2015/11/using-random-data.html for more examples """ from common import arbitrary_timeseries from commonrandom import skew_returns_annualised from common import cum_perc from matplotlib.pyplot import show ans=arbitrary_timeseries(skew_returns_annualised(annualSR=0.5, want_skew=0.0, size=2500)) cum_perc(ans).plot() show() ans=arbitrary_timeseries(skew_returns_annualised(annualSR=0.5, want_skew=1.0, size=2500)) cum_perc(ans).plot() show() ans=arbitrary_timeseries(skew_returns_annualised(annualSR=1.0, want_skew=-3.0, size=2500)) cum_perc(ans).plot() show()
(notUsed, want_mean, want_stdev, want_skew, want_rho) = scenario (adj_want_mean, adj_want_skew, adj_want_stdev) = adj_moments_for_rho(want_rho, want_mean, want_skew, want_stdev) avg_annual_returns_this_scenario = [] avg_drawdowns_this_scenario = [] max_drawdowns_this_scenario = [] avg_avg_ratio_this_scenario = [] avg_max_ratio_this_scenario = [] ## Window '1000' is no ovelay at all for N_length in N_windows: print "N_length: %d" % N_length ## Generate a lot of random data many_curves_raw = [ arbitrary_timeseries( autocorr_skewed_returns(want_rho, adj_want_mean, adj_want_stdev, adj_want_skew, size=curve_length) ) for notused in range(monte_runs) ] ## Apply the overlay many_curves = [account_curve(apply_overlay(x, N_length, period_stdev, costs_SR)) for x in many_curves_raw] ## Calc statistics annual_returns_these_curves = [np.mean(x) * period_adj for x in many_curves] avg_drawdowns_these_curves = [x.avg_drawdown() for x in many_curves] max_drawdowns_these_curves = [x.worst_drawdown() for x in many_curves] ## Add results avg_annual_returns_this_scenario.append(np.mean(annual_returns_these_curves)) avg_drawdowns_this_scenario.append(np.nanmean(avg_drawdowns_these_curves))