Ejemplo n.º 1
0
 def __init__(self, dataset, rows=1, grid=True):
     # We need to handle a strategy being passed
     if isinstance(dataset, strategy.Strategy):
         self.strategy = dataset
         self.data_frame = self.strategy.dataset.data_frame
         self.realtime_data_frame = dataset.realtime_data_frame
     else: # Assume a dataset was passed
         self.strategy = None
         self.data_frame = dataset.data_frame
         self.realtime_data_frame = None
     self.data_frame.reset_index(inplace=True)
     date_conversion = lambda date: date2num(date.to_pydatetime())
     self.data_frame['DATE'] = self.data_frame['Date'].apply(date_conversion)
     self.rows = rows
     if grid:
         plt.rc('axes', grid=True)
         plt.rc('grid', color='0.75', linestyle='-', linewidth='0.2')
     self.current_figure = None
     self.figure_first_ax = None
     self.figure_rows = 1
     self.legend = []
     self.legend_labels = []
     self.add_figure(self.rows)
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('dataset: %s  rows: %s  grid: %s' %(dataset, rows, grid))
Ejemplo n.º 2
0
 def __init__(self, strategy, trading_profile):
     self.strategy = strategy
     self.trading_profile = trading_profile
     self.trade_history = {}
     self.available_money = self.trading_profile.capital
     self.capital = self.trading_profile.capital
     self.available_money_history = pd.Series(
         index=self.strategy.dataset.data_frame.index)
     self.available_capital_history = pd.Series(
         index=self.strategy.dataset.data_frame.index)
     self.ongoing_trades = {}
     self.trades = 0
     self.average_gain = 0.0
     self.sharpe_ratio = 0.0
     self.average_trading_amount = 0.0
     self.average_bars = 0.0
     self.total_fees = 0.0
     self.average_fees = 0.0
     self.total_slippage = 0.0
     self.average_slippage = 0.0
     self.winning_trades = 0
     self.losing_trades = 0
     self.average_winning_gain = 0.0
     self.average_losing_gain = 0.0
     self.percent_profitable = 0.0
     self.gross_profit = 0.0
     self.gross_loss = 0.0
     self.net_profit = 0.0
     self.lacking_capital = 0
     self._require_finalize_calculations = False
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('strategy: %s  trading_profile: %s' %
                      (strategy, trading_profile))
Ejemplo n.º 3
0
 def __init__(self,
              train_data,
              prediction_data,
              network_type=FEED_FORWARD_NETWORK,
              network_dataset_type=SUPERVISED_DATASET,
              trainer_type=BACKPROP_TRAINER):
     self.train_data = train_data
     self.prediction_data = prediction_data
     self.network_type = network_type
     self.network_dataset_type = network_dataset_type
     self.trainer_type = trainer_type
     self.network = None
     self.network_dataset = None
     self.dataset = None
     self.trainer = None
     self.trained_iterations = 0
     self.momentum = None
     self.learning_rate = None
     self.hidden_layers = None
     self.prediction_window = None
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('train_data: %s  prediction_data: %s, network_type: %s, \
                       network_dataset_type: %s, trainer_type: %s'
                      %(train_data, prediction_data, network_type, \
                        network_dataset_type, trainer_type))
Ejemplo n.º 4
0
 def __init__(self,
              train_data,
              prediction_data,
              ensemble_type=RANDOM_FOREST_REGRESSOR):
     self.train_data = train_data
     self.prediction_data = prediction_data
     self.ensemble_type = ensemble_type
     self.ensemble = None
     self.prediction_window = None
     self.look_back_window = None
     self.training_set = []
     self.target_set = []
     self.normalize = True
     self.number_of_estimators = 150
     self.max_depth = None
     self.random_state = 0
     self.min_samples_split = 2
     self.number_of_jobs = 2
     self.learning_rate = 1.0  # For Gradient Boosting
     self.rating = None
     self.feature_importances = None
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info(
         'train_data: %s  prediction_data: %s  ensemble_type: %s' %
         (train_data, prediction_data, ensemble_type))
