book
Checkout our new book! Hands on AI Trading with Python, QuantConnect, and AWS Learn More arrow

Custom Universes

Key Concepts

Introduction

A custom universe lets you select a basket of assets from a custom dataset.

Initialize Universes

To add a custom universe to your algorithm, in the initialize method, pass your universe type and a selector function to the add_universe method.

Select Language:
self.add_universe(MyCustomUniverseDataClass, "myCustomUniverse", Resolution.DAILY, self._selector_function)

Receive Custom Data

The universe selector function receives a list of your custom objects and must return a list of Symbol objects. In the selector function definition, you can use any of the properties of your custom data type. The Symbol objects that you return from the selector function set the constituents of the universe.

Select Language:
class MyCustomUniverseAlgorithm(QCAlgorithm):
	def _selector_function(self, data: List[MyCustomUniverseDataClass]) -> List[Symbol]:
    	sorted_data = sorted([ x for x in data if x["CustomAttribute1"] > 0 ],
                         	key=lambda x: x["CustomAttribute2"],
                         	reverse=True)
    	return [x.symbol for x in sorted_data[:5]]

Historical Data

To get historical data for a custom data universe, call the history method with the Universe object. For more information about historical data, see Universes.

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: