81ec10578f
Cash modelling poses several unique problems w.r.t the algorithm framework. One constant issue is that our primary cash brokerage, GDAX, doesn't support the concept of virtual positions. Another issue is the very concept of a vitual position. In cash modelling, there are no virtual positions, just currencies. In this model an issue is how do we phrase portfolio targets. For example, if I emit a target of 10 BTC/USD but don't own an USD, what does that mean? I might have millions of dollars of LTC, but since I don't own any USD I won't be able to execute on BTC/USD. A smart algorithm might sell some LTC for BTC instead. At this point, we're getting into the nitty gritty of an individual algorithm and how that algorithm might transition between various currencies. The framewor absolutely supports these types of things, but it requires agreement between the portfolio construction model and the execution model as to exactly what a target is describing. In the margin world, a target on BTC/USD simply means to change your virtual position in that currency pair, but in the cash world, I could see it meaning a direct amount of BTC (or USD depending on target direction +/-). TL;DR -- Add a warning describing potentially unexpected behavior with the open source models as written.