Cross-sectional aggregation
Most signals in the Exabel platform are evaluated for entities, and produce one or more time series for each entity. With the cross-sectional aggregation it is possible to aggregate signals across a universe of entities.
- cross_section(signal, method, universe=None)
Perform a cross-sectional analysis of a signal across a universe. Depending on the method, the signal may return one time series, or one time series per entity.
- Parameters
signal (Signal) – the signal to perform the cross-sectional analysis on.
method (str) – the cross-sectional method; one of
sum
,median
,mean
,proportion
,rank_ascending
orrank_descending
.universe (str|list[str]|None) – the optional entity universe, specified as an entity resource name, a tag resource name, or a list of those.
If a universe is not given, the signal is aggregated across the evaluation entities, for example the list of entities given in the Signal Explorer. Note however that one can then aggregate over a maximum of 1000 entities.
When the method is one of rank_ascending
, rank_descending
or proportion
, one time
series is returned for each evaluation entity. The signal can then only be evaluated for entities
which are also in the cross-sectional universe.
Examples:
Calculate the sum of the close price across a tag:
cross_section(Close_Price, "sum", "tags/user:abcdefg-1234-1234-1234-aabbccddee")
Calculate the average of the sales of two companies:
cross_section(Sales_Actual, "mean",
["entityTypes/company/entities/F-ASDF-F", "entityTypes/company/entities/F-TROT-F"])
Calculate the average close price across the evaluation entities:
cross_section(Close_Price, "sum")