当前位置: 首页>>代码示例>>Python>>正文


Python TradingEnvironment.instance方法代码示例

本文整理汇总了Python中zipline.finance.trading.TradingEnvironment.instance方法的典型用法代码示例。如果您正苦于以下问题:Python TradingEnvironment.instance方法的具体用法?Python TradingEnvironment.instance怎么用?Python TradingEnvironment.instance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在zipline.finance.trading.TradingEnvironment的用法示例。


在下文中一共展示了TradingEnvironment.instance方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _handle_market_close

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def _handle_market_close(self, completed_date):

        # increment the day counter before we move markers forward.
        self.day_count += 1.0

        # Get the next trading day and, if it is past the bounds of this
        # simulation, return the daily perf packet
        next_trading_day = TradingEnvironment.instance().\
            next_trading_day(completed_date)

        # Check if any assets need to be auto-closed before generating today's
        # perf period
        if next_trading_day:
            self.check_asset_auto_closes(next_trading_day=next_trading_day)

        # Take a snapshot of our current performance to return to the
        # browser.
        daily_update = self.to_dict(emission_type='daily')

        # On the last day of the test, don't create tomorrow's performance
        # period.  We may not be able to find the next trading day if we're at
        # the end of our historical data
        if self.market_close >= self.last_close:
            return daily_update

        # move the market day markers forward
        env = TradingEnvironment.instance()
        self.market_open, self.market_close = \
            env.next_open_and_close(self.day)
        self.day = env.next_trading_day(self.day)

        # Roll over positions to current day.
        self.todays_performance.rollover()
        self.todays_performance.period_open = self.market_open
        self.todays_performance.period_close = self.market_close

        # If the next trading day is irrelevant, then return the daily packet
        if (next_trading_day is None) or (next_trading_day >= self.last_close):
            return daily_update

        # Check for any dividends and auto-closes, then return the daily perf
        # packet
        self.check_upcoming_dividends(next_trading_day=next_trading_day)
        return daily_update
开发者ID:runtBlue,项目名称:zipline,代码行数:46,代码来源:tracker.py

示例2: mixed_frequency_expected_index

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
def mixed_frequency_expected_index(count, frequency):
    """
    Helper for enumerating expected indices for test_mixed_frequency.
    """
    env = TradingEnvironment.instance()
    minute = MIXED_FREQUENCY_MINUTES[count]

    if frequency == '1d':
        return [env.previous_open_and_close(minute)[1], minute]
    elif frequency == '1m':
        return [env.previous_market_minute(minute), minute]
开发者ID:frewsxcv,项目名称:zipline,代码行数:13,代码来源:history_cases.py

示例3: setUp

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def setUp(self):
        all_trading_days = TradingEnvironment.instance().trading_days
        self.trading_days = all_trading_days[
            all_trading_days.get_loc(TEST_CALENDAR_START):
            all_trading_days.get_loc(TEST_CALENDAR_STOP) + 1
        ]

        self.asset_info = EQUITY_INFO
        self.writer = SyntheticDailyBarWriter(
            self.asset_info,
            self.trading_days,
        )

        self.dir_ = TempDirectory()
        self.dir_.create()
        self.dest = self.dir_.getpath('daily_equity_pricing.bcolz')
开发者ID:runtBlue,项目名称:zipline,代码行数:18,代码来源:test_us_equity_pricing_loader.py

