Skip to content

Instantly share code, notes, and snippets.

View robcarver17's full-sized avatar

Robert Carver robcarver17

View GitHub Profile
from systems.provided.futures_chapter15.basesystem import *
sys = futures_system()
config = sys.config
del(config.instrument_weights) # ensures all instruments are used equally weighted
config.forecast_weights=dict(ewmac16_64=0.333, ewmac32_128=0.333, ewmac64_256=0.3333)
config.use_forecast_div_mult_estimates=True
config.use_instrument_div_mult_estimates=True
config.use_forecast_scale_estimates=False
system = futures_system(config=config)
acc = system.accounts.portfolio()
from sysdata.quandl.quandl_futures import quandlFuturesConfiguration, quandlFuturesContractPriceData
from sysdata.futures.contracts import listOfFuturesContracts
from sysdata.futures.instruments import futuresInstrument
from sysdata.mongodb.mongo_roll_data import mongoRollParametersData
import numpy as np
import pandas as pd
def get_roll_parameters_from_mongo(instrument_code):
"""
Get some data to test the handcrafting method
"""
from sysdata.csv.csv_sim_futures_data import csvFuturesSimData
from syscore.handcrafting import Portfolio
import pandas as pd
data=csvFuturesSimData()
code_list = ['BOBL', 'BUND', 'US10', 'US20', 'KR3','KR10','EDOLLAR', 'CORN', 'CRUDE_W', 'GAS_US']
"""
Implement the handcrafting method
This is 'self contained code' which requires wrapping before using in pysystemtrade
"""
## CAVEATS:
## Uses weekly returns (resample needed first)
## Doesn't deal with missing assets
import matplotlib.pyplot as plt
import pandas as pd
import scipy.stats as stats
import numpy as np
from systems.provided.futures_chapter15.estimatedsystem import *
system = futures_system()
del(system.config.instruments) # so we can get results for everything
import random
from copy import copy
def ishead():
result=random.uniform(0,1)
if result>=0.5:
return 1
else:
return 0
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]
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
#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 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)