Optimizing multi strategy portfolio or limit number of positions

Hello,

How can we construct/optimize (select strategies into) portfolio of diverse strategies on different symbols in Amibroker?

I managed to produce a "portfolio" of 90 strategies decent enough to trade them on different ETFs on daily timeframe with entries and exits at the next bar open. Strategies trade in major ETFs, sector ETFs, commodities ETFs, ... There can be several different long and short strategies per one ETF. Strategies range from mean reversion, patterns, breakout, pullbacks, ... Some trade 20 or more times per year (have high CAR but also high drawdown), some only 4 or 5 times per year in special market conditions for a particular ETF (high win rate and SR, PF).

Currently my capital allocation between strategies is naive equal weight based on max concurrent open positions of the portfolio in history (49 open positions at the same bar was maximum since the year 2000). See chart:


Distribution of open positions is the following:

1st percentile of Open Positions: 0    
5th percentile of Open Positions: 2    
10th percentile of Open Positions: 3    
25th percentile of Open Positions: 4    
50th percentile of Open Positions: 7    
75th percentile of Open Positions: 13    
90th percentile of Open Positions: 24    
95th percentile of Open Positions: 30    
99th percentile of Open Positions: 39 

So my capital is mostly idle:

           All trades Long trades Short trades 
Exposure % 12.37%     11.49%      0.88% 

I want to increase capital utilisation.

Obvious thing to do is (1) add more systems that trade in times where other systems are dormant and (2) set lower value for SetOption("MaxOpenPositions", MaxPositions); and use ranking/PositionScore.
Since (1) is not easy and by increasing number of systems with equal weight allocation to each system individual allocation becomes to to small to make it worth putting on a trade, option (2) is the way to go.
I can see that if I lower number of MaxOpenPositions I can sometimes get (way) better CAR and lower DrawDown. But the problem is that selection of competing strategies which would like to put on a trade on a same bar is noise and results are down to pure luck. So I need to introduce PositionScore. And I am not sure this will solve my problem since strategies are so diverse. No matter what "objective function" I choose it would not rank/compare strategies correctly. And then there is a problem that one would need a rolling window over which these objective function would be calculated (which I do not know how to do in Amibroker except export stats object bar by bar for each strategy first and then import this at next step). Amibroker provides anchored (from start to certain point in time) stats if I understand correctly... (I hope you see that I can not introduce a look ahead bias and use whole in/out of sample stats on strategies and use them to rank strategies. Also, I need to re-rank them for each bar after each closed trade.)

So it is mess and hard to solve problem.

I am sure people have solved this somehow... Can you please advise on how to solve this using Amibroker?

Thanks.