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. Many 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. Some exchanges will have limits higher than .001BTC, some exchanges will have limits that are lower than .001BTC.
You might be wondering how this relates to Shrimpy holding onto BTC when it wasn't allocated. The answer to this question is that some trades on Shrimpy need to be routed through BTC. This can happen when there is not a direct trading pair between two different assets, when trading to BTC is more optimal for liquidity, or when there is an arbitrage opportunity where you could make money by going to BTC first.
Regardless of the case, there are times when BTC might be 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.
While some users might not mind Shrimpy holding onto excess BTC for rebalancing, other users will wish to reduce the frequency of this problem. The following are some options for how to prevent this situation from arising frequently.
Increasing the amount of funds held in your portfolio will decrease the frequency of holding excess BTC because the deviation between assets will be larger during each rebalance.
Reduce Number of Assets
Reducing the number of assets in your portfolio will increase the value held in each asset. This will also decrease the frequency of holding excess BTC because the deviation between assets will be larger during each rebalance.
Migrate to an Alternative Exchange
Some exchanges offer lower trading limits. KuCoin is one of these exchanges. Moving a portfolio to KuCoin would drastically decrease the frequency of your portfolio holding excess BTC.