Combining signals
This section contains functions which combine multiple signals into a new signal. They can be used when you have different signals which work for different entities, and you want to create a single signal which works for all the relevant entities.
- signal.combine_first(other, extend_only=False)
Update null elements with value from the same location in
other
. This is a wrapper around the pandascombine_first()
method.- Parameters:
other – Signal to use for filling null values.
extend_only – If
True
, null values are only replaced after the last non-null value.
Example:
Combine FactSet actual sales with FactSet consensus sales (note though that fs_metric() achieves the same thing and is recommended):
fs_actual('sales').combine_first(fs_consensus('sales'))
- fallback(signals, pre_extend, post_extend)
For each entity, use the first signal which has values.
The signals given to the fallback function are evaluated in order, and for each entity, the first signal that has a non-NaN value for the entity is selected.
To determine if a signal has values for an entity, the evaluation period is extended in both directions.
- Parameters:
signals (List[Signal]) – A list of signals. The signals are evaluated in order, and for each entity, the first signal that has a non-NaN value for the entity is selected.
pre_extend (int) – Number of days to pre-extend the evaluation period with, to determine if an entity has a value for a signal. Default value is 10*365.
post_extend (int) – Number of days to post-extend the evaluation period with, to determine if an entity has a value for a signal. Default value is 10*365.
Example:
To retrieve FactSet Estimates sales, and fallback to FactSet Fundamentals if the company is not covered by the former:
fallback([fs_actual('sales'), fs_fundamental('sales')])
- entity_type_switch(mapping)
Evaluate different sub-signals based on the type of the evaluation entities.
This can be useful when you have different signals for different entity types, but you need to express them as a single signal, such as in dashboards with multiple entity types.
- Parameters:
mapping (Mapping[str,Signal]) – A map of entity type to signal. The entity type should be specified with the format
namespace.entity_type
unless the entity type is in the global namespace, in which case onlyentity_type
is needed.
Example:
Signal that when evaluated for a company returns FactSet company sales and when evaluated for a
brand returns brand_sales
(assuming this signal exists):
entity_type_switch({'company': fs_actual('sales'), 'ns.brand': brand_sales})