The Shrimpy application appears simple, but the way Shrimpy handles and executes trades is complex. There are rules in place for each exchange and Shrimpy has no choice but to follow those rules.
One of these rules is every exchange has a minimum trade limit. This means the exchange will not allow any trade that is smaller than their minimum trade limit. Most exchanges have a minimum trade limit that is around .001BTC. Therefore, if Shrimpy tries to perform a trade that is less than .001BTC, it will be rejected. The exchange will inform Shrimpy that it cannot perform the trade because it doesn't abide by their rules.
Note: This is not a decision made by Shrimpy, this is a decision that is made by each exchange. Every exchange has implemented different rules when it comes to their minimum trade limits.
You might be wondering how this relates to Shrimpy holding onto BTC when it wasn't allocated. The answer to this question is that all trades on Shrimpy currently execute through BTC. Whether you want to sell LTC or buy XMR, this will happen through BTC. Since this is the case, there are times when BTC was bought, but there are no assets available to buy that have a deviation more than the minimum trade limit (.001BTC for example). As a result, no trade can be made. The remaining amount that couldn't be traded is left in BTC until it can be traded at a later time.
In order to get an idea of how far your assets are away from their target allocations, we have added the "Difference" column on the Shrimpy Dashboard. This should give you an idea of how far away each asset is from it's target allocations. During a rebalance, if the difference column does not say a number that is greater than the minimum trade limit, it is unlikely a trade will be made for that asset.