Skip to content

ECBPolicyRates

QuantConnect.DataSource.ECBPolicyRates

ECBPolicyRates()
ECBPolicyRates(csv: List[str])

Bases: BaseData

The rates the European Central Bank sets for the euro area, alongside the overnight rate the market actually trades at. The three policy rates form a corridor the ECB steers liquidity within: the deposit facility is its floor, the marginal lending facility its ceiling, and the main refinancing operations rate sits between them. The euro short-term rate is where unsecured overnight borrowing settles inside that corridor, so the gap between it and the deposit facility is a direct read on how loose funding conditions are.

One row per weekday, from 1999, including the TARGET holidays the system closes on. Weekends are dropped: an administered rate stays in force until the ECB changes it, so a weekend row would only repeat the Friday. The euro short-term rate only exists on TARGET business days and only from October 2019, so it is empty before then and on closures.

One file for the euro area. Subscribe with AddData(ECB.PolicyRates.EuroArea).

Signature descriptions:

  • Creates a new default instance.

  • Creates a new instance from the columns of a row produced by the data processor.

Parameters:

Name Type Description Default
csv Optional[List[str]]

Columns of the row: date, release stamp, then one per rate

None

main_refinancing_rate

main_refinancing_rate: Optional[float]

The main refinancing operations rate, the headline policy rate of the euro area and the one quoted when the ECB is said to have raised or cut. This is also the data point's Value.

deposit_facility_rate

deposit_facility_rate: Optional[float]

The deposit facility rate, paid on funds banks park at the ECB overnight. It is the floor of the corridor and, since 2014, the rate that actually steers euro money markets.

marginal_lending_rate

marginal_lending_rate: Optional[float]

The marginal lending facility rate, charged on overnight credit from the ECB against collateral. It is the ceiling of the corridor.

euro_short_term_rate

euro_short_term_rate: Optional[float]

The euro short-term rate, the volume-weighted rate at which euro area banks borrow unsecured overnight from financial counterparties. Unlike the three rates above it is measured from real transactions rather than set by the ECB. Empty before October 2019 and on days the TARGET system is closed.

end_time

end_time: datetime

The moment these rates became available, which is when LEAN makes the data point available. The policy rates are known in advance, but the euro short-term rate for a given day is only published at 08:00 Frankfurt time on the next TARGET business day, so the row is not complete until then. A row that never carries one, which is every row before October 2019 and every row inside a TARGET closure, is stamped at the next weekday instead, unless the row before it is waiting on a later print: the stamps are held at a running maximum so the column never steps backwards, which is why 25 December 2019 reads 27 December rather than 26.

Rows around a TARGET closure can share a release. LEAN keeps one data point per symbol per slice, so only the most recent of them arrives, and that is the row inside the closure, whose overnight rate is empty. Check it against null rather than assuming the reopening delivers the rate that printed that morning. See https://www.ecb.europa.eu/stats/financial_markets_and_interest_rates/euro_short-term_rate/

symbol

symbol: Symbol

Symbol representation for underlying Security

data_type

data_type: MarketDataType

Market Data Type of this data - does it come in individual price packets or is it grouped into OHLC.

time

time: datetime

Current time marker of this data packet.

value

value: float

Value representation of this data packet. All data requires a representative value for this moment in time. For streams of data this is the price now, for OHLC packets this is the closing price.

price

price: float

As this is a backtesting platform we'll provide an alias of value as price.

ALL_RESOLUTIONS

ALL_RESOLUTIONS: List[Resolution] = ...

A list of all Resolution

This Field is protected.

DAILY_RESOLUTION

DAILY_RESOLUTION: List[Resolution] = ...

A list of Resolution.DAILY

This Field is protected.

MINUTE_RESOLUTION

MINUTE_RESOLUTION: List[Resolution] = ...

A list of Resolution.MINUTE

This Field is protected.

HIGH_RESOLUTION

HIGH_RESOLUTION: List[Resolution] = ...

A list of high Resolution, including minute, second, and tick.

This Field is protected.

OPTION_RESOLUTIONS

OPTION_RESOLUTIONS: List[Resolution] = ...

