Skip to content

USPTOPatentMaintenance

QuantConnect.DataSource.USPTOPatentMaintenance

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

Bases: BaseData

USPTO patent maintenance activity attributed to a listed company. Each data point covers one publication week and carries the events recorded against that company during it: patents allowed to expire for unpaid maintenance fees, and fees paid at each renewal stage.

Letting a patent expire is a decision to stop paying for it, so the expiry count reads as portfolio pruning or cost cutting. Paying the twelfth-year fee is the opposite statement, made about a patent that is already eleven and a half years old.

Signature descriptions:

  • Default constructor required by LEAN.

  • Parses one already-split CSV row into a data point.

REPORT_FOLDER

REPORT_FOLDER: str

Output folder under alternative/uspto/ (used by the data processor).

end_time

end_time: datetime

Publication date of the weekly maintenance fee file, the Tuesday after the week of events closes. This is when LEAN delivers the data point.

patents_expired

patents_expired: Optional[float]

Patents that expired for failure to pay maintenance fees. This is also the data point's Value.

maintenance_paid_fourth_year

maintenance_paid_fourth_year: Optional[float]

Maintenance fees paid at the fourth-year renewal, across all entity sizes.

maintenance_paid_eighth_year

maintenance_paid_eighth_year: Optional[float]

Maintenance fees paid at the eighth-year renewal, across all entity sizes.

maintenance_paid_twelfth_year

maintenance_paid_twelfth_year: Optional[float]

Maintenance fees paid at the twelfth-year renewal, across all entity sizes.

maintenance_surcharges

maintenance_surcharges: Optional[float]

Surcharges levied for paying a maintenance fee after its due date.

net_maintenance_change

net_maintenance_change: Optional[float]

Net change in the maintained portfolio: patents kept alive by a payment, less those allowed to expire.

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

Creates a copy of the instance.

data_time_zone

data_time_zone() -> Any

Data time zone (Eastern, the USPTO publication time zone).

default_resolution

default_resolution() -> Resolution

Default resolution.

get_source

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

Location of the source file: alternative/uspto/patentmaintenance/{ticker}.csv

The ticker is the one the company traded under on the date requested, which is what the processor names each file after. RequiresMapping is true, so LEAN moves Symbol.Value on as the subscription crosses a rename and this returns the next file, which is why a renamed company's history is split the same way LEAN splits its own equity data into goog.zip and googl.zip.

is_sparse_data

is_sparse_data() -> bool

Sparse data: most companies have patent events on only a handful of days per year.

reader

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

Parses the data from the line provided and loads it into LEAN.

requires_mapping

requires_mapping() -> bool

Linked to Equities, so renames and delistings are applied via map files.

supported_resolutions

supported_resolutions() -> List[Resolution]

Supported resolutions (Daily only, the weekly cadence is modeled as Daily).

to_string

to_string() -> str

String representation for debugging.

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