- ago
Hello,

After reviewing various options, I've chosen Wealth-Lab for its excellent backtesting and charting capabilities—great work to the team there! However, I've noticed there's no built-in #rebalancing module for strategy configurations. While one could develop a custom module using PreExecute/PostExecute for plumbing, integrating it with existing or new strategies could be complex.

It would be very beneficial if Wealth-Lab included a built-in option for rebalancing in the strategy settings. This could be a simple checkbox to enable scheduled or conditional rebalancing during each Execute cycle. More flexibility could be provided if the rebalancing is available as a new building block type.

I'd appreciate any feedback on this suggestion!
0
122
Solved
7 Replies

Reply

Bookmark

Sort
- ago
#1
Sure, just use a Rotation strategy and rebalance Daily/Weekly etc.
0
Cone8
 ( 23.52% )
- ago
#2
What if you want to rebalance a non-rotation Strategy?

If were talking about strategies other than Rotation types, the request needs to be refined. Generally, strategies hold many or no positions at any given time. Does rebalancing have meaning in that context?
0
Glitch8
 ( 12.05% )
- ago
#3
We do have that Rebalance method for C# Strategies
0
Best Answer
Cone8
 ( 23.52% )
- ago
#4
If the idea is Rebalance positions to a specified percentage of portfolio equity, then probably the Buy/SellAtMarket rules could be modified to optionally Rebalance(pct) instead of PlaceTrade.

Hmmm, it's a little more complicated. You'd need to enable that in both entry and exit logic along with any other exit condition. That could be a challenge where Limit or Stop exits are used.
0
Glitch8
 ( 12.05% )
- ago
#5
Let’s not complicate the existing Blocks. This might be something best left to a C# coded Strategy.
0
- ago
#6
Sure, I agree incorporating a weight-based betting system directly into the code is an easier way. Something like the "Advanced Position Sizer > Spread Equity Equally" option might be a good match for this specific use case in a non-rotation strategy. However, there's a catch: this setup could lead to a NSF unless existing positions are resized or rebalanced first—say, during a PreExecute phase—before adding new signals, which cannot be done in non-c# strategies.

Here’s a simplified scenario:
1. We start with 3 positions, each taking up 30% of the portfolio, totaling 90% of our investment.
2. Then a new signal comes in today. Exciting, right? But oh no, there’s not enough cash or margin available.
3. What should we do? Reject it?
- Wait a minute! What if we rebalance or scale down the existing exposures to 25% each? That would free up 25% for the new position.
- Great, now our positions are 25% x 4 = 100% utilized. Or we may adjust to 22.5% x 4 = 90%, leaving a 10% cash reserve, depending on your configuration.

@Eugene, the Rotation strategy could indeed be a perfect fit, especially if we can adjust the settings to optimize the use of excess cash when the total number of active instruments or signals is less than the configured number. Currently, it distributes equally by 1/(N.allowed), not 1/(N.active). Nothing wrong with that, just a thought.

@Glitch, using the Rebalance method should definitely work well if the strategy is implemented as a C# strategy.

@Cone, spot on, thus we can expect a number of complications unless we find a very clean method (block or strategy setting) to introduce dynamic rebalancing that can effectively manage the complexities at the multi-instrument level.

The main challenge is that the position sizing is fixed at entry, making further adjustments tricky in a basic building block strategy. I'd prefer to stick with this unless it's absolutely necessary to switch to a C# strategy. Writing the code isn't a problem for me, but it can be less transparent and sometimes hard to follow for those who aren't familiar with coding.

Thanks everyone!
0
Cone8
 ( 23.52% )
- ago
#7
What you described is what I'll call an "open-ended rotation strategy to rebalance based on an estimate of the number of positions the next day. It would have to take into account the exits too. This isn't going to happen for blocks, but you can sure do it with a C# coded today.
If you need help with that => Concierge Service
0

Reply

Bookmark

Sort