Ejemplo n.º 5
0
 def __init__(self, symbol_list, data_connection, start_datetime=None, \
              end_datetime=None, periods=None, granularity=None):
     self.symbol_list = symbol_list
     # Either specify a start and end date or a number of periods since now
     assert periods != None or start_datetime != None
     self.start_datetime = start_datetime
     self.end_datetime = end_datetime
     self.periods = periods
     self.granularity = granularity
     self.data_connection = data_connection
     self.data_frame = pd.DataFrame()
     self.technical_indicators = []
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('symbol_list: %s  \
                       data_connection: %s  \
                       start_datetime: %s  \
                       end_datetime: %s  \
                       periods: %s  \
                       granularity: %s'
                      %(symbol_list, \
                        data_connection, \
                        start_datetime, \
                        end_datetime, \
                        periods, \
                        granularity))
Ejemplo n.º 6
0
 def __init__(self, capital, trading_amount, trading_fee, slippage=0.0):
     self.capital = capital
     self.trading_amount = trading_amount
     self.trading_fee = trading_fee
     self.slippage = slippage
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('Initialized - %s' %self)
Ejemplo n.º 7
0
 def __init__(self, dataset, criteria_groups, trading_profile):
     self.dataset = dataset
     self.criteria_groups = criteria_groups
     self.trading_profile = trading_profile
     self.name = 'Strategy'
     self.report = report.Report(self, self.trading_profile)
     self.realtime_data_frame = pd.DataFrame() # Used for backtesting
     self.first_pass = True # Flag to execute certain actions on first bar of backtest
     self.upcoming_actions = {}
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('Initialized - %s' %self)
Ejemplo n.º 8
0
 def __init__(self, datetime, action, symbol, price, shares, money, fee,
              slippage):
     self.datetime = datetime
     self.action = action
     self.symbol = symbol
     self.price = price
     self.shares = shares
     self.money = money
     self.fee = fee
     self.slippage = slippage
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('Initialized - %s' % self)
Ejemplo n.º 9
0
 def __init__(self,
              username,
              password,
              recipient,
              server='smtp.gmail.com',
              port=587):
     self.username = username
     self.password = password
     self.recipient = recipient
     self.server = server
     self.port = port
     self.session = self._get_session()
     self.headers = None
     self.body = None
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info(
         'username: %s  password: *  recipient: %s  server: %s  port: %s' %
         (username, recipient, server, port))
Ejemplo n.º 10
0
 def __init__(self, criteria_list, action, symbol):
     self.criteria_list = criteria_list
     self.action = action
     self._action = 0
     self.symbol = str(symbol)
     # Add Actions Criteria Automatically
     if self.action == Long():
         self.criteria_list.append(Not(InMarket(self.symbol)))
         self._action = LONG
     elif self.action == LongExit():
         self.criteria_list.append(IsLong(self.symbol))
         self._action = LONG_EXIT
     elif self.action == Short():
         self.criteria_list.append(Not(InMarket(self.symbol)))
         self._action = SHORT
     elif self.action == ShortExit():
         self.criteria_list.append(IsShort(self.symbol))
         self._action = SHORT_EXIT
     else:
         raise InvalidAction()
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('New Criteria Group - %s for %s (%s)' \
                      %(str(action).upper(), symbol, criteria_list))
Ejemplo n.º 11
0
 def __init__(self):
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info('Initialized')
Ejemplo n.º 12
0
 def __init__(self, name):
     self.name = name.replace(' ', '').replace('_', '').replace('-',
                                                                '').lower()
     self.logger = logger.Logger(self.__class__.__name__)
Ejemplo n.º 13
0
 def __init__(self, symbols):
     self.symbols = [Symbol(symbol) for symbol in symbols]
     self.logger = logger.Logger(self.__class__.__name__)
     self.logger.info(symbols)
Ejemplo n.º 14
0
 def __init__(self):
     self.logger = logger.Logger(self.__class__.__name__)
Ejemplo n.º 15
0
 def __init__(self):
     self.logger = logger.Logger(self.__class__.__name__)
     # Some TIs don't require the entire data_frame history.
     self.num_bars_required = None  # Requires all history by default