示例4: check_upcoming_dividends

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def check_upcoming_dividends(self, completed_date):
        """
        Check if we currently own any stocks with dividends whose ex_date is
        the next trading day.  Track how much we should be payed on those
        dividends' pay dates.

        Then check if we are owed cash/stock for any dividends whose pay date
        is the next trading day.  Apply all such benefits, then recalculate
        performance.
        """
        if len(self.dividend_frame) == 0:
            # We don't currently know about any dividends for this simulation
            # period, so bail.
            return

        # Get the next trading day and, if it is outside the bounds of the
        # simulation, bail.
        next_trading_day = TradingEnvironment.instance().\
            next_trading_day(completed_date)
        if (next_trading_day is None) or (next_trading_day >= self.last_close):
            return

        # Dividends whose ex_date is the next trading day.  We need to check if
        # we own any of these stocks so we know to pay them out when the pay
        # date comes.
        ex_date_mask = (self.dividend_frame['ex_date'] == next_trading_day)
        dividends_earnable = self.dividend_frame[ex_date_mask]

        # Dividends whose pay date is the next trading day.  If we held any of
        # these stocks on midnight before the ex_date, we need to pay these out
        # now.
        pay_date_mask = (self.dividend_frame['pay_date'] == next_trading_day)
        dividends_payable = self.dividend_frame[pay_date_mask]

        position_tracker = self.position_tracker
        if len(dividends_earnable):
            position_tracker.earn_dividends(dividends_earnable)

        if not len(dividends_payable):
            return

        net_cash_payment = position_tracker.pay_dividends(dividends_payable)

        for period in self.perf_periods:
            # notify periods to update their stats
            period.handle_dividends_paid(net_cash_payment)
开发者ID:eackermann,项目名称:zipline,代码行数:48,代码来源:tracker.py

示例5: handle_market_close_daily

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def handle_market_close_daily(self):
        """
        Function called after handle_data when running with daily emission
        rate.
        """
        self.update_performance()
        completed_date = self.day
        account = self.get_account(False)

        # update risk metrics for cumulative performance
        self.cumulative_risk_metrics.update(
            completed_date,
            self.todays_performance.returns,
            self.all_benchmark_returns[completed_date],
            account)

        # increment the day counter before we move markers forward.
        self.day_count += 1.0

        # Take a snapshot of our current performance to return to the
        # browser.
        daily_update = self.to_dict()

        # On the last day of the test, don't create tomorrow's performance
        # period.  We may not be able to find the next trading day if we're at
        # the end of our historical data
        if self.market_close >= self.last_close:
            return daily_update

        # move the market day markers forward
        env = TradingEnvironment.instance()
        self.market_open, self.market_close = \
            env.next_open_and_close(self.day)
        self.day = env.next_trading_day(self.day)

        # Roll over positions to current day.
        self.todays_performance.rollover()
        self.todays_performance.period_open = self.market_open
        self.todays_performance.period_close = self.market_close

        next_trading_day = env.next_trading_day(completed_date)
        if next_trading_day:
            self.check_upcoming_dividends(next_trading_day)

        return daily_update
开发者ID:AshBT,项目名称:zipline,代码行数:47,代码来源:tracker.py

示例6: setUp

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def setUp(self):
        env = TradingEnvironment.instance()
        day = env.trading_day

        self.assets = Int64Index([1, 2, 3])
        self.dates = date_range(
            '2015-01-01',
            '2015-01-31',
            freq=day,
            tz='UTC',
        )

        asset_info = make_simple_asset_info(
            self.assets,
            start_date=self.dates[0],
            end_date=self.dates[-1],
        )
        self.asset_finder = AssetFinder(asset_info)
开发者ID:robertotang,项目名称:zipline,代码行数:20,代码来源:test_engine.py

示例7: setUpClass

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def setUpClass(cls):
        cls.test_data_dir = TempDirectory()
        cls.db_path = cls.test_data_dir.getpath('adjustments.db')
        writer = SQLiteAdjustmentWriter(cls.db_path)
        writer.write(SPLITS, MERGERS, DIVIDENDS)

        cls.assets = TEST_QUERY_ASSETS
        all_days = TradingEnvironment.instance().trading_days
        cls.calendar_days = all_days[
            all_days.slice_indexer(TEST_CALENDAR_START, TEST_CALENDAR_STOP)
        ]

        cls.asset_info = EQUITY_INFO
        cls.bcolz_writer = SyntheticDailyBarWriter(
            cls.asset_info,
            cls.calendar_days,
        )
        cls.bcolz_path = cls.test_data_dir.getpath('equity_pricing.bcolz')
        cls.bcolz_writer.write(cls.bcolz_path, cls.calendar_days, cls.assets)
