EDITADO
Tienes razón. Tenemos que mirar al pueblo a las "hojas" en cada iteración. Yo lo haría de la siguiente manera:
Si $L_i^{(j)}$ es el conjunto de índices del $j$ rama ( $j \in \{1,2\}$ ), entonces definimos $s_i^{(j)}=\sum_{n \in L_i^{(j)}w_n}$ el peso de la rama antes del escalado y $n_i^{(j)}=\left|L_i^{(j)}\right|$ el número de hojas de la rama.
Las restricciones de caja para los pesos que llamamos $w_\text{min}$ y $w_\text{max}$ .
Dejemos que $\alpha_i$ sea el factor de escala para $L_i^{(1)}$ y $1-\alpha_i$ el factor de escala para $L_i^{(2)}$ .
Para cumplir con las restricciones, tenemos que comprobar los pesos resultantes.
Si escalamos los pesos de $L_i^{(j)}$ por $\alpha_i$ Debemos tener suficiente margen de maniobra para que la restricción de peso mínimo pueda seguir encajando en el peso de la rama y debemos tener un peso limitado para poder cumplir los límites superiores:
$$ \alpha_i s_i^{(1)} \geq n_i^{(1)} w_\text{min}$$ $$ \alpha_i s_i^{(1)} \leq n_i^{(1)} w_\text{max}$$
Para el otro lado de la rama, tenemos que comprobar, lo análogo:
$$ (1-\alpha_i) s_i^{(2)} \geq n_i^{(2)} w_\text{min}$$ $$ (1-\alpha_i) s_i^{(2)} \leq n_i^{(2)} w_\text{max}$$
Si juntamos las cuatro, obtenemos las siguientes desigualdades para $\alpha_i$ :
$$ \text{max}\left(1-\frac{n_i^{(2)}w_\text{max}}{s_i^{(2)}},\frac{n_i^{(1)}w_\text{max}}{s_i^{(1)}}\right) \leq \alpha_i \leq \text{min}\left(1-\frac{n_i^{(2)}w_\text{min}}{s_i^{(2)}},\frac{n_i^{(1)}w_\text{max}}{s_i^{(1)}}\right)$$
Así que si definimos el límite inferior como $\text{LB}_i$ y el límite superior como $\text{UB}_i$ ajustamos el factor de escala de la siguiente manera:
$$ \hat{\alpha}_i = \text{max}(\text{LB}_i,\text{min}(\alpha_i,\text{UB}_i))$$
Si $\text{UB}_i \leq \text{LB}_i$ y luego terminar la función. Espero que esto sólo ocurra si las restricciones son incompatibles, pero no he intentado probarlo.
De esta manera, se puede proceder con el algoritmo mientras se cumplen las restricciones.
Las restricciones lineales en los activos sigle son probablemente el único tipo de restricciones útiles que se pueden imponer. Las restricciones sobre los pesos de los sectores, por ejemplo, serán imposibles aquí debido a la estructura de agrupación. En la práctica, puedo ver que esto es un gran inconveniente.
Comparado con el clásico Presupuesto de Riesgo de volatilidad inversa, este enfoque es realmente elegante, ya que sólo ignora la parte de la matriz de covarianza de la varianza que es de poca importancia si se quiere.