Hello, long time lurker first time poster here. I was wondering if anyone has been able to short crypto on GDAX. I am running into 2 issues with the backtester.
The first is that any short limit order I place is accepted but no position is opened.
The second issue is that I am unable to use a margin account. I receive the error
PythonException: Exception : The GDAX brokerage does not currently support Margin trading.
Which is not true since GDAX does have margin accounts.
Russell LaCour
Also I am trying to attach my backtest but keep recieving a 502 bad gateway in the console so here is the code
import numpy as np import decimal as d ### <summary> ### Basic mean reversion of bitcoin, buy when above sma. Sell when below. ### </summary> class BTCMeanReversion(QCAlgorithm): def Initialize(self): '''Initialise the data and resolution required, as well as the cash and start-end dates for the algorithm''' self.SetStartDate(2016,10,07) #Set Start Date self.SetEndDate(2018,02,15) #Set End Date self.SetCash(100000) #Set Strategy Cash self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash) self.AddCrypto("BTCUSD", Resolution.Hour) def OnData(self, data): if not self.Portfolio.Invested: self.SetHoldings("BTCUSD", -1) # Override SetHoldings to use limit orders (ratio is of totalPortfolioValue.) def SetHoldings(self, symbol, ratio): security = self.Securities[symbol] if not security.IsTradable: self.Debug("{} is not tradable.".format(symbol)) return # passive fail ratio = d.Decimal(ratio) price, quantity = security.Price, security.Holdings.Quantity # Keep 2% Cash (for the limit order, rounding errors, and safety) totalPortfolioValue = self.Portfolio.TotalPortfolioValue * d.Decimal(0.98) # +0.1% Limit Order # (to make sure it executes quickly and without much loss) # (if you set the limit large it will act like a market order) limit = 1.001 desiredQuantity = totalPortfolioValue * ratio / price orderQuantity = desiredQuantity - quantity # limit needs to be inverse when selling limitPrice = price * d.Decimal(limit if orderQuantity >= 0 else 1/limit) self.Log("Limit Order: %0.2f coins @ %0.2f per coin" % (orderQuantity, limitPrice)) self.LimitOrder(symbol, orderQuantity, limitPrice)
Jared Broad
Hi Russel -- where do you get margin trading? Everything Coinbase shares indicates they dont support it.
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
Russell LaCour
I see they actually removed support, the link on the bottom of there site takes you to this link which is now broken
Russell LaCour
I have also noticed that when I use SetBenchmark("BTCUSD") the bench mark is still the S&P 500 and BTCUSD is not a selectable option
Benjamin Stirrup
For the benchmark issue, a temporary work-around (until QC implements options for crypto benchmarks), might be to plot it manually:
def Initialize(self): ... stockPlot = Chart('Trade Plot') stockPlot.AddSeries(Series('Equity', SeriesType.Line, 0)) stockPlot.AddSeries(Series('Benchmark', SeriesType.Line, 0)) ... def OnData(self, data): ... self.Plot('Trade Plot', 'Equity', self.Portfolio.TotalPortfolioValue) self.Plot('Trade Plot', 'Benchmark', self.Securities["BTCUSD"].Price) ...
Russell LaCour
Thank you for the suggestion!
Russell LaCour
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!