Regarding insight generation, I understand that sending a positive order(100 for example) should generate an Up direction insight, while sending a negative order(-100 for example) should generate a Down direction insight, but what if I'm sending orders through SetHoldings()? 

For example, what if on day 1, I send an order using SetHoldings("SPY", 1.00), and on day 2 I send another order through SetHoldings("SPY", 0.50)? The first order should generate an Up insight, and just to clarify, is the second order supposed to generate a Down insight since half of the holdings are being liquidated?

When using SetHoldings(), there can also be some cases where the algorithm might add positions and in other cases liquidate positions, depending on where price has moved; how do you generate insights for a case like that?