コード例 #1
0
ファイル: quickstart.py プロジェクト: Afey/prophet
    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
コード例 #2
0
    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
コード例 #3
0
    def run(self, prices, timestamp, cash, data, **kwargs):
        """ Takes bollinger event data and generates orders """
        events = data['events']
        if not hasattr(self, 'sell_orders'):
            self.setup(events)

        orders = Orders()
        # Find buy events for this timestamp
        timestamps = prices.index
        daily_data = events.loc[timestamp]
        order_series = daily_data[daily_data > 0]
        # Sell 5 market days after bought
        index = timestamps.get_loc(timestamp)
        if index + 5 >= len(timestamps):
            sell_datetime = timestamps[-1]
        else:
            sell_datetime = timestamps[index + 5]

        symbols = order_series.index
        self.sell_orders.loc[sell_datetime, symbols] -= 100
        daily_sell_data = self.sell_orders.loc[timestamp]
        daily_sell_orders = daily_sell_data[daily_sell_data != 0]

        # Buy and sell in increments of 100
        for symbol in daily_sell_orders.index:
            orders.add_order(symbol, -100)

        daily_event_data = events.loc[timestamp]
        daily_buy_orders = daily_event_data[daily_event_data != 0]

        # Buy and sell in increments of 100
        for symbol in daily_buy_orders.index:
            orders.add_order(symbol, 100)

        return orders
コード例 #4
0
    def run(self, prices, timestamp, cash, data, **kwargs):
        """ Takes bollinger event data and generates orders """
        events = data['events']
        if not hasattr(self, 'sell_orders'):
            self.setup(events)

        orders = Orders()
        # Find buy events for this timestamp
        timestamps = prices.index
        daily_data = events.loc[timestamp]
        order_series = daily_data[daily_data > 0]
        # Sell 5 market days after bought
        index = timestamps.get_loc(timestamp)
        if index + 5 >= len(timestamps):
            sell_datetime = timestamps[-1]
        else:
            sell_datetime = timestamps[index + 5]

        symbols = order_series.index
        self.sell_orders.loc[sell_datetime, symbols] -= 100
        daily_sell_data = self.sell_orders.loc[timestamp]
        daily_sell_orders = daily_sell_data[daily_sell_data != 0]

        # Buy and sell in increments of 100
        for symbol in daily_sell_orders.index:
            orders.add_order(symbol, -100)

        daily_event_data = events.loc[timestamp]
        daily_buy_orders = daily_event_data[daily_event_data != 0]

        # Buy and sell in increments of 100
        for symbol in daily_buy_orders.index:
            orders.add_order(symbol, 100)

        return orders
コード例 #5
0
ファイル: test_examples.py プロジェクト: guoyuwh/prophet
def test_quickstart():
    prophet = Prophet()
    prophet.set_universe(['AAPL', 'XOM'])

    prophet.register_data_generators(YahooCloseData(cache_path=CACHE_PATH))
    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.1083876014
    assert round(analysis['average_return'], 10) == 0.0010655311
    assert round(analysis['cumulative_return'], 10) == 2.2140809296
    assert round(analysis['volatility'], 10) == 0.0152607097

    today = datetime(2014, 11, 10)
    expected_orders = Orders(Order(symbol='AAPL', shares=100))
    assert prophet.generate_orders(today) == expected_orders
コード例 #6
0
ファイル: test_examples.py プロジェクト: simongarisch/prophet
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.0967430073
    assert round(analysis['average_return'], 10) == 0.0010501702
    assert round(analysis['cumulative_return'], 10) == 2.1604345132
    assert round(analysis['volatility'], 10) == 0.0152004028

    today = datetime(2014, 11, 10)
    expected_orders = Orders(Order(symbol='AAPL', shares=100))
    assert prophet.generate_orders(today) == expected_orders