Hi fishstoryyy ,
Thank you for your question.
We advise Alpha Authors to use the design they feel more comfortable with.
The main idea behind the Algorithm Framework is modularity that should lead to writing less code. Modularity brings a huge advantage: plug-and-play. We can test different modules (PCM, Risk, and Execution) for the given Universe+Alpha, and see which combination works best for our goals.
On the other hand, if we need to (re)write all modules (PCM, Risk, Execution) to serve a particular Alpha Model, resulting in more code than using the Classic design, it's a sign that we should probably not use the Framework. Or if we need to “hack” the Framework by passing additional information between modules, violating the separation of concerns principle, it's a sign that we should choose Classic instead.
Let me point out that, in some cases, we can leverage our Classic algorithm with Framework modules. For example, we can simply include these statements
self.SetRiskManagement(TrailingStopRiskManagementModel(0.01))
self.SetExecution(VolumeWeightedAveragePriceExecutionModel())
to add a 10% trailing stop executed with a VWAP execution model.