コード例 #1
0
"""
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()
コード例 #2
0
ファイル: randompriceexample.py プロジェクト: verawatk/kod
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,
コード例 #3
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)
コード例 #4
0
                                           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
        ]
コード例 #5
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)
コード例 #6
0
"""
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()
コード例 #7
0
 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)]))
コード例 #8
0
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))