From bbfebab645c1b61fc77ace76cba01f0b9ad9faa4 Mon Sep 17 00:00:00 2001 From: Juan Pablo Amoroso Date: Wed, 4 Mar 2020 17:08:39 -0300 Subject: [PATCH] Fixed __init__ imports (solves unused import warning from flake8). --- backtester/__init__.py | 2 ++ backtester/backtester.py | 14 ++++++++++---- backtester/datahandler/__init__.py | 2 ++ backtester/statistics/__init__.py | 2 ++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/backtester/__init__.py b/backtester/__init__.py index afb16ef..1a26973 100644 --- a/backtester/__init__.py +++ b/backtester/__init__.py @@ -1,3 +1,5 @@ from . import datahandler from .backtester import Backtest from .enums import Stock, Type, Direction + +__all__ = ['datahandler', 'Backtest', 'Stock', 'Type', 'Direction'] diff --git a/backtester/backtester.py b/backtester/backtester.py index 2c6890d..c5ec40e 100644 --- a/backtester/backtester.py +++ b/backtester/backtester.py @@ -42,11 +42,11 @@ class Backtest: return self @property - def strategy(self): + def options_strategy(self): return self._options_strategy - @strategy.setter - def strategy(self, strat): + @options_strategy.setter + def options_strategy(self, strat): assert isinstance(strat, Strategy) self._options_strategy = strat @@ -82,6 +82,8 @@ class Backtest: """ assert self._stocks_data, 'Stock data not set' + assert all(stock.symbol in self._stocks_data['symbol'].values + for stock in self._stocks), 'Ensure all stocks in portfolio are present in the data' assert self._options_data, 'Options data not set' assert self._options_strategy, 'Options Strategy not set' assert self._options_data.schema == self._options_strategy.schema @@ -117,7 +119,7 @@ class Backtest: if date in rebalancing_days: previous_rb_date = rebalancing_days[rebalancing_days.get_loc(date) - 1] if rebalancing_days.get_loc(date) != 0 else date - self._update_balance(previous_rb_date, date, self.stocks_data, self._options_data) + self._update_balance(previous_rb_date, date, self._stocks_data, self._options_data) self._rebalance_portfolio(date, stocks, options, sma_days) bar.update() @@ -280,6 +282,10 @@ class Backtest: stock_prices = inventory_stocks[self._stocks_schema['adjClose']] if sma_days: + print(stock_prices) + print(inventory_stocks['sma']) + print(allocation) + print(stock_percentages) qty = np.where(inventory_stocks['sma'] < stock_prices, (allocation * stock_percentages) // stock_prices, 0) else: qty = (allocation * stock_percentages) // stock_prices diff --git a/backtester/datahandler/__init__.py b/backtester/datahandler/__init__.py index 59759c2..6f80f98 100644 --- a/backtester/datahandler/__init__.py +++ b/backtester/datahandler/__init__.py @@ -2,3 +2,5 @@ from .schema import Schema from .historical_options_data import HistoricalOptionsData from .tiingo_data import TiingoData + +__all__ = ['Schema', 'HistoricalOptionsData', 'TiingoData'] diff --git a/backtester/statistics/__init__.py b/backtester/statistics/__init__.py index 6262f3c..2b99f57 100644 --- a/backtester/statistics/__init__.py +++ b/backtester/statistics/__init__.py @@ -1,2 +1,4 @@ from .charts import monthly_returns_heatmap, returns_histogram, returns_chart from .stats import summary + +__all__ = ['monthly_returns_heatmap', 'returns_histogram', 'returns_chart', 'summary']