Skip to content

CoinbaseBrokerageModel

QuantConnect.Brokerages.CoinbaseBrokerageModel

CoinbaseBrokerageModel(account_type: AccountType = ...)

Bases: DefaultBrokerageModel

Represents a brokerage model for interacting with the Coinbase exchange. This class extends the default brokerage model.

Initializes a new instance of the CoinbaseBrokerageModel class

Parameters:

Name Type Description Default
account_type AccountType

The type of account to be modelled, defaults to AccountType.CASH

...

default_markets

default_markets: IReadOnlyDictionary[SecurityType, str]

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

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_MARKET_MAP

DEFAULT_MARKET_MAP: IReadOnlyDictionary[
    SecurityType, str
] = ...

The default markets for the backtesting brokerage

can_submit_order

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

Evaluates whether exchange will accept order. Will reject order update

Parameters:

Name Type Description Default
security Security

The security of the order

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]

Determines whether the brokerage supports updating an existing order for the specified security.

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 update 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 supports updating orders; otherwise, false.

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_buying_power_model

get_buying_power_model(
    security: Security,
) -> IBuyingPowerModel

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.

Parameters:

Name Type Description Default
security Security

The security to get a buying power model for

required

Returns:

Type Description
IBuyingPowerModel

The buying power model for this brokerage/security.

get_default_markets

get_default_markets(
    market_name: str,
) -> IReadOnlyDictionary[SecurityType, str]

Gets the default markets for different security types, with an option to override the market name for Crypto securities.

This codeEntityType is protected.

Parameters:

Name Type Description Default
market_name str

The default market name for Crypto securities.

required

Returns:

Type Description
IReadOnlyDictionary[SecurityType, str]

A read-only dictionary where the keys are SecurityType and the values are market names.

get_fee_model

get_fee_model(security: Security) -> IFeeModel

Provides Coinbase fee model

Parameters:

Name Type Description Default
security Security
required

get_leverage

get_leverage(security: Security) -> float

Coinbase global leverage rule

Parameters:

Name Type Description Default
security Security
required

is_order_size_large_enough

is_order_size_large_enough(
    security: Security, order_quantity: float
) -> bool

Returns true if the order size is large enough for the given security.

This codeEntityType is protected.

Parameters:

Name Type Description Default
security Security

The security of the order

required
order_quantity float

The order quantity

required

Returns:

Type Description
bool

True if the order size is large enough, false otherwise.

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 traded

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.

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_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_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.

is_valid_order_size

is_valid_order_size(
    security: Security,
    order_quantity: float,
    message: Optional[BrokerageMessageEvent],
) -> Tuple[bool, BrokerageMessageEvent]

Checks if the order quantity is valid, it means, the order size is bigger than the minimum size allowed

Parameters:

Name Type Description Default
security Security

The security of the order

required
order_quantity float

The quantity of the order to be processed

required
message Optional[BrokerageMessageEvent]

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

required

Returns:

Type Description
Tuple[bool, BrokerageMessageEvent]

True if the order quantity is bigger than the minimum allowed, false otherwise.