StockMarketValue longs + shorts + convert to base currency

Is there a way to get StockMarketValue in IBController that accounts for short and long positions, plus different currencies?

ibc.GetAccountValue("StockMarketValue") treats shorts as negative values, so if I was long 100K USD and short 100K USD, then StockMarketValue is equal to 0 USD, while I'd want to end up with 200K USD.

If I get ibc.GetPositionList() and try to loop through all positions and get ibc.GetPositionInfo( op, "Currency"), then it comes back as 0.0, expected USD JPY EUR. Based on ibc.GetPositionInfo( op, "Position") I can figure out the side (negative shares are short), but I cannot convert all positions to USD without knowing their currency.

Would NetLiq work for what you're trying to do?

Peter, NetLiq gives the account balance. I'm looking for positions balance.