Fundamental concepts

This section explains the most fundamental concepts that are necessary to work with the DSL.


An entity in the Exabel platform typically represents a real-world entity. The most commonly used entities are companies: Most publicly traded companies in the world and many private companies are available as entities on the platform.

There are also other kinds of entities, representing for example segments, brands or geographical areas. Many of these entities are vendor-specific, so they are used in connection with a single dataset.

Entity types

All entities have an entity type, which is referred to by a resource name on the format entityTypes/name. For example, the company entity type has the resource name entityTypes/company. There are also vendor-specific entity types, which are only used in a single dataset. The resource names of these entity types also specify the vendor’s namespace, such as entityTypes/namespace.segment.


Entities are connected to each other by relationships in an entity graph. Such relationships also have a type, just as entities do, so there could for example be a relationship type named relationshipTypes/HAS_BRAND. If a company owns a brand, there would be a relationship between the company entity and the brand entity with the HAS_BRAND type.

When you know how entities are connected to each other in the entity graph, you can use this to create powerful signal expressions.

Time series

A time series is a single series of data points where each data point has a timestamp and a value. On the Exabel platform, all the timestamps are dates, so intraday time series are not supported.

Many time series have a lower resolution than daily, for example monthly or quarterly. In these cases, a data point typically represents an entire month or quarter and the associated timestamp is usually the last date in the time period.

Many time series also have an associated currency. In those cases, the time series can easily be converted to another currency.


A signal is the most important concept in the Exabel DSL. A signal is something that can produce one or more time series that convey some information about the world.

Most signals in the platform are entity-dependent, which means that they produce time series when evaluated with a specific entity. An example of this is revenue, which will produce a different time series for any company it is evaluated for. There are, however, also entity-independent signals, such as exchange rates, which can be evaluated without an entity.

Most signals produce a single time series. Many, however, produce multiple time series, in which case the time series labels distinguish between the various time series. For example, signals which produce forecasts, are typically also able to produce confidence intervals, so you might get three time series from a single signal: the forecast itself, along with the upper and lower confidence bounds.

Raw data signals and transformations

A raw data signal is a signal which just takes data straight from the database. Such time series are either time series delivered by one of our vendors, or time series our users have uploaded with the Data API.

Given a raw signal, you can apply transformations to create new time series that are useful for your purpose. Such transformations can for example be resampling a time series to a different frequency, converting it to a year-over-year signal or changing it to a different currency.

Different signals can also be combined, for example, with arithmetic operations.


Signals are represented by expressions, which can alternatively be called a formula. For example, close_price is an expression defining a signal which for each date produces the close price of the primary listing of a company. Expressions can also include transformations, such as close_price.delay(days=7).


The Exabel DSL has built-in support for point-in-time. When a time series is uploaded to Exabel, every data point has not only a date and a value, but also a known time, denoting the date at which the value became known. This reflects the fact that the knowledge about the value on a date can evolve with time. Some examples are:

  • Consensus estimates. As a company’s report date approaches, analysts update their estimates, which changes the consensus estimates.

  • Trickle-in effects. A vendor may take some time to collect all the data they need to calculate the time series they provide; however, they may still want to publish estimates based on, say, 95% of the data. Such an estimate will improve as more and more data are collected.

The Exabel DSL makes it easy to evaluate signals with particular known times. See the documentation on the specific FactSet and Visible Alpha functions, or the more general point-in-time transforms.