Skip to content

BrokerageModelPythonWrapper

QuantConnect.Python.BrokerageModelPythonWrapper

BrokerageModelPythonWrapper(model: Any)

Bases: BasePythonWrapper[IBrokerageModel], IBrokerageModel

Provides an implementation of IBrokerageModel that wraps a PyObject object

Constructor for initialising the BrokerageModelPythonWrapper class with wrapped PyObject object

Parameters:

Name Type Description Default
model Any

Models brokerage transactions, fees, and order

required

account_type

account_type: AccountType

Gets or sets the account type used by this model

required_free_buying_power_percent

required_free_buying_power_percent: float

Gets the brokerages model percentage factor used to determine the required unused buying power for the account. From 1 to 0. Example: 0 means no unused buying power is required. 0.5 means 50% of the buying power should be left unused.

default_markets

default_markets: IReadOnlyDictionary[SecurityType, str]

Gets a map of the default markets to be used for each security type

instance

instance: Any

Gets the underlying python instance

This codeEntityType is protected.

PythonRuntimeChecker

Bases: Object

Set of helper methods to invoke Python methods with runtime checks for return values and out parameter's conversions.

get_buying_power_model

get_buying_power_model(
    security: Security,
) -> IBuyingPowerModel
get_buying_power_model(
    security: Security, account_type: AccountType
) -> IBuyingPowerModel

Signature descriptions:

  • Gets a new buying power model for the security, returning the default model with the security's configured leverage. For cash accounts, leverage = 1 is used.

  • Gets a new buying power model for the security

Parameters:

Name Type Description Default
security Security

The security to get a buying power model for

required
account_type Optional[AccountType]

The account type

None

Returns:

Type Description
IBuyingPowerModel

The buying power model for this brokerage/security.

get_settlement_model

get_settlement_model(
    security: Security,
) -> ISettlementModel
get_settlement_model(
    security: Security, account_type: AccountType
) -> ISettlementModel

Gets a new settlement model for the security

Parameters:

Name Type Description Default
security Security

The security to get a settlement model for

required
account_type Optional[AccountType]

The account type

None

Returns:

Type Description
ISettlementModel

The settlement model for this brokerage.

apply_split

apply_split(
    tickets: List[OrderTicket], split: Split
) -> None

Applies the split to the specified order ticket

Parameters:

Name Type Description Default
tickets List[OrderTicket]

The open tickets matching the split event

required
split Split

The split event data

required

can_execute_order

can_execute_order(security: Security, order: Order) -> bool

Returns true if the brokerage would be able to execute this order at this time assuming market prices are sufficient for the fill to take place. This is used to emulate the brokerage fills in backtesting and paper trading. For example some brokerages may not perform executions during extended market hours. This is not intended to be checking whether or not the exchange is open, that is handled in the Security.Exchange property.

Parameters:

Name Type Description Default
security Security

The security being ordered

required
order Order

The order to test for execution

required

Returns:

Type Description
bool

True if the brokerage would be able to perform the execution, false otherwise.

can_submit_order

can_submit_order(
    security: Security,
    order: Order,
    message: Optional[BrokerageMessageEvent],
) -> Tuple[bool, BrokerageMessageEvent]

Returns true if the brokerage could accept this order. This takes into account order type, security type, and order size limits.

Parameters:

Name Type Description Default
security Security

The security being ordered

required
order Order

The order to be processed

required
message Optional[BrokerageMessageEvent]

If this function returns false, a brokerage message detailing why the order may not be submitted

required

Returns:

Type Description
Tuple[bool, BrokerageMessageEvent]

True if the brokerage could process the order, false otherwise.

can_update_order

can_update_order(
    security: Security,
    order: Order,
    request: UpdateOrderRequest,
    message: Optional[BrokerageMessageEvent],
) -> Tuple[bool, BrokerageMessageEvent]

Returns true if the brokerage would allow updating the order as specified by the request

Parameters:

Name Type Description Default
security Security

The security of the order

required
order Order

The order to be updated

required
request UpdateOrderRequest

The requested updated to be made to the order

required
message Optional[BrokerageMessageEvent]

If this function returns false, a brokerage message detailing why the order may not be updated

required

Returns:

Type Description
Tuple[bool, BrokerageMessageEvent]

True if the brokerage would allow updating the order, false otherwise.

get_benchmark

get_benchmark(securities: SecurityManager) -> IBenchmark

Get the benchmark for this model

Parameters:

Name Type Description Default
securities SecurityManager

SecurityService to create the security with if needed

required

Returns:

Type Description
IBenchmark

The benchmark for this brokerage.

get_fee_model

get_fee_model(security: Security) -> IFeeModel

Gets a new fee model that represents this brokerage's fee structure

Parameters:

Name Type Description Default
security Security

The security to get a fee model for

required

Returns:

Type Description
IFeeModel

The new fee model for this brokerage.

get_fill_model

