Algorithm Framework

Hybrid Algorithms

Introduction

A hybrid algorithm is a classic algorithm with less than 5 framework models. An algorithm that uses all of the default framework models is not a hybrid algorithm. The hybrid algorithm design can be beneficial in the following circumstances:

  • If you want to use a Universe Selection model instead of a user-defined universe
  • If you want to use a Portfolio Construction, Risk Management, or Execution model instead of manually placing and managing the orders in your algorithm
  • If your algorithm logic naturally violates the separation of concerns design principle that the framework was designed to uphold

Universe Selection

If you use a Universe Selection model in your classic algorithm instead of just adding a user-defined universe, it's a hybrid algorithm.

Portfolio Construction

You can add a Portfolio Construction model to your classic algorithm and have it place orders without returning Insight objects from an Alpha model. To emit insights without an Alpha model, in the OnData method, call the EmitInsights method.

EmitInsights(insight);
self.EmitInsights(insight)

Risk Management

Some Risk Management models don't require the Portfolio Construction model to provide PortfolioTarget objects. If you add one of these Risk Management models to a classic algorithm, it's a hybrid algorithm. To see which pre-built Risk Management models don't need the Portfolio Construction model to provide PortfolioTarget objects, see Supported Models.

Execution

You can use an Execution model in a hybrid algorithm instead of placing orders manually. For an Execution model to receive PortfolioTarget objects in a hybrid algorithm, you also need to add a Portfolio Construction model.

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: