from simple_back_test import *
import warnings
warnings.filterwarnings('ignore')
import pickle
from plotnine import *
from dfply import *
ff = "../../data/portfolio_simulations_many.pickle"
br_runs = pickle.load(open(ff, 'rb'))
runs = all_runs_to_df(br_runs)
runs = runs >> arrange('annualised_ret', ascending=False)
def table_and_chart(df, gg):
df[gg] = df[gg].astype('category')
summarised = (df >>
group_by(gg) >>
summarise(
max_ann_ret = colmax(X.annualised_ret),
mean_ann_ret = mean(X.annualised_ret),
min_ann_ret = colmin(X.annualised_ret),
mean_sharpe = mean(X.sharpe),
mean_total_tracks=mean(X.total_number_tracks)))
display(summarised)
print(ggplot(df, aes('annualised_ret')) + geom_density(aes(color = gg), alpha = 0.5))
return summarised
max_price_diffs = runs >> mask(X.execution_slippage == 0.1, X.clip_individual_returns == 3, X.new_streams_per_date == 1/7)
a = table_and_chart(max_price_diffs, 'max_price')
signed_deals_diff = runs >> mask(X.execution_slippage == 0.1, X.clip_individual_returns == 3, X.max_price == 50000)
a = table_and_chart(signed_deals_diff, 'new_streams_per_date')
df = runs >> mask(X.execution_slippage == 0.1, X.new_streams_per_date == 3/7, X.max_price == 50000)
a = table_and_chart(df, 'clip_individual_returns')
df = runs >> mask(X.clip_individual_returns == 3, X.new_streams_per_date == 3/7, X.max_price == 50000)
a = table_and_chart(df, 'execution_slippage')
runs.iloc[0]
actual_stream_counts