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
- 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]
- 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