QUOTE:
The job of Portfolio Simulation Mode is to make the user as much money as possible with as little coding as possible. Do we agree?
QUOTE:
... I'd say the job is to perform backtests simulating real portfolio conditions as accurately as possible given the general constraints of backtesting / data.
I totally agree, and finite buying power is one of those constraints. When you hit that buying power constraint, you can do one of two things:
1) Do nothing and ignore an opportunity to buy a new stronger position that would perform better than your weakest position.
2) Replace your weakest position with the new higher performing position.
In all cases, the more profitable choice will always be #2, and that's what the smart trader would always do. But if you want to simulate the dumbest trader, you simply don't set any Sell Priorities. In this case, #1 will be the only choice.
QUOTE:
Wealth-Lab's simulator is not a target for fundamental changes like deciding when to rotate positions in the portfolio.
It's not deciding, and it should
not decide a controversial issue. It's the strategy that decides how to set the Sell Priority (and there are many ways to do that). And if no Sell Priority is set, then in works like it does now.
My point is that using this "rotation" (which is commonly performed in real-world trading) is up to the strategy,
not the framework. The framework is only
providing the strategy author an option to trade like a professional, but he doesn't have to.
It essential to give the strategy author a choice. I don't trade options, and Wealth-Lab doesn't require me to. But the ability to perform Short and Cover trades is still provided by the program. I just don't use them; that's
my choice.
--------
Also, I don't think a major change is "required" to add a Sell Priority to the existing framework. Both Sell and Buy Priority (Positions.Priority) processing is now performed by the ByAtXxxx() call. It's an internal routine that may need to be extended to sell External Symbols, but that's something the so called "rotational strategies" are already doing with the current framework architecture. And with the ByAtXxxx() calls doing the selling of External Symbols (
if Sell Priories are defined), the strategy author will no longer have to deal with External Symbols directly (an awkward operation).
It "might" be better to to exposed External Symbols to the WealthScript class in a new framework design, but that's certainly
not a requirement. Moreover, I'm not so sure it's even desirable because you destroy some of the encapsulation. You really want the framework to protect the strategy author from those nasty External Symbols (if possible).
Maybe we both should give the (1) idea and (2) implementation more thought. Moreover, I'm interested in how other users feel about this proposed enhancement.