The conditional ranks for menagerie are based on the menagerie stats when other cards are available. Whether or not the other cards are purchased not directly relevant to the delta for menagerie. Of course, you can do the
converse, and see how much menagerie helps the other cards, and that won't have this bias.
For the existing ranking function is primarily based on win rate given avail and chance of being gained. I think those two alone got 86% of the pairs ranked correctly.
// This function was found by card_ranker/optimize_ranks.py
return (52.926 * win_rate_given_gain +
1.358 * log_odds_any_gained +
-1.161 * num_plus_actions +
-1.712 * is_vp +
1.625 * is_reaction);
I had some compensating factors for things like +actions (that tend to be gained more often) and reactions (that tend to be gained when your opponent is playing well, eg, attacking) and is_vp (winners tend to get lots of vp even if the vp itself is the effect rather than the cause of the dominant position). With the three mitigating factors, the accuracy was at about 90%.
But they were optimized against QVist's single card ranks. I could definitely see the need to add some additional mitigating factors for the combo ranking. Like here, cards that make it easy (+buy/gain) or desirable to have many cards in the deck (fairgrounds) might be looked too highly upon by the current conditional ranking function.