I think it depends on your time scales. We will definitely be addressing this issue in the next few months, so it depends if you are okay with a slightly slower implementation until we do the necessary work, or if you need something quick and dirty now. I assume by ‘engine’ you mean something special purpose for your particular requirement. That might work better for you in the short term if your need is urgent.
The reason your particular request is not a simple change is that by changing the portfolio version, we’re invalidating the dependency graph. That means we’d need to rebuild it for each portfolio version. To get around this we need to implement incremental dependency graph compilation, which will only make the necessary changes rather than do a whole-graph rebuild.
We’re just finishing a bunch of the ground work necessary for this - in particular we’re removing the link that positions have to their parent portfolio node, which means they can live in multiple portfolio nodes. This means that position and portfolio version changes can be acted upon by the engine because we have the real position ids rather than the weird combined ids that the PositionSource currently returns.
I’ll make the decision shortly whether to focus our next efforts on incremental compilation or on intra-view sub-view processing (having a view that’s able to spawn child processes that each run a scenario). I suspect I’ll chose the former, but I need to discuss with the senior engineer on the project first.