A list of resolutions support by Options

This Field is protected.

is_fill_forward

is_fill_forward: bool

True if this is a fill forward piece of data

clone

clone() -> BaseData

Clones the instance.

Returns:

Type Description
BaseData

A clone of the instance.

data_time_zone

data_time_zone() -> Any

Specifies the data time zone for this data type.

Returns:

Type Description
Any

The Frankfurt time zone the ECB publishes in.

default_resolution

default_resolution() -> Resolution

Gets the default resolution for this data and security type.

Returns:

Type Description
Resolution

Daily resolution.

get_source

get_source(
    config: SubscriptionDataConfig,
    date: datetime,
    is_live_mode: bool,
) -> SubscriptionDataSource

Specifies the location of the data and directs LEAN where to load it from.

Parameters:

Name Type Description Default
config SubscriptionDataConfig

Subscription configuration

required
date datetime

Algorithm date

required
is_live_mode bool

Is live mode

required

Returns:

Type Description
SubscriptionDataSource

Subscription data source pointing at the policy rates file.

is_sparse_data

is_sparse_data() -> bool

Indicates whether the data is sparse.

Returns:

Type Description
bool

False: a single file holds every day of the history.

reader

reader(
    config: SubscriptionDataConfig,
    line: str,
    date: datetime,
    is_live_mode: bool,
) -> BaseData

Parses one line of the source file into a data point.

Parameters:

Name Type Description Default
config SubscriptionDataConfig

Subscription configuration

required
line str

Line of the source CSV

required
date datetime

Date the request was made for

required
is_live_mode bool

Is live mode

required

Returns:

Type Description
BaseData

Instance of the class with the parsed data.

requires_mapping

requires_mapping() -> bool

Indicates whether the data source can undergo rename proof standardization.

Returns:

Type Description
bool

False: the rates are not tied to a tradable security.

supported_resolutions

supported_resolutions() -> List[Resolution]

Gets the supported resolution for this data and security type.

Returns:

Type Description
List[Resolution]

Daily resolution.

to_string

to_string() -> str

Converts the instance to a string.

Returns:

Type Description
str

A string containing the corridor and the overnight rate.

deserialize_message

deserialize_message(serialized: str) -> Sequence[BaseData]

Deserialize the message from the data server

Parameters:

Name Type Description Default
serialized str

The data server's message

required

Returns:

Type Description
Sequence[BaseData]

An enumerable of base data, if unsuccessful, returns an empty enumerable.

should_cache_to_security

should_cache_to_security() -> bool

Indicates whether this contains data that should be stored in the security cache

Returns:

Type Description
bool

Whether this contains data that should be stored in the security cache.

update

update(
    last_trade: float,
    bid_price: float,
    ask_price: float,
    volume: float,
    bid_size: float,
    ask_size: float,
) -> None

Update routine to build a bar/tick from a data update.

Parameters:

Name Type Description Default
last_trade float

The last trade price

required
bid_price float

Current bid price

required
ask_price float

Current asking price

required
volume float

Volume of this trade

required
bid_size float

The size of the current bid, if available

required
ask_size float

The size of the current ask, if available

required

update_ask

update_ask(ask_price: float, ask_size: float) -> None

Updates this base data with the new quote ask information

Parameters:

Name Type Description Default
ask_price float

The current ask price

required
ask_size float

The current ask size

required

update_bid

update_bid(bid_price: float, bid_size: float) -> None

Updates this base data with the new quote bid information

Parameters:

Name Type Description Default
bid_price float

The current bid price

required
bid_size float

The current bid size

required

update_quote

update_quote(
    bid_price: float,
    bid_size: float,
    ask_price: float,
    ask_size: float,
) -> None

Updates this base data with new quote information

Parameters:

Name Type Description Default
bid_price float

The current bid price

required
bid_size float

The current bid size

required
ask_price float

The current ask price

required
ask_size float

The current ask size

required

update_trade

update_trade(last_trade: float, trade_size: float) -> None

Updates this base data with a new trade

Parameters:

Name Type Description Default
last_trade float

The price of the last trade

required
trade_size float

The quantity traded

required