Define a Transfer Signal using the Expression builder


Signal/Factor development typically requires a good understanding of programming, databases, the underlying data and data structures. Finsera provides an industry-first platform that enables you to use the power of cloud computing with our low-code to no-code approach.

At the heart of this is the Finsera proprietary DSL (Domain Specific Language) which is a subset of Python that enables building complex factors/signals by just describing the underlying calculations at a high level.

To demonstrate the power of this interface (and how simple it can be), we design below a transfer signal. This effective signal assigns values to our investment universe that are carried over from a different universe.

Finsera signal DSL provides an in_universe operator that does this transfer. Here's a signal that computes the cap-weighted sub-industry average of the 60-day Money Flow Index signal in a US Small Cap universe and transfers those values to assets in our investment universe that belong to the same sub-industry:


The code above is all you need. Let’s elaborate on this a bit:

  • add_category assigns a sub-industry (RBICS Level 4) label to each value of the mfi_60 signal for a particular build date
  • the over operator says that the following aggregation will be done across all assets in the sub-industry
  • the avg does the cap-weighted average across all the assets in each sub-industry
  • in_universe causes the preceding steps to be done in us_small_cap rather than the investment universe
  • now back in our investment universe, expand_catgeory expands the sub-industry values so that each asset gets the value corresponding to its sub-industry
  • finally, drop_category removes the category label from the rows

There's a lot packed into those few lines of code. If you're just getting started, it can be a little overwhelming to figure out what the signal DSL has to offer.

To help with that, our IDE includes an expression builder. An expression builder is our no-code approach to writing code, without limiting its capabilities in any way. The expression builder allows you to build complex signals with just UI. No annoying drag and drop interface. It provides a very logical way of defining your compute steps with an instant code preview to read what you build.

Below is an example of a partial expression of the code above built using expression builder. You can correlate this to the DSL code snippet above to get some sense of how this works.

Example of how you build the signal in the expression builder

The expression builder reduces the learning curve to writing signals and our platform computes your code in parallel to get you results faster, in a fraction of the time it would take otherwise.