Skip to content

Instantly share code, notes, and snippets.

View robcarver17's full-sized avatar

Robert Carver robcarver17

View GitHub Profile
import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
from scipy.optimize import minimize
import numpy as np
import scipy.stats as stats
from scipy.stats import norm
import matplotlib
matplotlib.use("TkAgg")
matplotlib.rcParams.update({'font.size': 22})
from matplotlib.pyplot import hist, plot
import pandas as pd
import numpy as np
from syscore.dateutils import BUSINESS_DAYS_IN_YEAR, ROOT_BDAYS_INYEAR
from syscore.accounting import accountCurveSingleElementOneFreq as accountCurve
def arbitrary_timeindex(Nperiods, index_start=pd.datetime(2000, 1, 1)):
"""
The starter system has the following features:
- single market
- binary forecast from simple MAV
- exit from trailing stop loss
- fixed positions once in trade
"""
### Following code is boilerplate for optimising
import matplotlib
matplotlib.use("TkAgg")
import pandas as pd
from scipy.optimize import minimize
import numpy as np
from scipy.stats import norm
from collections import namedtuple
def optimise_for_corr_matrix(corr_matrix):
@robcarver17
robcarver17 / scratch_16.py
Last active January 21, 2022 00:34
get system risk
import pandas as pd
import numpy as np
def get_positions_as_proportion_of_capital(system):
list_of_instruments = system.get_instrument_list()
positions = [system.portfolio.get_actual_position(instrument_code) for instrument_code in list_of_instruments]
positions = pd.concat(positions, axis=1)
positions.columns = list_of_instruments
positions[positions.isna()] = 0.0
@robcarver17
robcarver17 / scratch_16.py
Last active January 21, 2022 00:34
Bin plotting
import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
def plot_results_for_bin_size(size, pd_result, centre_on_mean = False):
bins = get_bins_for_size(size, pd_result, centre_on_mean = centre_on_mean)
import pandas as pd
import numpy as np
def get_expected_risk_for_system(system):
value_of_positions_proportion_capital = get_positions_as_proportion_of_capital(system)
instrument_returns = get_instrument_returns(system)
instrument_returns = instrument_returns.ffill().reindex(value_of_positions_proportion_capital.index)
#import matplotlib
#matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
from scipy.optimize import minimize
import numpy as np
### Following is the optimisation code:
### First the main function.
def optimise_with_sigma(sigma, mean_list):
import numpy as np
from systems.provided.futures_chapter15.basesystem import *
import numpy as np
from syscore.algos import robust_vol_calc
## test kurtosis AND skew with trading rules
from copy import copy
seq_length = 20
def decimalToBinary(n):
# return padded binary number as list
binary_number_as_str=bin(n)
binary_number_as_str = binary_number_as_str[2:]
binary_number_as_str = binary_number_as_str.zfill(seq_length)
binary_number_as_list = [int(x) for x in binary_number_as_str]