From 94d25e402ffa98569e9ef6e5ec0921e8d2957063 Mon Sep 17 00:00:00 2001 From: Martin Molinero Date: Mon, 26 Jan 2026 15:36:52 -0300 Subject: [PATCH] Fix dydx holdings value - dYdX crypto futures holdings value behaves like normal positions qtty * price --- .../DYDXCryptoFuturesRegressionAlgorithm.cs | 128 ++++++++++++++++++ Common/Orders/Fees/dYdXFeeModel.cs | 1 - .../CryptoFuture/CryptoFutureHolding.cs | 5 + .../dydx/minute/btcusd/20260101_quote.zip | Bin 0 -> 30068 bytes .../dydx/minute/btcusd/20260101_trade.zip | Bin 0 -> 18393 bytes 5 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 Algorithm.CSharp/DYDXCryptoFuturesRegressionAlgorithm.cs create mode 100644 Data/cryptofuture/dydx/minute/btcusd/20260101_quote.zip create mode 100644 Data/cryptofuture/dydx/minute/btcusd/20260101_trade.zip diff --git a/Algorithm.CSharp/DYDXCryptoFuturesRegressionAlgorithm.cs b/Algorithm.CSharp/DYDXCryptoFuturesRegressionAlgorithm.cs new file mode 100644 index 000000000000..f00466008b76 --- /dev/null +++ b/Algorithm.CSharp/DYDXCryptoFuturesRegressionAlgorithm.cs @@ -0,0 +1,128 @@ +/* + * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. + * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +using System; +using QuantConnect.Data; +using QuantConnect.Interfaces; +using System.Collections.Generic; +using QuantConnect.Securities.CryptoFuture; + +namespace QuantConnect.Algorithm.CSharp +{ + /// + /// Regression algorithm asserting DYDX Crypto Future support + /// + public class DYDXCryptoFuturesRegressionAlgorithm : QCAlgorithm, IRegressionAlgorithmDefinition + { + private CryptoFuture _cryptoFuture; + + /// + /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized. + /// + public override void Initialize() + { + SetStartDate(2026, 1, 1); + SetEndDate(2026, 1, 1); + + SetBrokerageModel(Brokerages.BrokerageName.DYDX, AccountType.Margin); + _cryptoFuture = AddCryptoFuture("BTCUSD"); + } + + /// + /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. + /// + /// Slice object keyed by symbol containing the stock data + public override void OnData(Slice slice) + { + if (!Portfolio.Invested) + { + Buy("BTCUSD", 1); + } + else + { + if (Math.Abs(Portfolio.TotalFees - Portfolio.TotalHoldingsValue * 0.0005m) > 1 + || Math.Abs(Portfolio.TotalFees - _cryptoFuture.Price * 0.0005m) > 1) + { + throw new RegressionTestException("Unexpected fees value!"); + } + if (Math.Abs(Portfolio.TotalHoldingsValue - _cryptoFuture.Price) > 1) + { + throw new RegressionTestException("Unexpected holdings value!"); + } + Quit(); + } + } + + /// + /// This is used by the regression test system to indicate if the open source Lean repository has the required data to run this algorithm. + /// + public bool CanRunLocally { get; } = true; + + /// + /// This is used by the regression test system to indicate which languages this algorithm is written in. + /// + public List Languages { get; } = new() { Language.CSharp }; + + /// + /// Data Points count of all timeslices of algorithm + /// + public long DataPoints => 5; + + /// + /// Data Points count of the algorithm history + /// + public int AlgorithmHistoryDataPoints => 15; + + /// + /// Final status of the algorithm + /// + public AlgorithmStatus AlgorithmStatus => AlgorithmStatus.Completed; + + /// + /// This is used by the regression test system to indicate what the expected statistics are from running the algorithm + /// + public Dictionary ExpectedStatistics => new Dictionary + { + {"Total Orders", "1"}, + {"Average Win", "0%"}, + {"Average Loss", "0%"}, + {"Compounding Annual Return", "0%"}, + {"Drawdown", "0%"}, + {"Expectancy", "0"}, + {"Start Equity", "100000"}, + {"End Equity", "99929.57"}, + {"Net Profit", "0%"}, + {"Sharpe Ratio", "0"}, + {"Sortino Ratio", "0"}, + {"Probabilistic Sharpe Ratio", "0%"}, + {"Loss Rate", "0%"}, + {"Win Rate", "0%"}, + {"Profit-Loss Ratio", "0"}, + {"Alpha", "0"}, + {"Beta", "0"}, + {"Annual Standard Deviation", "0"}, + {"Annual Variance", "0"}, + {"Information Ratio", "0"}, + {"Tracking Error", "0"}, + {"Treynor Ratio", "0"}, + {"Total Fees", "$43.71"}, + {"Estimated Strategy Capacity", "$33000.00"}, + {"Lowest Capacity Asset", "BTCUSD 38Z"}, + {"Portfolio Turnover", "87.48%"}, + {"Drawdown Recovery", "0"}, + {"OrderListHash", "637a937cda83ce88d29a3b279832401d"} + }; + } +} diff --git a/Common/Orders/Fees/dYdXFeeModel.cs b/Common/Orders/Fees/dYdXFeeModel.cs index 4a9163c5aa74..8fcd92ac18ec 100644 --- a/Common/Orders/Fees/dYdXFeeModel.cs +++ b/Common/Orders/Fees/dYdXFeeModel.cs @@ -14,7 +14,6 @@ */ using QuantConnect.Securities; -using QuantConnect.Util; namespace QuantConnect.Orders.Fees; diff --git a/Common/Securities/CryptoFuture/CryptoFutureHolding.cs b/Common/Securities/CryptoFuture/CryptoFutureHolding.cs index 3d0d502c8003..77cdcc5c85b6 100644 --- a/Common/Securities/CryptoFuture/CryptoFutureHolding.cs +++ b/Common/Securities/CryptoFuture/CryptoFutureHolding.cs @@ -40,6 +40,11 @@ public CryptoFutureHolding(Security security, ICurrencyConverter currencyConvert /// The value of the quantity of shares in the account currency public override ConvertibleCashAmount GetQuantityValue(decimal quantity, decimal price) { + if (Symbol.ID.Market == Market.DYDX) + { + // common math quantity * quote price + return base.GetQuantityValue(quantity, price); + } var cryptoFuture = (CryptoFuture)Security; Cash cash; diff --git a/Data/cryptofuture/dydx/minute/btcusd/20260101_quote.zip b/Data/cryptofuture/dydx/minute/btcusd/20260101_quote.zip new file mode 100644 index 0000000000000000000000000000000000000000..765c76f9107b2eca26b7c3cb785dd2282cd1cad3 GIT binary patch literal 30068 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 literal 0 HcmV?d00001 diff --git a/Data/cryptofuture/dydx/minute/btcusd/20260101_trade.zip b/Data/cryptofuture/dydx/minute/btcusd/20260101_trade.zip new file mode 100644 index 0000000000000000000000000000000000000000..acb1ba38334b3dbc0bf81791f9fc2c626a4af0f5 GIT binary patch literal 18393 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