We are soliciting feedback for a proposed algorithm framework to sit on top of the QCAlgorithm class. This would be a pluggable system which would improve / extend the current API and give algorithms suggested separations - essentially helping divide a large algorithm into discrete pieces which you could copy & reuse between projects.

Most well formed algorithmic trading strategies have 4 distinct large components;

1. Asset Selection (hand picked, coarse universe or fine fundamentals).

2. Signal (indicator, filter, alpha etc).

3. Risk Control - Portfolio risk or Trade risk (often with volatility models).

4. Execution (slippage, fee models included).

We think it would help the community make great strategies if we provide a robust framework to plug these different classes together like lego blocks. We imagine you could make, reuse and share an execution plugin - completely separate to other parts of your strategy. This would let you test different plugins interchangably; or for example; plugin a better execution algorithm as you manage more capital on your algorithm. 

By building from QCAlgorithm base class, all existing algorithms would continue to work, and all API methods would still be available in the Framework class. We are brain storming a rough architecture like this: 

To ensure we cover all the possible plugin designs we'd like to get your ideas of different plugins and the data they might need; or the data they might output. This way we can design an ideal suite of plugin interfaces which will support 99% of use cases. To kick off this brainstorming we've made this flow chart below which seeds some ideas for the models. 

We'd really welcome your feedback! This will enable awesome interchangability in your algorithms and let you experiment without re-coding or redesigning to each strategy.