Skip to content

from_orders module

Numba-compiled functions for portfolio simulation based on orders.


from_orders_nb function

from_orders_nb(
    target_shape,
    group_lens,
    open=nan,
    high=nan,
    low=nan,
    close=nan,
    init_cash=100.0,
    init_position=0.0,
    init_price=nan,
    cash_deposits=0.0,
    cash_earnings=0.0,
    cash_dividends=0.0,
    size=inf,
    price=inf,
    size_type=0,
    direction=2,
    fees=0.0,
    fixed_fees=0.0,
    slippage=0.0,
    min_size=nan,
    max_size=nan,
    size_granularity=nan,
    leverage=1.0,
    leverage_mode=0,
    reject_prob=0.0,
    price_area_vio_mode=0,
    allow_partial=True,
    raise_reject=False,
    log=False,
    val_price=inf,
    from_ago=0,
    sim_start=None,
    sim_end=None,
    call_seq=None,
    auto_call_seq=False,
    ffill_val_price=True,
    update_value=False,
    save_state=False,
    save_value=False,
    save_returns=False,
    max_order_records=None,
    max_log_records=0
)

Creates on order out of each element.

Iterates in the column-major order. Utilizes flexible broadcasting.

Note

Should be only grouped if cash sharing is enabled.

Single value must be passed as a 0-dim array (for example, by using np.asarray(value)).

Usage

  • Buy and hold using all cash and closing price (default):
>>> from vectorbtpro import *
>>> from vectorbtpro.records.nb import col_map_nb
>>> from vectorbtpro.portfolio.nb import from_orders_nb, asset_flow_nb

>>> close = np.array([1, 2, 3, 4, 5])[:, None]
>>> sim_out = from_orders_nb(
...     target_shape=close.shape,
...     group_lens=np.array([1]),
...     call_seq=np.full(close.shape, 0),
...     close=close
... )
>>> col_map = col_map_nb(sim_out.order_records['col'], close.shape[1])
>>> asset_flow = asset_flow_nb(close.shape, sim_out.order_records, col_map)
>>> asset_flow
array([[100.],
       [  0.],
       [  0.],
       [  0.],
       [  0.]])