get_fill_model(security: Security) -> IFillModel

Gets a new fill model that represents this brokerage's fill behavior

Parameters:

Name Type Description Default
security Security

The security to get fill model for

required

Returns:

Type Description
IFillModel

The new fill model for this brokerage.

get_leverage

get_leverage(security: Security) -> float

Gets the brokerage's leverage for the specified security

Parameters:

Name Type Description Default
security Security

The security's whose leverage we seek

required

Returns:

Type Description
float

The leverage for the specified security.

get_margin_interest_rate_model

get_margin_interest_rate_model(
    security: Security,
) -> IMarginInterestRateModel

Gets a new margin interest rate model for the security

Parameters:

Name Type Description Default
security Security

The security to get a margin interest rate model for

required

Returns:

Type Description
IMarginInterestRateModel

The margin interest rate model for this brokerage.

get_model

get_model() -> IBrokerageModel

Convenience method to get the underlying IBrokerageModel object from the wrapper.

Returns:

Type Description
IBrokerageModel

Underlying IBrokerageModel object.

get_shortable_provider

get_shortable_provider(
    security: Security,
) -> IShortableProvider

Gets the shortable provider

Returns:

Type Description
IShortableProvider

Shortable provider.

get_slippage_model

get_slippage_model(security: Security) -> ISlippageModel

Gets a new slippage model that represents this brokerage's fill slippage behavior

Parameters:

Name Type Description Default
security Security

The security to get a slippage model for

required

Returns:

Type Description
ISlippageModel

The new slippage model for this brokerage.

shortable

shortable(
    algorithm: IAlgorithm,
    symbol: Union[Symbol, str, BaseContract],
    quantity: float,
) -> bool

Determine if this symbol is shortable

Parameters:

Name Type Description Default
algorithm IAlgorithm

The algorithm running

required
symbol Union[Symbol, str, BaseContract]

The symbol to short

required
quantity float

The amount to short

required

equals

equals(obj: Any) -> bool
equals(
    other: BasePythonWrapper[
        QuantConnect_Python_BasePythonWrapper_TInterface
    ],
) -> bool

Signature descriptions:

  • Determines whether the specified object is an instance of BasePythonWrapper{TInterface} and wraps the same Python object reference as this instance, which would indicate that they are equal.

  • Determines whether the specified instance wraps the same Python object reference as this instance, which would indicate that they are equal.

Parameters:

Name Type Description Default
obj Optional[Any]

The other object to compare this with

None
other Optional[BasePythonWrapper[QuantConnect_Python_BasePythonWrapper_TInterface]]

The other object to compare this with

None

Returns:

Type Description
bool

True if both instances are equal, that is if both wrap the same Python object reference.

set_python_instance

set_python_instance(instance: Any) -> None
set_python_instance(
    instance: Any, validate_interface: bool
) -> None

Signature descriptions:

  • Sets the python instance

  • Sets the python instance and sets the validate interface flag

Parameters:

Name Type Description Default
instance Any

The underlying python instance

required
validate_interface Optional[bool]

Whether to perform validations for interface implementation

None

dispose

dispose() -> None

Dispose of this instance

get_event

get_event(name: str) -> Any

Gets the Python instance event with the specified name

Parameters:

Name Type Description Default
name str

The name of the event

required

get_hash_code

get_hash_code() -> int

Gets the hash code for the current instance

Returns:

Type Description
int

The hash code of the current instance.

get_method

get_method(
    method_name: str, python_only: bool = False
) -> Any

Gets the Python instances method with the specified name and caches it

Parameters:

Name Type Description Default
method_name str

The name of the method

required
python_only bool

Whether to only return python methods

False

Returns:

Type Description
Any

The matched method.

get_property

get_property(property_name: str) -> Any

Gets the Python instance property with the specified name

Parameters:

Name Type Description Default
property_name str

The name of the property

required

has_attr

has_attr(name: str) -> bool

Determines whether the Python instance has the specified attribute

Parameters:

Name Type Description Default
name str

The attribute name

required

Returns:

Type Description
bool

Whether the Python instance has the specified attribute.

invoke_method

invoke_method(
    method_name: str, *args: Union[Object, Iterable[Object]]
) -> Any

Invokes the specified method with the specified arguments

Parameters:

Name Type Description Default
method_name str

The name of the method

required
args Union[Object, Iterable[Object]]

The arguments to call the method with

()

invoke_void_method

invoke_void_method(
    method_name: str, *args: Union[Object, Iterable[Object]]
) -> None

Invokes the specified method with the specified arguments without returning a value

Parameters:

Name Type Description Default
method_name str

The name of the method

required
args Union[Object, Iterable[Object]]

The arguments to call the method with

()

set_property

set_property(property_name: str, value: Any) -> None

Sets the Python instance property with the specified name

Parameters:

Name Type Description Default
property_name str

The name of the property

required
value Any

The property value

required