finds.structured.signals

Signals implements structured dataset interface for derived signal values

Copyright 2022, Terence Lim

MIT License

class finds.structured.signals.Signals(sql: SQL, verbose=0)[source]

Bases: Stocks

Provide structured stocks data interface to derived signal values

Parameters:

sql – Connection to SQL database

__call__(label: str, date: int, start: int = -1, rebaldate: str = 'rebaldate') DataFrame[source]

Return cross-section of signal values available as of a date

Parameters:
  • label – Name of signal to retrieve

  • date – As of this date back through (non-inclusive) start date

  • start – Non-inclusive start of date range; -1 means exact date

  • rebaldate – Name of rebalance date column

Returns:

DataFrame of signal values prevailing as of input date

__getitem__(label) Table[source]

Overrides parent class method to get Table schema of label

read(label: str, where: str = '') DataFrame[source]

Read signal values from sql and return as data frame

Parameters:
  • label – Name of signal

  • where – Where clause for sql select

Returns:

DataFrame of query with columns = [‘permno’, ‘rebaldate’, label]

summary(label: str) DataFrame[source]

Perform a ‘proc summary’ by rebaldate on a signal’s values

table_key(label: str) str[source]

Helper method generates a table key name for the input label

write(data: DataFrame, label: str, overwrite: bool = True, rebaldate: str = 'rebaldate', permno: str = 'permno') int[source]

Saves a new sql table from dataframe of signal values

Parameters:
  • data – Signal values, with columns [‘permno’, ‘rebaldate’, label]

  • label – Signal name of column and table (prefixed ‘__’)

  • overwrite – If False, append to table ignoring dups. Else recreate

  • rebaldate – Column name of rebalance dates in input dataframe

  • permno – Column name of permno identifiers in input dataframe

Returns:

Number of rows saved

Notes:

  • first removes dup keys, then drops null rows before saving to table

class finds.structured.signals.SignalsFrame(df: DataFrame, identifier: str = 'permno', rebaldate: str = 'rebaldate')[source]

Bases: Signals

Cache dataframe of signals values, provide Signals-like interface

Parameters:
  • df – DataFrame input with permno and rebaldate as columns

  • identifer – column name of permno identifiers

  • rebaldate – column name of rebalance dates

__call__(label: str, date: int, start: int = -1) DataFrame[source]

Select from rebaldates that fall between start and date, keep latest

Parameters:
  • label – Name of column to return

  • date – As of this date back through (non-inclusive) start date

  • start – Non-inclusive start date. Set to 0 for all, -1 for exact