开发者ID:runtBlue,项目名称:zipline,代码行数:21,代码来源:test_us_equity_pricing_loader.py

示例8: _calculate_execution_cash_flow

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def _calculate_execution_cash_flow(self, txn):
        """
        Calculates the cash flow from executing the given transaction
        """
        # Check if the multiplier is cached. If it is not, look up the asset
        # and cache the multiplier.
        try:
            multiplier = self._execution_cash_flow_multipliers[txn.sid]
        except KeyError:
            asset = TradingEnvironment.instance().asset_finder.\
                retrieve_asset(txn.sid)
            # Futures experience no cash flow on transactions
            if isinstance(asset, Future):
                multiplier = 0
            else:
                multiplier = 1
            self._execution_cash_flow_multipliers[txn.sid] = multiplier

        # Calculate and return the cash flow given the multiplier
        return -1 * txn.price * txn.amount * multiplier
开发者ID:AshBT,项目名称:zipline,代码行数:22,代码来源:period.py

示例9: handle_minute_close

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def handle_minute_close(self, dt):
        self.update_performance()
        todays_date = normalize_date(dt)
        account = self.get_account(False)

        self.minute_performance.rollover()

        bench_returns = self.all_benchmark_returns.loc[todays_date:dt]
        # cumulative returns
        bench_since_open = (1. + bench_returns).prod() - 1

        self.cumulative_risk_metrics.update(todays_date,
                                            self.todays_performance.returns,
                                            bench_since_open,
                                            account)

        # if this is the close, save the returns objects for cumulative risk
        # calculations and update dividends for the next day.
        if dt == self.market_close:
            next_trading_day = TradingEnvironment.instance().\
                next_trading_day(todays_date)
            if next_trading_day:
                self.check_upcoming_dividends(next_trading_day)
开发者ID:AshBT,项目名称:zipline,代码行数:25,代码来源:tracker.py

示例10: setUpClass

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def setUpClass(cls):
        cls.first_asset_start = Timestamp('2015-04-01', tz='UTC')
        cls.env = TradingEnvironment.instance()
        cls.trading_day = cls.env.trading_day
        cls.asset_info = make_rotating_asset_info(
            num_assets=6,
            first_start=cls.first_asset_start,
            frequency=cls.trading_day,
            periods_between_starts=4,
            asset_lifetime=8,
        )
        cls.all_assets = cls.asset_info.index
        cls.all_dates = date_range(
            start=cls.first_asset_start,
            end=cls.asset_info['end_date'].max(),
            freq=cls.trading_day,
        )

        cls.finder = AssetFinder(cls.asset_info)

        cls.temp_dir = TempDirectory()
        cls.temp_dir.create()

        cls.writer = SyntheticDailyBarWriter(
            asset_info=cls.asset_info[['start_date', 'end_date']],
            calendar=cls.all_dates,
        )
        table = cls.writer.write(
            cls.temp_dir.getpath('testdata.bcolz'),
            cls.all_dates,
            cls.all_assets,
        )

        cls.ffc_loader = USEquityPricingLoader(
            BcolzDailyBarReader(table),
            NullAdjustmentReader(),
        )
开发者ID:robertotang,项目名称:zipline,代码行数:39,代码来源:test_engine.py

示例11: env

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
 def env(self):
     return TradingEnvironment.instance()
开发者ID:along1x,项目名称:zipline,代码行数:4,代码来源:events.py

