# Introduction¶

Market Selectors are algorithms to shrink a universe of assets to a smaller number of promising candidates. They don’t assign weighs; therefore, they don’t define optimal portfolio. However, they are efficient tools to pre-process a large universe of assets, and reduce its size, before applying a portfolio optimization strategy (Naive, Greedy or Risk-based).

In general, a Market Selector returns (based on its internal selection criteria)
the set of preferred assets and the fraction of capital that should
be invested in them (*i.e.*, capital at risk fraction).
The remaining portion of capital is assumed to be kept
in cash as a strategic investment reserve against adverse market conditions
(implied by the selection criteria) .

**azapy** implementations of Market Selectors always
return a tuple `(capital, mktdata)`

, where `capital`

is a number
between `[0, 1]`

, with `1`

fully invested and `0`

all in cash, and
`mktdata`

is the selection historical market data.

In practice several Selectors can be chained together with a portfolio
optimization strategy to form a complex portfolio optimization model
(*i.e.*, a model pipeline).
More details about how to construct and backtesting a model pipeline
are presented in section Model Generators.