Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_quickstart():
prophet = Prophet()
prophet.set_universe(['AAPL', 'XOM'])
price_generator = YahooData('Adj Close', 'prices', cache_path=CACHE_PATH)
prophet.register_data_generators(price_generator)
prophet.set_order_generator(OrderGenerator())
backtest = prophet.run_backtest(start=datetime(2010, 1, 1),
end=datetime(2014, 11, 21))
prophet.register_portfolio_analyzers(default_analyzers)
analysis = prophet.analyze_backtest(backtest)
assert round(analysis['sharpe'], 10) == 1.0970973495
assert round(analysis['average_return'], 10) == 0.0010547843
assert round(analysis['cumulative_return'], 10) == 2.1688171559
assert round(analysis['volatility'], 10) == 0.0152622562
today = datetime(2014, 11, 10)
expected_orders = Orders(Order(symbol='AAPL', shares=100))
assert prophet.generate_orders(today) == expected_orders
class OrderGenerator(object):
def run(self, prices, timestamp, cash, **kwargs):
symbol = "AAPL"
orders = Orders()
if (prices.loc[timestamp, symbol] * 100) < cash:
orders.add_order(symbol, 100)
return orders
prophet = Prophet()
prophet.set_universe(['AAPL', 'XOM'])
price_generator = YahooData('Adj Close', 'prices')
prophet.register_data_generators(price_generator)
prophet.set_order_generator(OrderGenerator())
backtest = prophet.run_backtest(start=datetime(2010, 1, 1))
prophet.register_portfolio_analyzers(default_analyzers)
analysis = prophet.analyze_backtest(backtest)
print(analysis)
# +--------------------------------------+
# | sharpe | 1.09754359611 |
# | average_return | 0.00105478425027 |
# | cumulative_return | 2.168833 |
# | volatility | 0.0152560508189 |
# +--------------------------------------+
# Generate orders for you to execute today
def run(self,
data,
symbols,
start=datetime(2007, 1, 1),
end=None,
lookback=0):
if not end:
end = datetime.now()
symbols_data = super(YahooData, self).run(
data=data, symbols=symbols, start=start,
end=end, lookback=lookback, source="yahoo")
return symbols_data[self._column]