示例12: __init__

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def __init__(self, sim_params):

        self.sim_params = sim_params
        env = TradingEnvironment.instance()

        self.period_start = self.sim_params.period_start
        self.period_end = self.sim_params.period_end
        self.last_close = self.sim_params.last_close
        first_open = self.sim_params.first_open.tz_convert(env.exchange_tz)
        self.day = pd.Timestamp(datetime(first_open.year, first_open.month,
                                         first_open.day), tz='UTC')
        self.market_open, self.market_close = env.get_open_and_close(self.day)
        self.total_days = self.sim_params.days_in_period
        self.capital_base = self.sim_params.capital_base
        self.emission_rate = sim_params.emission_rate

        all_trading_days = env.trading_days
        mask = ((all_trading_days >= normalize_date(self.period_start)) &
                (all_trading_days <= normalize_date(self.period_end)))

        self.trading_days = all_trading_days[mask]

        self.dividend_frame = pd.DataFrame()
        self._dividend_count = 0

        self.position_tracker = PositionTracker()

        self.perf_periods = []

        if self.emission_rate == 'daily':
            self.all_benchmark_returns = pd.Series(
                index=self.trading_days)
            self.cumulative_risk_metrics = \
                risk.RiskMetricsCumulative(self.sim_params)

        elif self.emission_rate == 'minute':
            self.all_benchmark_returns = pd.Series(index=pd.date_range(
                self.sim_params.first_open, self.sim_params.last_close,
                freq='Min'))

            self.cumulative_risk_metrics = \
                risk.RiskMetricsCumulative(self.sim_params,
                                           returns_frequency='daily',
                                           create_first_day_stats=True)

            self.minute_performance = PerformancePeriod(
                # initial cash is your capital base.
                self.capital_base,
                # the cumulative period will be calculated over the
                # entire test.
                self.period_start,
                self.period_end,
                # don't save the transactions for the cumulative
                # period
                keep_transactions=False,
                keep_orders=False,
                # don't serialize positions for cumualtive period
                serialize_positions=False
            )
            self.minute_performance.position_tracker = self.position_tracker
            self.perf_periods.append(self.minute_performance)

        # this performance period will span the entire simulation from
        # inception.
        self.cumulative_performance = PerformancePeriod(
            # initial cash is your capital base.
            self.capital_base,
            # the cumulative period will be calculated over the entire test.
            self.period_start,
            self.period_end,
            # don't save the transactions for the cumulative
            # period
            keep_transactions=False,
            keep_orders=False,
            # don't serialize positions for cumualtive period
            serialize_positions=False,
        )
        self.cumulative_performance.position_tracker = self.position_tracker
        self.perf_periods.append(self.cumulative_performance)

        # this performance period will span just the current market day
        self.todays_performance = PerformancePeriod(
            # initial cash is your capital base.
            self.capital_base,
            # the daily period will be calculated for the market day
            self.market_open,
            self.market_close,
            keep_transactions=True,
            keep_orders=True,
            serialize_positions=True,
        )
        self.todays_performance.position_tracker = self.position_tracker

        self.perf_periods.append(self.todays_performance)

        self.saved_dt = self.period_start
        # one indexed so that we reach 100%
        self.day_count = 0.0
        self.txn_count = 0

#.........这里部分代码省略.........
开发者ID:eackermann,项目名称:zipline,代码行数:103,代码来源:tracker.py

示例13: setUpClass

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
 def setUpClass(cls):
     cls.env = TradingEnvironment.instance()
开发者ID:CallingWisdom,项目名称:zipline,代码行数:4,代码来源:test_history.py

示例14: __init__

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def __init__(self, *args, **kwargs):
        """Initialize sids and other state variables.

        :Arguments:
        :Optional:
            initialize : function
                Function that is called with a single
                argument at the begninning of the simulation.
            handle_data : function
                Function that is called with 2 arguments
                (context and data) on every bar.
            script : str
                Algoscript that contains initialize and
                handle_data function definition.
            data_frequency : {'daily', 'minute'}
               The duration of the bars.
            capital_base : float <default: 1.0e5>
               How much capital to start with.
            instant_fill : bool <default: False>
               Whether to fill orders immediately or on next bar.
            asset_finder : An AssetFinder object
                A new AssetFinder object to be used in this TradingEnvironment
            asset_metadata: can be either:
                            - dict
                            - pandas.DataFrame
                            - object with 'read' property
                If dict is provided, it must have the following structure:
                * keys are the identifiers
                * values are dicts containing the metadata, with the metadata
                  field name as the key
                If pandas.DataFrame is provided, it must have the
                following structure:
                * column names must be the metadata fields
                * index must be the different asset identifiers
                * array contents should be the metadata value
                If an object with a 'read' property is provided, 'read' must
                return rows containing at least one of 'sid' or 'symbol' along
                with the other metadata fields.
            identifiers : List
                Any asset identifiers that are not provided in the
                asset_metadata, but will be traded by this TradingAlgorithm
        """
        self.datetime = None

        self.sources = []

        # List of trading controls to be used to validate orders.
        self.trading_controls = []

        # List of account controls to be checked on each bar.
        self.account_controls = []

        self._recorded_vars = {}
        self.namespace = kwargs.get('namespace', {})

        self._platform = kwargs.pop('platform', 'zipline')

        self.logger = None

        self.benchmark_return_source = None

        # default components for transact
        self.slippage = VolumeShareSlippage()
        self.commission = PerShare()

        self.instant_fill = kwargs.pop('instant_fill', False)

        # set the capital base
        self.capital_base = kwargs.pop('capital_base', DEFAULT_CAPITAL_BASE)

        self.sim_params = kwargs.pop('sim_params', None)
        if self.sim_params is None:
            self.sim_params = create_simulation_parameters(
                capital_base=self.capital_base,
                start=kwargs.pop('start', None),
                end=kwargs.pop('end', None)
            )
        self.perf_tracker = PerformanceTracker(self.sim_params)

        # Update the TradingEnvironment with the provided asset metadata
        self.trading_environment = kwargs.pop('env',
                                              TradingEnvironment.instance())
        self.trading_environment.update_asset_finder(
            asset_finder=kwargs.pop('asset_finder', None),
            asset_metadata=kwargs.pop('asset_metadata', None),
            identifiers=kwargs.pop('identifiers', None)
        )
        # Pull in the environment's new AssetFinder for quick reference
        self.asset_finder = self.trading_environment.asset_finder

        self.blotter = kwargs.pop('blotter', None)
        if not self.blotter:
            self.blotter = Blotter()

        self.portfolio_needs_update = True
        self.account_needs_update = True
        self.performance_needs_update = True
        self._portfolio = None
        self._account = None

#.........这里部分代码省略.........
开发者ID:Joshua2014,项目名称:zipline,代码行数:103,代码来源:algorithm.py

示例15: __init__

# 需要导入模块: from zipline.finance.trading import TradingEnvironment [as 别名]
# 或者: from zipline.finance.trading.TradingEnvironment import instance [as 别名]
    def __init__(self, start_prices=None, freq='minute', start=None,
                 end=None, drift=0.1, sd=0.1, calendar=calendar_nyse):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'daily' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            drift: float <default=0.1>
                 Constant drift of the price series.
            sd: float <default=0.1>
                 Standard deviation of the price series.
            calendar : calendar object <default: NYSE>
                 Calendar to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    calendar.__name__)

        if freq not in self.VALID_FREQS:
            raise ValueError('%s not in %s' % (freq, self.VALID_FREQS))

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100,
                                 1: 500}
        else:
            self.start_prices = start_prices

        self.calendar = calendar
        if start is None:
            self.start = calendar.start
        else:
            self.start = start
        if end is None:
            self.end = calendar.end_base
        else:
            self.end = end

        self.drift = drift
        self.sd = sd

        self.sids = self.start_prices.keys()
        TradingEnvironment.instance().update_asset_finder(
            identifiers=self.sids
        )

        self.open_and_closes = \
            calendar.open_and_closes[self.start:self.end]

        self._raw_data = None
开发者ID:AshBT,项目名称:zipline,代码行数:68,代码来源:simulated.py


注:本文中的zipline.finance.trading.TradingEnvironment.instance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。