diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8637c0d68..71d464184 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report to help us improve. Do not use this for strategy assistance. title: '' labels: "Triage Needed" assignees: '' @@ -12,7 +12,11 @@ Have you searched for similar issues before posting it? If you have discovered a bug in the bot, please [search the issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue). If it hasn't been reported, please create a new issue. -Please do not use bug reports to request new features. +Has your strategy or configuration been generated by an AI model, and is now not working? +This is almost certainly NOT a bug in Freqtrade, but a problem with the code your AI model generated. +Please consult the documentation. We'll close such issues and point to the documentation. + +Please do not use the bug report template to request new features. --> ## Describe your environment diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index db335bf09..b1d106c5c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,6 +1,6 @@ --- name: Feature request -about: Suggest an idea for this project +about: Suggest a new feature or idea for this project title: '' labels: '' assignees: '' diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 9283f0e4f..2ca83c97f 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,6 +1,6 @@ --- name: Question -about: Ask a question you could not find an answer in the docs +about: Ask a question you could not find an answer in the docs. Use this template if you've got problems with your strategy. title: '' labels: "Question" assignees: '' @@ -8,9 +8,12 @@ assignees: '' --- ## Describe your environment @@ -22,4 +25,4 @@ Please do not use the question template to report bugs or to request new feature ## Your question -*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/en/latest/)* +*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/)* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 90a10d4da..34fef3a9c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,10 @@ ## Summary diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d6c20a6bc..ecdbe9d8a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -29,6 +29,10 @@ updates: mkdocs: patterns: - "mkdocs*" + scipy: + patterns: + - "scipy" + - "scipy-stubs" - package-ecosystem: "github-actions" directory: "/" diff --git a/.github/workflows/binance-lev-tier-update.yml b/.github/workflows/binance-lev-tier-update.yml index ba1999fd6..e04f95ff5 100644 --- a/.github/workflows/binance-lev-tier-update.yml +++ b/.github/workflows/binance-lev-tier-update.yml @@ -15,7 +15,7 @@ jobs: environment: name: develop steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -34,7 +34,7 @@ jobs: run: python build_helpers/binance_update_lev_tiers.py - - uses: peter-evans/create-pull-request@v7 + - uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 with: token: ${{ secrets.REPO_SCOPED_TOKEN }} add-paths: freqtrade/exchange/binance_leverage_tiers.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e45f85481..330994a5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,10 +25,10 @@ jobs: strategy: matrix: os: [ "ubuntu-22.04", "ubuntu-24.04" ] - python-version: ["3.10", "3.11", "3.12"] + python-version: ["3.11", "3.12", "3.13"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -38,32 +38,18 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 with: + activate-environment: true enable-cache: true python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" cache-suffix: "${{ matrix.python-version }}" prune-cache: false - - name: Cache_dependencies - uses: actions/cache@v4 - id: cache - with: - path: ~/dependencies/ - key: ${{ runner.os }}-dependencies - - - name: TA binary *nix - if: steps.cache.outputs.cache-hit != 'true' - run: | - cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. - - name: Installation - *nix run: | uv pip install --upgrade wheel - export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH - export TA_LIBRARY_PATH=${HOME}/dependencies/lib - export TA_INCLUDE_PATH=${HOME}/dependencies/include uv pip install -r requirements-dev.txt uv pip install -e ft_client/ uv pip install -e . @@ -89,6 +75,7 @@ jobs: COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu run: | # Allow failure for coveralls + uv pip install coveralls coveralls || true - name: Run json schema extract @@ -102,6 +89,8 @@ jobs: python build_helpers/create_command_partials.py - name: Check for repository changes + # TODO: python 3.13 slightly changed the output of argparse. + if: (matrix.python-version != '3.13') run: | if [ -n "$(git status --porcelain)" ]; then echo "Repository is dirty, changes detected:" @@ -144,7 +133,7 @@ jobs: mypy freqtrade scripts tests - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: severity: error @@ -155,11 +144,11 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ "macos-13", "macos-14", "macos-15" ] - python-version: ["3.10", "3.11", "3.12"] + os: [ "macos-14", "macos-15" ] + python-version: ["3.11", "3.12", "3.13"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -170,26 +159,15 @@ jobs: check-latest: true - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 with: + activate-environment: true enable-cache: true python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" cache-suffix: "${{ matrix.python-version }}" prune-cache: false - - name: Cache_dependencies - uses: actions/cache@v4 - id: cache - with: - path: ~/dependencies/ - key: ${{ matrix.os }}-dependencies - - - name: TA binary *nix - if: steps.cache.outputs.cache-hit != 'true' - run: | - cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. - - name: Installation - macOS (Brew) run: | # brew update @@ -217,9 +195,6 @@ jobs: - name: Installation (python) run: | uv pip install wheel - export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH - export TA_LIBRARY_PATH=${HOME}/dependencies/lib - export TA_INCLUDE_PATH=${HOME}/dependencies/include uv pip install -r requirements-dev.txt uv pip install -e ft_client/ uv pip install -e . @@ -270,7 +245,7 @@ jobs: mypy freqtrade scripts - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: severity: info @@ -282,11 +257,11 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ windows-latest ] - python-version: ["3.10", "3.11", "3.12"] + os: [ "windows-2022", "windows-2025" ] + python-version: ["3.11", "3.12", "3.13.6"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -296,8 +271,9 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 with: + activate-environment: true enable-cache: true python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" @@ -309,7 +285,9 @@ jobs: function uvpipFunction { uv pip $args } Set-Alias -name pip -value uvpipFunction - ./build_helpers/install_windows.ps1 + python -m pip install --upgrade pip + pip install -r requirements-dev.txt + pip install -e . - name: Tests run: | @@ -363,7 +341,7 @@ jobs: shell: powershell - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: severity: error @@ -373,7 +351,7 @@ jobs: mypy-version-check: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -390,19 +368,19 @@ jobs: pre-commit: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false - uses: actions/setup-python@v5 with: python-version: "3.12" - - uses: pre-commit/action@v3.0.1 + - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 docs-check: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -421,7 +399,7 @@ jobs: mkdocs build - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: severity: error @@ -431,9 +409,9 @@ jobs: build-linux-online: # Run pytest with "live" checks - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -443,33 +421,18 @@ jobs: python-version: "3.12" - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@4959332f0f014c5280e7eac8b70c90cb574c9f9b # v6.6.0 with: + activate-environment: true enable-cache: true python-version: "3.12" cache-dependency-glob: "requirements**.txt" cache-suffix: "3.12" prune-cache: false - - name: Cache_dependencies - uses: actions/cache@v4 - id: cache - with: - path: ~/dependencies/ - key: ${{ runner.os }}-dependencies - - - - name: TA binary *nix - if: steps.cache.outputs.cache-hit != 'true' - run: | - cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. - - name: Installation - *nix run: | uv pip install --upgrade wheel - export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH - export TA_LIBRARY_PATH=${HOME}/dependencies/lib - export TA_INCLUDE_PATH=${HOME}/dependencies/include uv pip install -r requirements-dev.txt uv pip install -e ft_client/ uv pip install -e . @@ -501,15 +464,16 @@ jobs: - name: Check user permission id: check - uses: scherermichael-oss/action-has-permission@1.0.6 + continue-on-error: true + uses: prince-chrismc/check-actor-permissions-action@d504e74ba31658f4cdf4fcfeb509d4c09736d88e # v3.0.2 with: - required-permission: write + permission: "write" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 - if: always() && steps.check.outputs.has-permission && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 + if: steps.check.outputs.permitted == 'true' && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: severity: info details: Test Completed! @@ -521,7 +485,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -568,19 +532,19 @@ jobs: id-token: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false - name: Download artifact 📦 - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: pattern: freqtrade*-build path: dist merge-multiple: true - name: Publish to PyPI (Test) - uses: pypa/gh-action-pypi-publish@v1.12.4 + uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 with: repository-url: https://test.pypi.org/legacy/ @@ -597,115 +561,30 @@ jobs: id-token: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false - name: Download artifact 📦 - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: pattern: freqtrade*-build path: dist merge-multiple: true - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@v1.12.4 + uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 - deploy-docker: + docker-build: + name: "Docker Build and Deploy" needs: [ build-linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ] - runs-on: ubuntu-22.04 - if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' - - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: Extract branch name - id: extract-branch - run: | - echo "GITHUB_REF='${GITHUB_REF}'" - echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT" - - - name: Dockerhub login - env: - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - run: | - echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - - # We need docker experimental to pull the ARM image. - - name: Switch docker to experimental - run: | - docker version -f '{{.Server.Experimental}}' - echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json - sudo systemctl restart docker - docker version -f '{{.Server.Experimental}}' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - - - name: Available platforms - run: echo ${PLATFORMS} - env: - PLATFORMS: ${{ steps.buildx.outputs.platforms }} - - - name: Build and test and push docker images - env: - BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }} - run: | - build_helpers/publish_docker_multi.sh - - deploy-arm: - name: "Deploy Docker" + uses: ./.github/workflows/docker-build.yml permissions: packages: write - needs: [ deploy-docker ] - # Only run on 64bit machines - runs-on: [self-hosted, linux, ARM64] - if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' - - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - - name: Extract branch name - id: extract-branch - run: | - echo "GITHUB_REF='${GITHUB_REF}'" - echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT" - - - name: Dockerhub login - env: - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - run: | - echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - - - name: Build and test and push docker images - env: - BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }} - GHCR_USERNAME: ${{ github.actor }} - GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - build_helpers/publish_docker_arm64.sh - - - name: Discord notification - uses: rjstone/discord-webhook-notify@v1 - if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule') - with: - severity: info - details: Deploy Succeeded! - webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} + contents: read + secrets: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 6577bf38b..15ab918bc 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -19,7 +19,7 @@ jobs: name: Deploy Docs through mike runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: true diff --git a/.github/workflows/devcontainer-build.yml b/.github/workflows/devcontainer-build.yml index 12b55c6ed..06f1e0531 100644 --- a/.github/workflows/devcontainer-build.yml +++ b/.github/workflows/devcontainer-build.yml @@ -24,17 +24,17 @@ jobs: packages: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Pre-build dev container image - uses: devcontainers/ci@v0.3 + uses: devcontainers/ci@8bf61b26e9c3a98f69cb6ce2f88d24ff59b785c6 # v0.3.19 with: subFolder: .github imageName: ghcr.io/${{ github.repository }}-devcontainer diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 000000000..30b078bb0 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,125 @@ +name: Docker Build and Deploy + +on: + workflow_call: + secrets: + DOCKER_PASSWORD: + required: true + DOCKER_USERNAME: + required: true + DISCORD_WEBHOOK: + required: false + workflow_dispatch: + inputs: + branch_name: + description: 'Branch name to build Docker images for' + required: false + default: 'develop' + type: string + +permissions: + contents: read + +jobs: + deploy-docker: + name: "Deploy Docker x64 and armv7l" + runs-on: ubuntu-22.04 + if: github.repository == 'freqtrade/freqtrade' + + steps: + - uses: actions/checkout@v5 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Extract branch name + id: extract-branch + env: + BRANCH_NAME_INPUT: ${{ github.event.inputs.branch_name }} + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + BRANCH_NAME="${BRANCH_NAME_INPUT}" + else + BRANCH_NAME="${GITHUB_REF##*/}" + fi + echo "GITHUB_REF='${GITHUB_REF}'" + echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT" + + - name: Dockerhub login + env: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + run: | + echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin + + - name: Set up QEMU + uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1 + + - name: Available platforms + run: echo ${PLATFORMS} + env: + PLATFORMS: ${{ steps.buildx.outputs.platforms }} + + - name: Build and test and push docker images + env: + BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }} + run: | + build_helpers/publish_docker_multi.sh + + deploy-arm: + name: "Deploy Docker ARM64" + permissions: + packages: write + needs: [ deploy-docker ] + # Only run on 64bit machines + runs-on: [self-hosted, linux, ARM64] + if: github.repository == 'freqtrade/freqtrade' + + steps: + - uses: actions/checkout@v5 + with: + persist-credentials: false + + - name: Extract branch name + id: extract-branch + env: + BRANCH_NAME_INPUT: ${{ github.event.inputs.branch_name }} + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + BRANCH_NAME="${BRANCH_NAME_INPUT}" + else + BRANCH_NAME="${GITHUB_REF##*/}" + fi + echo "GITHUB_REF='${GITHUB_REF}'" + echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT" + + - name: Dockerhub login + env: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + run: | + echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin + + - name: Build and test and push docker images + env: + BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }} + GHCR_USERNAME: ${{ github.actor }} + GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + build_helpers/publish_docker_arm64.sh + + - name: Discord notification + uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1 + if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule') + with: + severity: info + details: Deploy Succeeded! + webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/docker-update-readme.yml b/.github/workflows/docker-update-readme.yml index 7f00c01c0..23efa0cd9 100644 --- a/.github/workflows/docker-update-readme.yml +++ b/.github/workflows/docker-update-readme.yml @@ -11,12 +11,12 @@ jobs: dockerHubDescription: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false - name: Docker Hub Description - uses: peter-evans/dockerhub-description@v4 + uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} diff --git a/.github/workflows/pre-commit-update.yml b/.github/workflows/pre-commit-update.yml index 5996dddf9..daba4dbf1 100644 --- a/.github/workflows/pre-commit-update.yml +++ b/.github/workflows/pre-commit-update.yml @@ -13,7 +13,7 @@ jobs: auto-update: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: persist-credentials: false @@ -28,7 +28,7 @@ jobs: - name: Run auto-update run: pre-commit autoupdate - - uses: peter-evans/create-pull-request@v7 + - uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 with: token: ${{ secrets.REPO_SCOPED_TOKEN }} add-paths: .pre-commit-config.yaml diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml new file mode 100644 index 000000000..1cd1c1ac1 --- /dev/null +++ b/.github/workflows/zizmor.yml @@ -0,0 +1,29 @@ +name: GitHub Actions Security Analysis with zizmor 🌈 + +on: + push: + branches: + - develop + - stable + pull_request: + branches: + - develop + - stable + +permissions: {} + +jobs: + zizmor: + runs-on: ubuntu-latest + permissions: + security-events: write + # contents: read # only needed for private repos + # actions: read # only needed for private repos + steps: + - name: Checkout repository + uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2 + with: + persist-credentials: false + + - name: Run zizmor 🌈 + uses: zizmorcore/zizmor-action@5ca5fc7a4779c5263a3ffa0e1f693009994446d1 # v0.1.2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a9f4f1309..b29010fff 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,24 +14,25 @@ repos: additional_dependencies: ["python-rapidjson", "jsonschema"] - repo: https://github.com/pycqa/flake8 - rev: "7.2.0" + rev: "7.3.0" hooks: - id: flake8 additional_dependencies: [Flake8-pyproject] # stages: [push] - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.15.0" + rev: "v1.17.1" hooks: - id: mypy exclude: build_helpers additional_dependencies: - - types-cachetools==5.5.0.20240820 + - types-cachetools==6.1.0.20250717 - types-filelock==3.2.7 - - types-requests==2.32.0.20250328 + - types-requests==2.32.4.20250809 - types-tabulate==0.9.0.20241207 - - types-python-dateutil==2.9.0.20241206 - - SQLAlchemy==2.0.40 + - types-python-dateutil==2.9.0.20250822 + - scipy-stubs==1.16.1.1 + - SQLAlchemy==2.0.43 # stages: [push] - repo: https://github.com/pycqa/isort @@ -43,13 +44,13 @@ repos: - repo: https://github.com/charliermarsh/ruff-pre-commit # Ruff version. - rev: 'v0.11.4' + rev: 'v0.12.10' hooks: - id: ruff - id: ruff-format - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: end-of-file-fixer exclude: | @@ -69,7 +70,7 @@ repos: )$ - repo: https://github.com/stefmolin/exif-stripper - rev: 0.6.2 + rev: 1.1.0 hooks: - id: strip-exif @@ -82,6 +83,6 @@ repos: # Ensure github actions remain safe - repo: https://github.com/woodruffw/zizmor-pre-commit - rev: v1.5.2 + rev: v1.12.1 hooks: - id: zizmor diff --git a/Dockerfile b/Dockerfile index de20ef376..81ba55aaf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM python:3.12.10-slim-bookworm as base +FROM python:3.13.7-slim-bookworm AS base # Setup env -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 -ENV PYTHONDONTWRITEBYTECODE 1 -ENV PYTHONFAULTHANDLER 1 +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONFAULTHANDLER=1 ENV PATH=/home/ftuser/.local/bin:$PATH ENV FT_APP_ENV="docker" @@ -21,27 +21,22 @@ RUN mkdir /freqtrade \ WORKDIR /freqtrade # Install dependencies -FROM base as python-deps +FROM base AS python-deps RUN apt-get update \ && apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \ && apt-get clean \ && pip install --upgrade pip wheel -# Install TA-lib -COPY build_helpers/* /tmp/ -RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* -ENV LD_LIBRARY_PATH /usr/local/lib - # Install dependencies COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt /freqtrade/ USER ftuser -RUN pip install --user --no-cache-dir "numpy<2.0" \ +RUN pip install --user --no-cache-dir "numpy<3.0" \ && pip install --user --no-cache-dir -r requirements-hyperopt.txt # Copy dependencies to runtime-image -FROM base as runtime-image +FROM base AS runtime-image COPY --from=python-deps /usr/local/lib /usr/local/lib -ENV LD_LIBRARY_PATH /usr/local/lib +ENV LD_LIBRARY_PATH=/usr/local/lib COPY --from=python-deps --chown=ftuser:ftuser /home/ftuser/.local /home/ftuser/.local @@ -49,7 +44,7 @@ USER ftuser # Install and execute COPY --chown=ftuser:ftuser . /freqtrade/ -RUN pip install -e . --user --no-cache-dir --no-build-isolation \ +RUN pip install -e . --user --no-cache-dir \ && mkdir /freqtrade/user_data/ \ && freqtrade install-ui diff --git a/README.md b/README.md index e0eaf55a9..80ccd871a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ [![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864) [![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop) [![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io) -[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability) Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram or webUI. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning. @@ -64,13 +63,12 @@ Please find the complete documentation on the [freqtrade website](https://www.fr ## Features -- [x] **Based on Python 3.10+**: For botting on any operating system - Windows, macOS and Linux. +- [x] **Based on Python 3.11+**: For botting on any operating system - Windows, macOS and Linux. - [x] **Persistence**: Persistence is achieved through sqlite. - [x] **Dry-run**: Run the bot without paying money. - [x] **Backtesting**: Run a simulation of your buy/sell strategy. - [x] **Strategy Optimization by machine learning**: Use machine learning to optimize your buy/sell strategy parameters with real exchange data. - [X] **Adaptive prediction modeling**: Build a smart strategy with FreqAI that self-trains to the market via adaptive machine learning methods. [Learn more](https://www.freqtrade.io/en/stable/freqai/) -- [x] **Edge position sizing** Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. [Learn more](https://www.freqtrade.io/en/stable/edge/). - [x] **Whitelist crypto-currencies**: Select which crypto-currency you want to trade or use dynamic whitelists. - [x] **Blacklist crypto-currencies**: Select which crypto-currency you want to avoid. - [x] **Builtin WebUI**: Builtin web UI to manage your bot. @@ -112,7 +110,6 @@ positional arguments: backtesting-show Show past Backtest results backtesting-analysis Backtest Analysis module. - edge Edge module. hyperopt Hyperopt module. hyperopt-list List Hyperopt results hyperopt-show Show details of Hyperopt results @@ -148,6 +145,8 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor - `/stopentry`: Stop entering new trades. - `/status |[table]`: Lists all or specific open trades. - `/profit []`: Lists cumulative profit from all finished trades, over the last n days. +- `/profit_long []`: Lists cumulative profit from all finished long trades, over the last n days. +- `/profit_short []`: Lists cumulative profit from all finished short trades, over the last n days. - `/forceexit |all`: Instantly exits the given trade (Ignoring `minimum_roi`). - `/fx |all`: Alias to `/forceexit` - `/performance`: Show performance of each finished trade grouped by pair @@ -156,6 +155,7 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor - `/help`: Show help message. - `/version`: Show version. + ## Development branches The project is currently setup in two main branches: @@ -221,7 +221,7 @@ To run this bot we recommend you a cloud instance with a minimum of: ### Software requirements -- [Python >= 3.10](http://docs.python-guide.org/en/latest/starting/installation/) +- [Python >= 3.11](http://docs.python-guide.org/en/latest/starting/installation/) - [pip](https://pip.pypa.io/en/stable/installing/) - [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - [TA-Lib](https://ta-lib.github.io/ta-lib-python/) diff --git a/build_helpers/binance_update_lev_tiers.py b/build_helpers/binance_update_lev_tiers.py index 6d5fa5c1d..64772abf7 100644 --- a/build_helpers/binance_update_lev_tiers.py +++ b/build_helpers/binance_update_lev_tiers.py @@ -12,7 +12,12 @@ secret = os.environ.get("FREQTRADE__EXCHANGE__SECRET") proxy = os.environ.get("CI_WEB_PROXY") exchange = ccxt.binance( - {"apiKey": key, "secret": secret, "httpsProxy": proxy, "options": {"defaultType": "swap"}} + { + "apiKey": key, + "secret": secret, + "httpsProxy": proxy, + "options": {"defaultType": "swap"}, + } ) _ = exchange.load_markets() diff --git a/build_helpers/install_ta-lib.sh b/build_helpers/install_ta-lib.sh deleted file mode 100755 index 0315c7025..000000000 --- a/build_helpers/install_ta-lib.sh +++ /dev/null @@ -1,35 +0,0 @@ -if [ -z "$1" ]; then - INSTALL_LOC=/usr/local -else - INSTALL_LOC=${1} -fi -echo "Installing to ${INSTALL_LOC}" -if [ -n "$2" ] || [ ! -f "${INSTALL_LOC}/lib/libta_lib.a" ]; then - tar zxvf ta-lib-0.4.0-src.tar.gz - cd ta-lib \ - && sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h \ - && echo "Downloading gcc config.guess and config.sub" \ - && curl -s 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess' -o config.guess \ - && curl -s 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.sub' -o config.sub \ - && ./configure --prefix=${INSTALL_LOC}/ \ - && make - if [ $? -ne 0 ]; then - echo "Failed building ta-lib." - cd .. && rm -rf ./ta-lib/ - exit 1 - fi - if [ -z "$2" ]; then - which sudo && sudo make install || make install - if [ -x "$(command -v apt-get)" ]; then - echo "Updating library path using ldconfig" - sudo ldconfig - fi - else - # Don't install with sudo - make install - fi - - cd .. && rm -rf ./ta-lib/ -else - echo "TA-lib already installed, skipping installation" -fi diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 deleted file mode 100644 index 919d8b7da..000000000 --- a/build_helpers/install_windows.ps1 +++ /dev/null @@ -1,10 +0,0 @@ -# vendored Wheels compiled via https://github.com/xmatthias/ta-lib-python/tree/ta_bundled_040 - -python -m pip install --upgrade pip -python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" - -pip install -U wheel "numpy<2" -pip install --only-binary ta-lib --find-links=build_helpers\ ta-lib - -pip install -r requirements-dev.txt -pip install -e . diff --git a/build_helpers/pre_commit_update.py b/build_helpers/pre_commit_update.py index 9d313efd2..9e49aa7c2 100644 --- a/build_helpers/pre_commit_update.py +++ b/build_helpers/pre_commit_update.py @@ -16,10 +16,12 @@ with require_dev.open("r") as rfile: with require.open("r") as rfile: requirements.extend(rfile.readlines()) -# Extract types only -type_reqs = [ - r.strip("\n") for r in requirements if r.startswith("types-") or r.startswith("SQLAlchemy") -] +# Extract relevant types only +supported = ("types-", "SQLAlchemy", "scipy-stubs") + +# Find relevant dependencies +# Only keep the first part of the line up to the first space +type_reqs = [r.strip("\n").split()[0] for r in requirements if r.startswith(supported)] with pre_commit_file.open("r") as file: f = yaml.load(file, Loader=yaml.SafeLoader) diff --git a/build_helpers/pyarrow-19.0.1-cp311-cp311-linux_armv7l.whl b/build_helpers/pyarrow-21.0.0-cp311-cp311-linux_armv7l.whl similarity index 62% rename from build_helpers/pyarrow-19.0.1-cp311-cp311-linux_armv7l.whl rename to build_helpers/pyarrow-21.0.0-cp311-cp311-linux_armv7l.whl index 0a730939a..792d97094 100644 Binary files a/build_helpers/pyarrow-19.0.1-cp311-cp311-linux_armv7l.whl and b/build_helpers/pyarrow-21.0.0-cp311-cp311-linux_armv7l.whl differ diff --git a/build_helpers/schema.json b/build_helpers/schema.json index 0aa2ea416..663a6191d 100644 --- a/build_helpers/schema.json +++ b/build_helpers/schema.json @@ -180,6 +180,16 @@ "description": "Offset for profit exit. \nUsually specified in the strategy and missing in the configuration.", "type": "number" }, + "recursive_strategy_search": { + "description": "Enable recursive strategy search.", + "type": "boolean" + }, + "user_data_dir": { + "description": "Path to the user data directory." + }, + "datadir": { + "description": "Path to the data directory." + }, "fee": { "description": "Trading fee percentage. Can help to simulate slippage in backtesting", "type": "number", @@ -538,10 +548,6 @@ "description": "Exchange configuration.", "$ref": "#/definitions/exchange" }, - "edge": { - "description": "Edge configuration.", - "$ref": "#/definitions/edge" - }, "log_config": { "description": "Logging configuration.", "$ref": "#/definitions/logging" @@ -566,6 +572,7 @@ "pairlists": { "description": "Configuration for pairlists.", "type": "array", + "minItems": 1, "items": { "type": "object", "properties": { @@ -610,11 +617,11 @@ "type": "string" }, "chat_id": { - "description": "Telegram chat or group ID", + "description": "Telegram chat or group ID. Recommended to be set via environment variable FREQTRADE__TELEGRAM__CHAT_ID", "type": "string" }, "topic_id": { - "description": "Telegram topic ID - only applicable for group chats", + "description": "Telegram topic ID - only applicable for group chats. Recommended to be set via environment variable FREQTRADE__TELEGRAM__TOPIC_ID", "type": "string" }, "authorized_users": { @@ -773,9 +780,11 @@ "type": "object", "properties": { "enabled": { + "description": "Enable webhook notifications.", "type": "boolean" }, "url": { + "description": "Webhook URL. Recommended to be set via environment variable FREQTRADE__WEBHOOK__URL", "type": "string" }, "format": { @@ -853,6 +862,7 @@ "type": "boolean" }, "webhook_url": { + "description": "Discord webhook URL. Recommended to be set via environment variable FREQTRADE__DISCORD__WEBHOOK_URL", "type": "string" }, "exit_fill": { @@ -1168,28 +1178,35 @@ "description": "Name of the exchange.", "type": "string" }, - "enable_ws": { - "description": "Enable WebSocket connections to the exchange.", - "type": "boolean", - "default": true - }, "key": { - "description": "API key for the exchange.", + "description": "API key for the exchange. Recommended to be set via environment variable FREQTRADE__EXCHANGE__KEY", "type": "string", "default": "" }, "secret": { - "description": "API secret for the exchange.", + "description": "API secret for the exchange. Recommended to be set via environment variable FREQTRADE__EXCHANGE__SECRET", "type": "string", "default": "" }, "password": { - "description": "Password for the exchange, if required.", + "description": "Password for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__PASSWORD", "type": "string", "default": "" }, "uid": { - "description": "User ID for the exchange, if required.", + "description": "User ID for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__UID", + "type": "string" + }, + "account_id": { + "description": "Account ID for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__ACCOUNT_ID", + "type": "string" + }, + "wallet_address": { + "description": "Wallet address for the exchange, if required. Usually used by DEX exchanges. Recommended to be set via environment variable FREQTRADE__EXCHANGE__WALLET_ADDRESS", + "type": "string" + }, + "private_key": { + "description": "Private key for the exchange, if required. Usually used by DEX exchanges. Recommended to be set via environment variable FREQTRADE__EXCHANGE__PRIVATE_KEY", "type": "string" }, "pair_whitelist": { @@ -1213,6 +1230,11 @@ "type": "boolean", "default": false }, + "enable_ws": { + "description": "Enable WebSocket connections to the exchange.", + "type": "boolean", + "default": true + }, "unknown_fee_rate": { "description": "Fee rate for unknown markets.", "type": "number" @@ -1232,7 +1254,11 @@ "type": "object" }, "ccxt_async_config": { - "description": "CCXT asynchronous configuration settings.", + "description": "CCXT asynchronous configuration settings.Usually ccxt_config should be used instead.", + "type": "object" + }, + "ccxt_sync_config": { + "description": "CCXT synchronous configuration settings. Usually ccxt_config should be used instead.", "type": "object" } }, @@ -1240,52 +1266,6 @@ "name" ] }, - "edge": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "process_throttle_secs": { - "type": "integer", - "minimum": 600 - }, - "calculate_since_number_of_days": { - "type": "integer" - }, - "allowed_risk": { - "type": "number" - }, - "stoploss_range_min": { - "type": "number" - }, - "stoploss_range_max": { - "type": "number" - }, - "stoploss_range_step": { - "type": "number" - }, - "minimum_winrate": { - "type": "number" - }, - "minimum_expectancy": { - "type": "number" - }, - "min_trade_number": { - "type": "number" - }, - "max_trade_duration_minute": { - "type": "integer" - }, - "remove_pumps": { - "type": "boolean" - } - }, - "required": [ - "process_throttle_secs", - "allowed_risk" - ] - }, "logging": { "type": "object", "properties": { diff --git a/build_helpers/ta-lib-0.4.0-src.tar.gz b/build_helpers/ta-lib-0.4.0-src.tar.gz deleted file mode 100644 index b79b70b25..000000000 Binary files a/build_helpers/ta-lib-0.4.0-src.tar.gz and /dev/null differ diff --git a/build_helpers/ta_lib-0.4.38-cp310-cp310-win_amd64.whl b/build_helpers/ta_lib-0.4.38-cp310-cp310-win_amd64.whl deleted file mode 100644 index 00610d687..000000000 Binary files a/build_helpers/ta_lib-0.4.38-cp310-cp310-win_amd64.whl and /dev/null differ diff --git a/build_helpers/ta_lib-0.4.38-cp311-cp311-linux_armv7l.whl b/build_helpers/ta_lib-0.4.38-cp311-cp311-linux_armv7l.whl deleted file mode 100644 index a255164d0..000000000 Binary files a/build_helpers/ta_lib-0.4.38-cp311-cp311-linux_armv7l.whl and /dev/null differ diff --git a/build_helpers/ta_lib-0.4.38-cp311-cp311-win_amd64.whl b/build_helpers/ta_lib-0.4.38-cp311-cp311-win_amd64.whl deleted file mode 100644 index 7237604ba..000000000 Binary files a/build_helpers/ta_lib-0.4.38-cp311-cp311-win_amd64.whl and /dev/null differ diff --git a/build_helpers/ta_lib-0.4.38-cp312-cp312-win_amd64.whl b/build_helpers/ta_lib-0.4.38-cp312-cp312-win_amd64.whl deleted file mode 100644 index fe37c8468..000000000 Binary files a/build_helpers/ta_lib-0.4.38-cp312-cp312-win_amd64.whl and /dev/null differ diff --git a/build_helpers/ta_lib-0.6.5-cp311-cp311-manylinux_2_31_armv7l.whl b/build_helpers/ta_lib-0.6.5-cp311-cp311-manylinux_2_31_armv7l.whl new file mode 100644 index 000000000..0c90c4328 Binary files /dev/null and b/build_helpers/ta_lib-0.6.5-cp311-cp311-manylinux_2_31_armv7l.whl differ diff --git a/config_examples/config_binance.example.json b/config_examples/config_binance.example.json index 6c513f064..ffb364ffd 100644 --- a/config_examples/config_binance.example.json +++ b/config_examples/config_binance.example.json @@ -2,7 +2,7 @@ "$schema": "https://schema.freqtrade.io/schema.json", "max_open_trades": 3, "stake_currency": "USDT", - "stake_amount": 0.05, + "stake_amount": 30, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "timeframe": "5m", diff --git a/config_examples/config_full.example.json b/config_examples/config_full.example.json index 04137ed80..fd5b02089 100644 --- a/config_examples/config_full.example.json +++ b/config_examples/config_full.example.json @@ -121,20 +121,6 @@ "outdated_offset": 5, "markets_refresh_interval": 60 }, - "edge": { - "enabled": false, - "process_throttle_secs": 3600, - "calculate_since_number_of_days": 7, - "allowed_risk": 0.01, - "stoploss_range_min": -0.01, - "stoploss_range_max": -0.1, - "stoploss_range_step": -0.01, - "minimum_winrate": 0.60, - "minimum_expectancy": 0.20, - "min_trade_number": 10, - "max_trade_duration_minute": 1440, - "remove_pumps": false - }, "telegram": { "enabled": false, "token": "your_telegram_token", diff --git a/docker/Dockerfile.armhf b/docker/Dockerfile.armhf index 9ae810a26..9ec944211 100644 --- a/docker/Dockerfile.armhf +++ b/docker/Dockerfile.armhf @@ -1,10 +1,10 @@ -FROM python:3.11.12-slim-bookworm as base +FROM python:3.11.13-slim-bookworm AS base # Setup env -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 -ENV PYTHONDONTWRITEBYTECODE 1 -ENV PYTHONFAULTHANDLER 1 +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONFAULTHANDLER=1 ENV PATH=/home/ftuser/.local/bin:$PATH ENV FT_APP_ENV="docker" @@ -22,7 +22,7 @@ RUN mkdir /freqtrade \ WORKDIR /freqtrade # Install dependencies -FROM base as python-deps +FROM base AS python-deps RUN apt-get update \ && apt-get -y install build-essential libssl-dev libffi-dev libgfortran5 pkg-config cmake gcc \ && apt-get clean \ @@ -34,14 +34,14 @@ COPY build_helpers/* /tmp/ # Install dependencies COPY --chown=ftuser:ftuser requirements.txt /freqtrade/ USER ftuser -RUN pip install --user --no-cache-dir "numpy<2" \ +RUN pip install --user --prefer-binary --no-cache-dir "numpy<3.0" build \ && pip install --user --no-index --find-links /tmp/ pyarrow TA-Lib \ && pip install --user --no-cache-dir -r requirements.txt # Copy dependencies to runtime-image -FROM base as runtime-image +FROM base AS runtime-image COPY --from=python-deps /usr/local/lib /usr/local/lib -ENV LD_LIBRARY_PATH /usr/local/lib +ENV LD_LIBRARY_PATH=/usr/local/lib COPY --from=python-deps --chown=ftuser:ftuser /home/ftuser/.local /home/ftuser/.local @@ -49,7 +49,7 @@ USER ftuser # Install and execute COPY --chown=ftuser:ftuser . /freqtrade/ -RUN pip install -e . --user --no-cache-dir --no-build-isolation\ +RUN pip install -e . --user --no-cache-dir \ && mkdir /freqtrade/user_data/ \ && freqtrade install-ui diff --git a/docker/Dockerfile.develop b/docker/Dockerfile.develop deleted file mode 100644 index 7c580f234..000000000 --- a/docker/Dockerfile.develop +++ /dev/null @@ -1,10 +0,0 @@ -FROM freqtradeorg/freqtrade:develop - -# Install dependencies -COPY requirements-dev.txt /freqtrade/ - -RUN pip install numpy --user --no-cache-dir \ - && pip install -r requirements-dev.txt --user --no-cache-dir - -# Empty the ENTRYPOINT to allow all commands -ENTRYPOINT [] diff --git a/docs/advanced-backtesting.md b/docs/advanced-backtesting.md index 40584a656..617ea7e3d 100644 --- a/docs/advanced-backtesting.md +++ b/docs/advanced-backtesting.md @@ -46,29 +46,32 @@ ranging from the simplest (0) to the most detailed per pair, per buy and per sel More options are available by running with the `-h` option. -### Using export-filename +### Using backtest-filename -Normally, `backtesting-analysis` uses the latest backtest results, but if you wanted to go -back to a previous backtest output, you need to supply the `--export-filename` option. -You can supply the same parameter to `backtest-analysis` with the name of the final backtest -output file. This allows you to keep historical versions of backtest results and re-analyse -them at a later date: +By default, `backtesting-analysis` processes the most recent backtest results in the `user_data/backtest_results` directory. +If you want to analyze results from an earlier backtest, use the `--backtest-filename` option to specify the desired file. This lets you revisit and re-analyze historical backtest outputs at any time by providing the filename of the relevant backtest result: ``` bash -freqtrade backtesting -c --timeframe --strategy --timerange= --export=signals --export-filename=/tmp/mystrat_backtest.json +freqtrade backtesting-analysis -c --timeframe --strategy --timerange --export signals --backtest-filename backtest-result-2025-03-05_20-38-34.zip ``` You should see some output similar to below in the logs with the name of the timestamped filename that was exported: ``` -2022-06-14 16:28:32,698 - freqtrade.misc - INFO - dumping json to "/tmp/mystrat_backtest-2022-06-14_16-28-32.json" +2022-06-14 16:28:32,698 - freqtrade.misc - INFO - dumping json to "mystrat_backtest-2022-06-14_16-28-32.json" ``` You can then use that filename in `backtesting-analysis`: ``` -freqtrade backtesting-analysis -c --export-filename=/tmp/mystrat_backtest-2022-06-14_16-28-32.json +freqtrade backtesting-analysis -c --backtest-filename=mystrat_backtest-2022-06-14_16-28-32.json +``` + +To use a result from a different results directory, you can use `--backtest-directory` to specify the directory + +``` bash +freqtrade backtesting-analysis -c --backtest-directory custom_results/ --backtest-filename mystrat_backtest-2022-06-14_16-28-32.json ``` ### Tuning the buy tags and sell tags to display diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index b12d8f5b6..1f727398b 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -161,56 +161,53 @@ class MyAwesomeStrategy(IStrategy): ### Overriding Base estimator -You can define your own estimator for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass. +You can define your own optuna sampler for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass. ```python class MyAwesomeStrategy(IStrategy): class HyperOpt: def generate_estimator(dimensions: List['Dimension'], **kwargs): - return "RF" + return "NSGAIIISampler" ``` -Possible values are either one of "GP", "RF", "ET", "GBRT" (Details can be found in the [scikit-optimize documentation](https://scikit-optimize.github.io/)), or "an instance of a class that inherits from `RegressorMixin` (from sklearn) and where the `predict` method has an optional `return_std` argument, which returns `std(Y | x)` along with `E[Y | x]`". +Possible values are either one of "NSGAIISampler", "TPESampler", "GPSampler", "CmaEsSampler", "NSGAIIISampler", "QMCSampler" (Details can be found in the [optuna-samplers documentation](https://optuna.readthedocs.io/en/stable/reference/samplers/index.html)), or "an instance of a class that inherits from `optuna.samplers.BaseSampler`". -Some research will be necessary to find additional Regressors. - -Example for `ExtraTreesRegressor` ("ET") with additional parameters: - -```python -class MyAwesomeStrategy(IStrategy): - class HyperOpt: - def generate_estimator(dimensions: List['Dimension'], **kwargs): - from skopt.learning import ExtraTreesRegressor - # Corresponds to "ET" - but allows additional parameters. - return ExtraTreesRegressor(n_estimators=100) - -``` - -The `dimensions` parameter is the list of `skopt.space.Dimension` objects corresponding to the parameters to be optimized. It can be used to create isotropic kernels for the `skopt.learning.GaussianProcessRegressor` estimator. Here's an example: - -```python -class MyAwesomeStrategy(IStrategy): - class HyperOpt: - def generate_estimator(dimensions: List['Dimension'], **kwargs): - from skopt.utils import cook_estimator - from skopt.learning.gaussian_process.kernels import (Matern, ConstantKernel) - kernel_bounds = (0.0001, 10000) - kernel = ( - ConstantKernel(1.0, kernel_bounds) * - Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=2.5) - ) - kernel += ( - ConstantKernel(1.0, kernel_bounds) * - Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=1.5) - ) - - return cook_estimator("GP", space=dimensions, kernel=kernel, n_restarts_optimizer=2) -``` +Some research will be necessary to find additional Samplers (from optunahub) for example. !!! Note While custom estimators can be provided, it's up to you as User to do research on possible parameters and analyze / understand which ones should be used. - If you're unsure about this, best use one of the Defaults (`"ET"` has proven to be the most versatile) without further parameters. + If you're unsure about this, best use one of the Defaults (`"NSGAIIISampler"` has proven to be the most versatile) without further parameters. + +??? Example "Using `AutoSampler` from Optunahub" + + [AutoSampler docs](https://hub.optuna.org/samplers/auto_sampler/) + + Install the necessary dependencies + ``` bash + pip install optunahub cmaes torch scipy + ``` + Implement `generate_estimator()` in your strategy + + ``` python + # ... + from freqtrade.strategy.interface import IStrategy + from typing import List + import optunahub + # ... + + class my_strategy(IStrategy): + class HyperOpt: + def generate_estimator(dimensions: List["Dimension"], **kwargs): + if "random_state" in kwargs.keys(): + return optunahub.load_module("samplers/auto_sampler").AutoSampler(seed=kwargs["random_state"]) + else: + return optunahub.load_module("samplers/auto_sampler").AutoSampler() + + ``` + + Obviously the same approach will work for all other Samplers optuna supports. + ## Space options diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index ec25cb616..88afbef94 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -189,13 +189,15 @@ as the watchdog. ## Advanced Logging Freqtrade uses the default logging module provided by python. -Python allows for extensive [logging configuration](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) in this regards - way more than what can be covered here. +Python allows for extensive [logging configuration](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) in this regard - way more than what can be covered here. -Default logging (Colored terminal output) is setup by default if no `log_config` is provided. +Default logging format (coloured terminal output) is set up by default if no `log_config` is provided in your freqtrade configuration. Using `--logfile logfile.log` will enable the RotatingFileHandler. -If you're not content with the log format - or with the default settings provided for the RotatingFileHandler, you can customize logging to your liking. -The default configuration looks roughly like the below - with the file handler being provided - but not enabled. +If you're not content with the log format, or with the default settings provided for the RotatingFileHandler, you can customize logging to your liking by adding the `log_config` configuration to your freqtrade configuration file(s). + +The default configuration looks roughly like the below, with the file handler being provided but not enabled as the `filename` is commented out. +Uncomment this line and supply a valid path/filename to enable it. ``` json hl_lines="5-7 13-16 27" { @@ -237,12 +239,12 @@ The default configuration looks roughly like the below - with the file handler b Highlighted lines in the above code-block define the Rich handler and belong together. The formatter "standard" and "file" will belong to the FileHandler. -Each handler must use one of the defined formatters (by name) - and it's class must be available and a valid logging class. -To actually use a handler - it must be in the "handlers" section inside the "root" segment. +Each handler must use one of the defined formatters (by name), its class must be available, and must be a valid logging class. +To actually use a handler, it must be in the "handlers" section inside the "root" segment. If this section is left out, freqtrade will provide no output (in the non-configured handler, anyway). !!! Tip "Explicit log configuration" - We recommend to extract the logging configuration from your main configuration, and provide it to your bot via [multiple configuration files](configuration.md#multiple-configuration-files) functionality. This will avoid unnecessary code duplication. + We recommend to extract the logging configuration from your main freqtrade configuration file, and provide it to your bot via [multiple configuration files](configuration.md#multiple-configuration-files) functionality. This will avoid unnecessary code duplication. --- @@ -313,7 +315,6 @@ $RepeatedMsgReduction on The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character. - So, the following are the examples of possible addresses: * `"address": "/dev/log"` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. @@ -321,20 +322,18 @@ So, the following are the examples of possible addresses: * `"address": "localhost:514"` -- log to local syslog using UDP socket, if it listens on port 514. * `"address": ":514"` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. - ??? Info "Deprecated - configure syslog via command line" + `--logfile syslog:` -- send log messages to `syslog` service using the `` as the syslog address. - `--logfile syslog:` -- send log messages to `syslog` service using the `` as the syslog address. + The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character. - The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character. + So, the following are the examples of possible usages: - So, the following are the examples of possible usages: - - * `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. - * `--logfile syslog` -- same as above, the shortcut for `/dev/log`. - * `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. - * `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. - * `--logfile syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. + * `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. + * `--logfile syslog` -- same as above, the shortcut for `/dev/log`. + * `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. + * `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. + * `--logfile syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. ### Logging to journald diff --git a/docs/assets/freqUI-chart-annotations-dark.png b/docs/assets/freqUI-chart-annotations-dark.png new file mode 100644 index 000000000..9f7de269b Binary files /dev/null and b/docs/assets/freqUI-chart-annotations-dark.png differ diff --git a/docs/assets/freqUI-chart-annotations-light.png b/docs/assets/freqUI-chart-annotations-light.png new file mode 100644 index 000000000..ccc219647 Binary files /dev/null and b/docs/assets/freqUI-chart-annotations-light.png differ diff --git a/docs/backtesting.md b/docs/backtesting.md index 4d91b3ca6..5e9d285e1 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -5,6 +5,8 @@ This page explains how to validate your strategy performance by using Backtestin Backtesting requires historic data to be available. To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation. +Backtesting is also available in [webserver mode](freq-ui.md#backtesting), which allows you to run backtests via the web interface. + ## Backtesting command reference --8<-- "commands/backtesting.md" @@ -103,12 +105,14 @@ Only use this if you're sure you'll not want to plot or analyze your results fur --- -Exporting trades to file specifying a custom filename +Exporting trades to file specifying a custom directory ```bash -freqtrade backtesting --strategy backtesting --export trades --export-filename=backtest_samplestrategy.json +freqtrade backtesting --strategy backtesting --export trades --backtest-directory=user_data/custom-backtest-results ``` +--- + Please also read about the [strategy startup period](strategy-customization.md#strategy-startup-period). --- @@ -319,6 +323,7 @@ It contains some useful key metrics about performance of your strategy on backte | SQN | 2.45 | | Profit factor | 1.11 | | Expectancy (Ratio) | -0.15 (-0.05) | +| Avg. daily profit | 0.0001 BTC | | Avg. stake amount | 0.001 BTC | | Total trade volume | 0.429 BTC | | | | @@ -372,9 +377,11 @@ It contains some useful key metrics about performance of your strategy on backte - `Calmar`: Annualized Calmar ratio. - `SQN`: System Quality Number (SQN) - by Van Tharp. - `Profit factor`: profit / loss. +- `Expectancy (Ratio)`: Expectancy ratio, which is the average profit or loss per trade. A negative expectancy ratio means that your strategy is not profitable. +- `Avg. daily profit`: Average profit per day, calculated as `(Total Profit / Backtest Days)`. - `Avg. stake amount`: Average stake amount, either `stake_amount` or the average when using dynamic stake amount. - `Total trade volume`: Volume generated on the exchange to reach the above profit. -- `Best Pair` / `Worst Pair`: Best and worst performing pair, and it's corresponding `Tot Profit %`. +- `Best Pair` / `Worst Pair`: Best and worst performing pair (based on absolute profit), and it's corresponding `Tot Profit %`. - `Best Trade` / `Worst Trade`: Biggest single winning trade and biggest single losing trade. - `Best day` / `Worst day`: Best and worst day based on daily profit. - `Days win/draw/lose`: Winning / Losing days (draws are usually days without closed trade). @@ -435,6 +442,10 @@ To save time, by default backtest will reuse a cached result from within the las To further analyze your backtest results, freqtrade will export the trades to file by default. You can then load the trades to perform further analysis as shown in the [data analysis](strategy_analysis_example.md#load-backtest-results-to-pandas-dataframe) backtesting section. +Also, you can use freqtrade in [webserver mode](freq-ui.md#backtesting) to visualize the backtest results in a web interface. +This mode also allows you to load existing backtest results, so you can analyze them without running the backtest again. +For this mode - `--notes ""` can be used to add notes to the backtest results, which will be shown in the web interface. + ### Backtest output file The output file freqtrade produces is a zip file containing the following files: diff --git a/docs/commands/backtesting-analysis.md b/docs/commands/backtesting-analysis.md index 50707d03a..826792f4f 100644 --- a/docs/commands/backtesting-analysis.md +++ b/docs/commands/backtesting-analysis.md @@ -2,7 +2,8 @@ usage: freqtrade backtesting-analysis [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] - [--export-filename PATH] + [--backtest-filename PATH] + [--backtest-directory PATH] [--analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...]] [--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]] [--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]] @@ -14,10 +15,15 @@ usage: freqtrade backtesting-analysis [-h] [-v] [--no-color] [--logfile FILE] options: -h, --help show this help message and exit - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. + --backtest-directory PATH, --export-directory PATH + Directory to use for backtest results. Example: + `--export-directory=user_data/backtest_results/`. --analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...] grouping output - 0: simple wins/losses by enter tag, 1: by enter_tag, 2: by enter_tag and exit_tag, 3: by @@ -59,7 +65,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/backtesting-show.md b/docs/commands/backtesting-show.md index a1b146a82..eb9c7137b 100644 --- a/docs/commands/backtesting-show.md +++ b/docs/commands/backtesting-show.md @@ -1,15 +1,22 @@ ``` usage: freqtrade backtesting-show [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] - [--export-filename PATH] [--show-pair-list] + [--backtest-filename PATH] + [--backtest-directory PATH] + [--show-pair-list] [--breakdown {day,week,month,year} [{day,week,month,year} ...]] options: -h, --help show this help message and exit - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. + --backtest-directory PATH, --export-directory PATH + Directory to use for backtest results. Example: + `--export-directory=user_data/backtest_results/`. --show-pair-list Show backtesting pairlist sorted by profit. --breakdown {day,week,month,year} [{day,week,month,year} ...] Show backtesting breakdown per [day, week, month, @@ -30,7 +37,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/backtesting.md b/docs/commands/backtesting.md index 395ab4b00..7082fb362 100644 --- a/docs/commands/backtesting.md +++ b/docs/commands/backtesting.md @@ -14,10 +14,11 @@ usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V] [--timeframe-detail TIMEFRAME_DETAIL] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] [--export {none,trades,signals}] - [--export-filename PATH] + [--backtest-filename PATH] + [--backtest-directory PATH] [--breakdown {day,week,month,year} [{day,week,month,year} ...]] [--cache {none,day,week,month}] - [--freqai-backtest-live-models] + [--freqai-backtest-live-models] [--notes TEXT] options: -h, --help show this help message and exit @@ -61,10 +62,15 @@ options: becomes `backtest-data-SampleStrategy.json` --export {none,trades,signals} Export backtest results (default: trades). - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. + --backtest-directory PATH, --export-directory PATH + Directory to use for backtest results. Example: + `--export-directory=user_data/backtest_results/`. --breakdown {day,week,month,year} [{day,week,month,year} ...] Show backtesting breakdown per [day, week, month, year]. @@ -73,6 +79,7 @@ options: age (default: day). --freqai-backtest-live-models Run backtest with ready models. + --notes TEXT Add notes to the backtest results. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -89,7 +96,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/convert-data.md b/docs/commands/convert-data.md index 3bd0fa45b..32996eba3 100644 --- a/docs/commands/convert-data.md +++ b/docs/commands/convert-data.md @@ -45,7 +45,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/convert-trade-data.md b/docs/commands/convert-trade-data.md index 25843a8da..cf53e5329 100644 --- a/docs/commands/convert-trade-data.md +++ b/docs/commands/convert-trade-data.md @@ -34,7 +34,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/download-data.md b/docs/commands/download-data.md index e70ae9a23..ce80e704e 100644 --- a/docs/commands/download-data.md +++ b/docs/commands/download-data.md @@ -63,7 +63,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/edge.md b/docs/commands/edge.md index 06f883230..9e5f95ed3 100644 --- a/docs/commands/edge.md +++ b/docs/commands/edge.md @@ -7,7 +7,6 @@ usage: freqtrade edge [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH] [--data-format-ohlcv {json,jsongz,feather,parquet}] [--max-open-trades INT] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [-p PAIRS [PAIRS ...]] - [--stoplosses STOPLOSS_RANGE] options: -h, --help show this help message and exit @@ -29,11 +28,6 @@ options: -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] Limit command to these pairs. Pairs are space- separated. - --stoplosses STOPLOSS_RANGE - Defines a range of stoploss values against which edge - will assess the strategy. The format is "min,max,step" - (without any space). Example: - `--stoplosses=-0.01,-0.1,-0.001` Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -50,7 +44,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/hyperopt-list.md b/docs/commands/hyperopt-list.md index 5e8398f51..8457aba27 100644 --- a/docs/commands/hyperopt-list.md +++ b/docs/commands/hyperopt-list.md @@ -55,7 +55,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/hyperopt-show.md b/docs/commands/hyperopt-show.md index 14d6516e9..5cd114c17 100644 --- a/docs/commands/hyperopt-show.md +++ b/docs/commands/hyperopt-show.md @@ -37,7 +37,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/hyperopt.md b/docs/commands/hyperopt.md index 28ad45dd2..f1c8b28b5 100644 --- a/docs/commands/hyperopt.md +++ b/docs/commands/hyperopt.md @@ -16,6 +16,7 @@ usage: freqtrade hyperopt [-h] [-v] [--no-color] [--logfile FILE] [-V] [--random-state INT] [--min-trades INT] [--hyperopt-loss NAME] [--disable-param-export] [--ignore-missing-spaces] [--analyze-per-epoch] + [--early-stop INT] options: -h, --help show this help message and exit @@ -87,6 +88,8 @@ options: Suppress errors for any requested Hyperopt spaces that do not contain any parameters. --analyze-per-epoch Run populate_indicators once per epoch. + --early-stop INT Early stop hyperopt if no improvement after (default: + 0) epochs. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -103,7 +106,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-data.md b/docs/commands/list-data.md index c6e8cc94e..515207178 100644 --- a/docs/commands/list-data.md +++ b/docs/commands/list-data.md @@ -41,7 +41,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-exchanges.md b/docs/commands/list-exchanges.md index c95ae3ebd..a5a249cd9 100644 --- a/docs/commands/list-exchanges.md +++ b/docs/commands/list-exchanges.md @@ -1,11 +1,16 @@ ``` usage: freqtrade list-exchanges [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-1] [-a] + [--trading-mode {spot,margin,futures}] + [--dex-exchanges] options: -h, --help show this help message and exit -1, --one-column Print output in one column. -a, --all Print all exchanges known to the ccxt library. + --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures} + Select Trading mode + --dex-exchanges Print only DEX exchanges. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -22,7 +27,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-freqaimodels.md b/docs/commands/list-freqaimodels.md index 3e66880ab..c4a588eba 100644 --- a/docs/commands/list-freqaimodels.md +++ b/docs/commands/list-freqaimodels.md @@ -24,7 +24,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-hyperoptloss.md b/docs/commands/list-hyperoptloss.md index 1a1604b0f..2762c3fe7 100644 --- a/docs/commands/list-hyperoptloss.md +++ b/docs/commands/list-hyperoptloss.md @@ -24,7 +24,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-markets.md b/docs/commands/list-markets.md index d33b9c5d1..d2233e1da 100644 --- a/docs/commands/list-markets.md +++ b/docs/commands/list-markets.md @@ -39,7 +39,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-pairs.md b/docs/commands/list-pairs.md index 3d8e677ee..3f991e414 100644 --- a/docs/commands/list-pairs.md +++ b/docs/commands/list-pairs.md @@ -39,7 +39,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-strategies.md b/docs/commands/list-strategies.md index af5771860..95f79e175 100644 --- a/docs/commands/list-strategies.md +++ b/docs/commands/list-strategies.md @@ -27,7 +27,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/list-timeframes.md b/docs/commands/list-timeframes.md index 8dc10a789..bcd45b151 100644 --- a/docs/commands/list-timeframes.md +++ b/docs/commands/list-timeframes.md @@ -23,7 +23,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/lookahead-analysis.md b/docs/commands/lookahead-analysis.md index bb7ef5d8e..880c41ce1 100644 --- a/docs/commands/lookahead-analysis.md +++ b/docs/commands/lookahead-analysis.md @@ -15,7 +15,8 @@ usage: freqtrade lookahead-analysis [-h] [-v] [--no-color] [--logfile FILE] [--timeframe-detail TIMEFRAME_DETAIL] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] [--export {none,trades,signals}] - [--export-filename PATH] + [--backtest-filename PATH] + [--backtest-directory PATH] [--freqai-backtest-live-models] [--minimum-trade-amount INT] [--targeted-trade-amount INT] @@ -60,10 +61,15 @@ options: becomes `backtest-data-SampleStrategy.json` --export {none,trades,signals} Export backtest results (default: trades). - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. + --backtest-directory PATH, --export-directory PATH + Directory to use for backtest results. Example: + `--export-directory=user_data/backtest_results/`. --freqai-backtest-live-models Run backtest with ready models. --minimum-trade-amount INT @@ -89,7 +95,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/main.md b/docs/commands/main.md index c84f4854e..673281da4 100644 --- a/docs/commands/main.md +++ b/docs/commands/main.md @@ -22,7 +22,7 @@ positional arguments: backtesting-show Show past Backtest results backtesting-analysis Backtest Analysis module. - edge Edge module. + edge Edge module. No longer part of Freqtrade hyperopt Hyperopt module. hyperopt-list List Hyperopt results hyperopt-show Show details of Hyperopt results diff --git a/docs/commands/plot-dataframe.md b/docs/commands/plot-dataframe.md index 81ecc0da7..a709858f3 100644 --- a/docs/commands/plot-dataframe.md +++ b/docs/commands/plot-dataframe.md @@ -10,7 +10,7 @@ usage: freqtrade plot-dataframe [-h] [-v] [--no-color] [--logfile FILE] [-V] [--plot-limit INT] [--db-url PATH] [--trade-source {DB,file}] [--export {none,trades,signals}] - [--export-filename PATH] + [--backtest-filename PATH] [--timerange TIMERANGE] [-i TIMEFRAME] [--no-trades] @@ -38,10 +38,12 @@ options: (backtest file)) Default: file --export {none,trades,signals} Export backtest results (default: trades). - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. --timerange TIMERANGE Specify what timerange of data to use. -i TIMEFRAME, --timeframe TIMEFRAME @@ -63,7 +65,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/plot-profit.md b/docs/commands/plot-profit.md index 207697a93..e46e4b223 100644 --- a/docs/commands/plot-profit.md +++ b/docs/commands/plot-profit.md @@ -6,7 +6,7 @@ usage: freqtrade plot-profit [-h] [-v] [--no-color] [--logfile FILE] [-V] [--freqaimodel NAME] [--freqaimodel-path PATH] [-p PAIRS [PAIRS ...]] [--timerange TIMERANGE] [--export {none,trades,signals}] - [--export-filename PATH] [--db-url PATH] + [--backtest-filename PATH] [--db-url PATH] [--trade-source {DB,file}] [-i TIMEFRAME] [--auto-open] @@ -19,10 +19,12 @@ options: Specify what timerange of data to use. --export {none,trades,signals} Export backtest results (default: trades). - --export-filename PATH, --backtest-filename PATH - Use this filename for backtest results.Requires - `--export` to be set as well. Example: `--export-filen - ame=user_data/backtest_results/backtest_today.json` + --backtest-filename PATH, --export-filename PATH + Use this filename for backtest results.Example: + `--backtest- + filename=backtest_results_2020-09-27_16-20-48.json`. + Assumes either `user_data/backtest_results/` or + `--export-directory` as base directory. --db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite` for Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for @@ -49,7 +51,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/recursive-analysis.md b/docs/commands/recursive-analysis.md index b39e8fb35..39b4fc3da 100644 --- a/docs/commands/recursive-analysis.md +++ b/docs/commands/recursive-analysis.md @@ -41,7 +41,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/show-trades.md b/docs/commands/show-trades.md index 316d47448..6ac64cae7 100644 --- a/docs/commands/show-trades.md +++ b/docs/commands/show-trades.md @@ -30,7 +30,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/strategy-updater.md b/docs/commands/strategy-updater.md index ba40322ec..c2804fee2 100644 --- a/docs/commands/strategy-updater.md +++ b/docs/commands/strategy-updater.md @@ -34,7 +34,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/trade.md b/docs/commands/trade.md index b689902c2..0189669c0 100644 --- a/docs/commands/trade.md +++ b/docs/commands/trade.md @@ -36,7 +36,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/trades-to-ohlcv.md b/docs/commands/trades-to-ohlcv.md index c2d42a5cc..748a8ace5 100644 --- a/docs/commands/trades-to-ohlcv.md +++ b/docs/commands/trades-to-ohlcv.md @@ -41,7 +41,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/commands/webserver.md b/docs/commands/webserver.md index a99b83e97..1ac7bd13b 100644 --- a/docs/commands/webserver.md +++ b/docs/commands/webserver.md @@ -20,7 +20,9 @@ Common arguments: exists). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH, --data-dir PATH - Path to directory with historical backtesting data. + Path to the base directory of the exchange with + historical backtesting data. To see futures data, use + trading-mode additionally. --userdir PATH, --user-data-dir PATH Path to userdata directory. diff --git a/docs/configuration.md b/docs/configuration.md index 8c122b9b7..51c717da2 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -180,7 +180,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to exit a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
**Datatype:** Dict | `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
**Datatype:** Float (as ratio) | `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md#trailing-stop-loss). [Strategy Override](#parameters-in-the-strategy).
**Datatype:** Boolean -| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy).
**Datatype:** Float +| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-different-positive-loss). [Strategy Override](#parameters-in-the-strategy).
**Datatype:** Float | `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy).
*Defaults to `0.0` (no offset).*
**Datatype:** Float | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
*Defaults to `false`.*
**Datatype:** Boolean | `fee` | Fee used during backtesting / dry-runs. Should normally not be configured, which has freqtrade fall back to the exchange default fee. Set as ratio (e.g. 0.001 = 0.1%). Fee is applied twice for each trade, once when buying, once when selling.
**Datatype:** Float (as ratio) @@ -234,7 +234,6 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.only_from_ccxt` | Prevent data-download from data.binance.vision. Leaving this as false can greatly speed up downloads, but may be problematic if the site is not available.
*Defaults to `false`*
**Datatype:** Boolean | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
*Defaults to `true`.*
**Datatype:** Boolean | | **Plugins** -| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation of all possible configuration options. | `pairlists` | Define one or more pairlists to be used. [More information](plugins.md#pairlists-and-pairlist-handlers).
*Defaults to `StaticPairList`.*
**Datatype:** List of Dicts | | **Telegram** | `telegram.enabled` | Enable the usage of Telegram.
**Datatype:** Boolean @@ -567,8 +566,8 @@ Configuration: ### Understand order_time_in_force -The `order_time_in_force` configuration parameter defines the policy by which the order -is executed on the exchange. Three commonly used time in force are: +The `order_time_in_force` configuration parameter defines the policy by which the order is executed on the exchange. +Commonly used time in force are: **GTC (Good Till Canceled):** @@ -590,11 +589,13 @@ is automatically cancelled by the exchange. Post only order. The order is either placed as a maker order, or it is canceled. This means the order must be placed on orderbook for at least time in an unfilled state. +Please check the [Exchange documentation](exchanges.md) for supported time in force values for your exchange. + #### time_in_force config The `order_time_in_force` parameter contains a dict with entry and exit time in force policy values. This can be set in the configuration file or in the strategy. -Values set in the configuration file overwrites values set in the strategy. +Values set in the configuration file overwrite values from in the strategy, following the regular [precedence rules](#configuration-option-prevalence). The possible values are: `GTC` (default), `FOK` or `IOC`. @@ -606,9 +607,9 @@ The possible values are: `GTC` (default), `FOK` or `IOC`. ``` !!! Warning - This is ongoing work. For now, it is supported only for binance, gate and kucoin. Please don't change the default value unless you know what you are doing and have researched the impact of using different values for your particular exchange. + ### Fiat conversion Freqtrade uses the Coingecko API to convert the coin value to it's corresponding fiat value for the Telegram reports. @@ -672,7 +673,7 @@ Should you experience problems you suspect are caused by websockets, you can dis } ``` -Should you be required to use a proxy, please refer to the [proxy section](#using-proxy-with-freqtrade) for more information. +Should you be required to use a proxy, please refer to the [proxy section](#using-a-proxy-with-freqtrade) for more information. !!! Info "Rollout" We're implementing this out slowly, ensuring stability of your bots. diff --git a/docs/deprecated.md b/docs/deprecated.md index 2e76f2413..f6ef8768f 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -93,3 +93,8 @@ Please use the [`convert-data` subcommand](data-download.md#sub-command-convert- Configuring syslog and journald via `--logfile systemd` and `--logfile journald` respectively has been deprecated in 2025.3. Please use configuration based [log setup](advanced-setup.md#advanced-logging) instead. + +## Removal of the edge module + +The edge module has been deprecated in 2023.9 and removed in 2025.6. +All functionalities of edge have been removed, and having edge configured will result in an error. diff --git a/docs/developer.md b/docs/developer.md index d66f615fd..b0cf21398 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -304,6 +304,13 @@ The `IProtection` parent class provides a helper method for this in `calculate_l Most exchanges supported by CCXT should work out of the box. +If you need to implement a specific exchange class, these are found in the `freqtrade/exchange` source folder. You'll also need to add the import to `freqtrade/exchange/__init__.py` to make the loading logic aware of the new exchange. +We recommend looking at existing exchange implementations to get an idea of what might be required. + +!!! Warning + Implementing and testing an exchange can be a lot of trial and error, so please bear this in mind. + You should also have some development experience, as this is not a beginner task. + To quickly test the public endpoints of an exchange, add a configuration for your exchange to `tests/exchange_online/conftest.py` and run these tests with `pytest --longrun tests/exchange_online/test_ccxt_compat.py`. Completing these tests successfully a good basis point (it's a requirement, actually), however these won't guarantee correct exchange functioning, as this only tests public endpoints, but no private endpoint (like generate order or similar). diff --git a/docs/edge.md b/docs/edge.md deleted file mode 100644 index e48fe592a..000000000 --- a/docs/edge.md +++ /dev/null @@ -1,300 +0,0 @@ -# Edge positioning - -The `Edge Positioning` module uses probability to calculate your win rate and risk reward ratio. It will use these statistics to control your strategy trade entry points, position size and, stoploss. - -!!! Danger "Deprecated functionality" - `Edge positioning` (or short Edge) is currently in maintenance mode only (we keep existing functionality alive) and should be considered as deprecated. - It will currently not receive new features until either someone stepped forward to take up ownership of that module - or we'll decide to remove edge from freqtrade. - -!!! Warning - When using `Edge positioning` with a dynamic whitelist (VolumePairList), make sure to also use `AgeFilter` and set it to at least `calculate_since_number_of_days` to avoid problems with missing data. - -!!! Note - `Edge Positioning` only considers *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file. - `Edge Positioning` improves the performance of some trading strategies and *decreases* the performance of others. - - -## Introduction - -Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose. - -To obtain an edge in the market, a strategy has to make more money than it loses. Making money in trading is not only about *how often* the strategy makes or loses money. - -!!! tip "It doesn't matter how often, but how much!" - A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit. - -The Edge Positioning module seeks to improve a strategy's winning probability and the money that the strategy will make *on the long run*. - -We raise the following question[^1]: - -!!! Question "Which trade is a better option?" - a) A trade with 80% of chance of losing 100\$ and 20% chance of winning 200\$
- b) A trade with 100% of chance of losing 30\$ - -???+ Info "Answer" - The expected value of *a)* is smaller than the expected value of *b)*.
- Hence, *b*) represents a smaller loss in the long run.
- However, the answer is: *it depends* - -Another way to look at it is to ask a similar question: - -!!! Question "Which trade is a better option?" - a) A trade with 80% of chance of winning 100\$ and 20% chance of losing 200\$
- b) A trade with 100% of chance of winning 30\$ - -Edge positioning tries to answer the hard questions about risk/reward and position size automatically, seeking to minimizes the chances of losing of a given strategy. - -### Trading, winning and losing - -Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session. - -!!! Example - In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o_3 = 15$. - -A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows: - -$$ T_{win} = \{ o \in O | o > 0 \} $$ - -Similarly, we can discover the set of losing trades $T_{lose}$ as follows: - -$$ T_{lose} = \{o \in O | o \leq 0\} $$ - -!!! Example - In a section where a strategy made four transactions $O = \{3.5, -1, 15, 0\}$:
- $T_{win} = \{3.5, 15\}$
- $T_{lose} = \{-1, 0\}$
- -### Win Rate and Lose Rate - -The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate: - -$$W = \frac{|T_{win}|}{N}$$ - -Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money. - -Similarly, we can compute the rate of losing trades: - -$$ - L = \frac{|T_{lose}|}{N} -$$ - -Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 – W$ or $W = 1 – L$ - -### Risk Reward Ratio - -Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally: - -$$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ - -???+ Example "Worked example of $R$ calculation" - Let's say that you think that the price of *stonecoin* today is 10.0\$. You believe that, because they will start mining stonecoin, it will go up to 15.0\$ tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to 0\$ tomorrow. You are planning to invest 100\$, which will give you 10 shares (100 / 10). - - Your potential profit is calculated as: - - $\begin{aligned} - \text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \frac{\text{investment}}{\text{entry_price}} \\ - &= (15 - 10) * (100 / 10) \\ - &= 50 - \end{aligned}$ - - Since the price might go to 0\$, the 100\$ dollars invested could turn into 0. - - We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$\). - - $\begin{aligned} - \text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \frac{\text{investment}}{\text{entry_price}} \\ - &= (10 - 8.5) * (100 / 10)\\ - &= 15 - \end{aligned}$ - - We can compute the Risk Reward Ratio as follows: - - $\begin{aligned} - R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\ - &= \frac{50}{15}\\ - &= 3.33 - \end{aligned}$
- What it effectively means is that the strategy have the potential to make 3.33\$ for each 1\$ invested. - -On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: - -$$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$ - -Similarly, we can calculate the average loss, $\mu_{lose}$, as follows: - -$$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$ - -Finally, we can calculate the Risk Reward ratio, $R$, as follows: - -$$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$ - - -???+ Example "Worked example of $R$ calculation using mean profit/loss" - Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.
- We calculate the risk reward ratio as follows:
- $R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$ - - -### Expectancy - -By combining the Win Rate $W$ and the Risk Reward ratio $R$ to create an expectancy ratio $E$. A expectance ratio is the expected return of the investment made in a trade. We can compute the value of $E$ as follows: - -$$E = R * W - L$$ - -!!! Example "Calculating $E$" - Let's say that a strategy has a win rate $W = 0.28$ and a risk reward ratio $R = 5$. What this means is that the strategy is expected to make 5 times the investment around on 28% of the trades it makes. Working out the example:
- $E = R * W - L = 5 * 0.28 - 0.72 = 0.68$ -
- -The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes 1.68\$ for every 1\$ it loses, on average. - -This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. - -It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future. - -You can also use this value to evaluate the effectiveness of modifications to this system. - -!!! Note - It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. - -## How does it work? - -Edge combines dynamic stoploss, dynamic positions, and whitelist generation into one isolated module which is then applied to the trading strategy. If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example: - -| Pair | Stoploss | Win Rate | Risk Reward Ratio | Expectancy | -|----------|:-------------:|-------------:|------------------:|-----------:| -| XZC/ETH | -0.01 | 0.50 |1.176384 | 0.088 | -| XZC/ETH | -0.02 | 0.51 |1.115941 | 0.079 | -| XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 | -| XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 | - -The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3%$ leads to the maximum expectancy according to historical data. - -Edge module then forces stoploss value it evaluated to your strategy dynamically. - -### Position size - -Edge dictates the amount at stake for each trade to the bot according to the following factors: - -- Allowed capital at risk -- Stoploss - -Allowed capital at risk is calculated as follows: - -``` -Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade) -``` - -Stoploss is calculated as described above with respect to historical data. - -The position size is calculated as follows: - -``` -Position size = (Allowed capital at risk) / Stoploss -``` - -Example: - -Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet. The capital available percentage is $50%$ and the allowed risk per trade is $1\%$. Thus, the available capital for trading is $10 * 0.5 = 5$ **ETH** and the allowed capital at risk would be $5 * 0.01 = 0.05$ **ETH**. - -- **Trade 1:** The strategy detects a new buy signal in the **XLM/ETH** market. `Edge Positioning` calculates a stoploss of $2\%$ and a position of $0.05 / 0.02 = 2.5$ **ETH**. The bot takes a position of $2.5$ **ETH** in the **XLM/ETH** market. - -- **Trade 2:** The strategy detects a buy signal on the **BTC/ETH** market while **Trade 1** is still open. `Edge Positioning` calculates the stoploss of $4\%$ on this market. Thus, **Trade 2** position size is $0.05 / 0.04 = 1.25$ **ETH**. - -!!! Tip "Available Capital $\neq$ Available in wallet" - The available capital for trading didn't change in **Trade 2** even with **Trade 1** still open. The available capital **is not** the free amount in the wallet. - -- **Trade 3:** The strategy detects a buy signal in the **ADA/ETH** market. `Edge Positioning` calculates a stoploss of $1\%$ and a position of $0.05 / 0.01 = 5$ **ETH**. Since **Trade 1** has $2.5$ **ETH** blocked and **Trade 2** has $1.25$ **ETH** blocked, there is only $5 - 1.25 - 2.5 = 1.25$ **ETH** available. Hence, the position size of **Trade 3** is $1.25$ **ETH**. - -!!! Tip "Available Capital Updates" - The available capital does not change before a position is sold. After a trade is closed the Available Capital goes up if the trade was profitable or goes down if the trade was a loss. - -- The strategy detects a sell signal in the **XLM/ETH** market. The bot exits **Trade 1** for a profit of $1$ **ETH**. The total capital in the wallet becomes $11$ **ETH** and the available capital for trading becomes $5.5$ **ETH**. - -- **Trade 4** The strategy detects a new buy signal int the **XLM/ETH** market. `Edge Positioning` calculates the stoploss of $2\%$, and the position size of $0.055 / 0.02 = 2.75$ **ETH**. - -## Edge command reference - ---8<-- "commands/edge.md" - -## Configurations - -Edge module has following configuration options: - -| Parameter | Description | -|------------|-------------| -| `enabled` | If true, then Edge will run periodically.
*Defaults to `false`.*
**Datatype:** Boolean -| `process_throttle_secs` | How often should Edge run in seconds.
*Defaults to `3600` (once per hour).*
**Datatype:** Integer -| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
**Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
*Defaults to `7`.*
**Datatype:** Integer -| `allowed_risk` | Ratio of allowed risk per trade.
*Defaults to `0.01` (1%)).*
**Datatype:** Float -| `stoploss_range_min` | Minimum stoploss.
*Defaults to `-0.01`.*
**Datatype:** Float -| `stoploss_range_max` | Maximum stoploss.
*Defaults to `-0.10`.*
**Datatype:** Float -| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges.
**Note** than having a smaller step means having a bigger range which could lead to slow calculation.
If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10.
*Defaults to `-0.001`.*
**Datatype:** Float -| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
*Defaults to `0.60`.*
**Datatype:** Float -| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
Having an expectancy of 0.20 means if you put 10\$ on a trade you expect a 12\$ return.
*Defaults to `0.20`.*
**Datatype:** Float -| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
*Defaults to `10` (it is highly recommended not to decrease this number).*
**Datatype:** Integer -| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
**NOTICE:** While configuring this value, you should take into consideration your timeframe. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
*Defaults to `1440` (one day).*
**Datatype:** Integer -| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
*Defaults to `false`.*
**Datatype:** Boolean - -## Running Edge independently - -You can run Edge independently in order to see in details the result. Here is an example: - -``` bash -freqtrade edge -``` - -An example of its output: - -| **pair** | **stoploss** | **win rate** | **risk reward ratio** | **required risk reward** | **expectancy** | **total number of trades** | **average duration (min)** | -|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-----------------:|---------------:| -| **AGI/BTC** | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 | -| **NXS/BTC** | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 | -| **LEND/BTC** | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 | -| **VIA/BTC** | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 | -| **MTH/BTC** | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 | -| **ARDR/BTC** | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 | -| **BCPT/BTC** | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 | -| **WINGS/BTC** | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 | -| **VIBE/BTC** | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 | -| **MCO/BTC** | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 | -| **GNT/BTC** | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 | -| **HOT/BTC** | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 | -| **SNM/BTC** | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 | -| **APPC/BTC** | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 | -| **NEBL/BTC** | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 | - -Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch. - -In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare. - -If you encounter "whitelist empty" a lot, condsider tuning `calculate_since_number_of_days`, `minimum_expectancy` and `min_trade_number` to align to the trading frequency of your strategy. - -### Update cached pairs with the latest data - -Edge requires historic data the same way as backtesting does. -Please refer to the [Data Downloading](data-download.md) section of the documentation for details. - -### Precising stoploss range - -```bash -freqtrade edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step -``` - -### Advanced use of timerange - -```bash -freqtrade edge --timerange=20181110-20181113 -``` - -Doing `--timerange=-20190901` will get all available data until September 1st (excluding September 1st 2019). - -The full timerange specification: - -* Use tickframes till 2018/01/31: `--timerange=-20180131` -* Use tickframes since 2018/01/31: `--timerange=20180131-` -* Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301` -* Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600` - - -[^1]: Question extracted from MIT Opencourseware S096 - Mathematics with applications in Finance: https://ocw.mit.edu/courses/mathematics/18-s096-topics-in-mathematics-with-applications-in-finance-fall-2013/ diff --git a/docs/exchanges.md b/docs/exchanges.md index f058ed86e..8d6b96405 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -227,7 +227,7 @@ Kucoin requires a passphrase for each api key, you will therefore need to add th } ``` -Kucoin supports [time_in_force](configuration.md#understand-order_time_in_force). +Kucoin supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), "FOK" (full-or-cancel) and "IOC" (immediate-or-cancel) settings. !!! Tip "Stoploss on Exchange" Kucoin supports `stoploss_on_exchange` and can use both stop-loss-market and stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it. @@ -271,7 +271,9 @@ Using the wrong exchange will result in the error "OKX Error 50119: API key does ## Gate.io !!! Tip "Stoploss on Exchange" - Gate.io supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange.. + Gate.io supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange. + +Gate.io supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), and "IOC" (immediate-or-cancel) settings. Gate.io allows the use of `POINT` to pay for fees. As this is not a tradable currency (no regular market available), automatic fee calculations will fail (and default to a fee of 0). The configuration parameter `exchange.unknown_fee_rate` can be used to specify the exchange rate between Point and the stake currency. Obviously, changing the stake-currency will also require changes to this value. @@ -286,9 +288,15 @@ Without these permissions, the bot will not start correctly and show errors like ## Bybit -Futures trading on bybit is currently supported for USDT markets, and will use isolated futures mode. +!!! Tip "Stoploss on Exchange" + Bybit (futures only) supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange. + On futures, Bybit supports both `stop-limit` as well as `stop-market` orders. You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use. -On startup, freqtrade will set the position mode to "One-way Mode" for the whole (sub)account. This avoids making this call over and over again (slowing down bot operations), but means that changes to this setting may result in exceptions and errors. +Bybit supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), "FOK" (full-or-cancel), "IOC" (immediate-or-cancel) and "PO" (Post only) settings. + +Futures trading on bybit is currently supported for isolated futures mode. + +On startup, freqtrade will set the position mode to "One-way Mode" for the whole (sub)account. This avoids making this call over and over again (slowing down bot operations), but means that manual changes to this setting may result in exceptions and errors. As bybit doesn't provide funding rate history, the dry-run calculation is used for live trades as well. @@ -305,11 +313,6 @@ We do strongly recommend to limit all API keys to the IP you're going to use it We therefore recommend the usage of one subaccount per bot. This is especially important when using unified accounts. Other configurations (multiple bots on one account, manual non-bot trades on the bot account) are not supported and may lead to unexpected behavior. - -!!! Tip "Stoploss on Exchange" - Bybit (futures only) supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange. - On futures, Bybit supports both `stop-limit` as well as `stop-market` orders. You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use. - ## Bitmart Bitmart requires the API key Memo (the name you give the API key) to go along with the exchange key and secret. @@ -328,6 +331,26 @@ It's therefore required to pass the UID as well. !!! Warning "Necessary Verification" Bitmart requires Verification Lvl2 to successfully trade on the spot market through the API - even though trading via UI works just fine with just Lvl1 verification. +## Bitget + +Bitget requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows: + +```json +"exchange": { + "name": "bitget", + "key": "your_exchange_key", + "secret": "your_exchange_secret", + "password": "your_exchange_api_key_password", + // ... +} +``` + +Bitget supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), "FOK" (full-or-cancel), "IOC" (immediate-or-cancel) and "PO" (Post only) settings. + +!!! Tip "Stoploss on Exchange" + Bitget supports `stoploss_on_exchange` and can use both stop-loss-market and stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it. + You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type of stoploss shall be used. + ## Hyperliquid !!! Tip "Stoploss on Exchange" @@ -339,13 +362,13 @@ This needs to be configured like this: ```json "exchange": { "name": "hyperliquid", - "walletAddress": "your_eth_wallet_address", + "walletAddress": "your_eth_wallet_address", // This should NOT be your API Wallet Address! "privateKey": "your_api_private_key", // ... } ``` -* walletAddress in hex format: `0x<40 hex characters>` - Can be easily copied from your wallet - and should be your wallet address, not your API Wallet Address. +* walletAddress in hex format: `0x<40 hex characters>` - Can be easily copied from your wallet - and should be your main wallet address, not your API Wallet Address. * privateKey in hex format: `0x<64 hex characters>` - Use the key the API Wallet shows on creation. Hyperliquid handles deposits and withdrawals on the Arbitrum One chain, a Layer 2 scaling solution built on top of Ethereum. Hyperliquid uses USDC as quote / collateral. The process of depositing USDC on Hyperliquid requires a couple of steps, see [how to start trading](https://hyperliquid.gitbook.io/hyperliquid-docs/onboarding/how-to-start-trading) for details on what steps are needed. @@ -363,10 +386,50 @@ Hyperliquid handles deposits and withdrawals on the Arbitrum One chain, a Layer * Create a different software wallet, only transfer the funds you want to trade with to that wallet, and use that wallet to trade on Hyperliquid. * If you have funds you don't want to use for trading (after making a profit for example), transfer them back to your hardware wallet. +### Hyperliquid Vault / Subaccount + +Hyperliquid allows you to create either a vault or a subaccount. +To use these with Freqtrade, you will need to use the following configuration pattern: + +``` json +"exchange": { + "name": "hyperliquid", + "walletAddress": "your_vault_address", // Vault or subaccount address + "privateKey": "your_api_private_key", + "ccxt_config": { + "options": { + "vaultAddress": "your_vault_address" // Optional, only if you want to use a vault or subaccount + } + }, + // ... +} +``` + +Your balance and trades will now be used from your vault / subaccount - and no longer from your main account. + ### Historic Hyperliquid data The Hyperliquid API does not provide historic data beyond the single call to fetch current data, so downloading data is not possible, as the downloaded data would not constitute proper historic data. +## Bitvavo + +If your account is required to use an operatorId, you can set it in the configuration file as follows: + +``` json +"exchange": { + "name": "bitvavo", + "key": "", + "secret": "", + "ccxt_config": { + "options": { + "operatorId": "123567" + } + }, + } +``` + +Bitvavo expects the `operatorId` to be an integer. + ## All exchanges Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys. diff --git a/docs/faq.md b/docs/faq.md index 8d19b5db0..9085a9226 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -102,6 +102,14 @@ You can use "current" market data by using the [dataprovider](strategy-customiza You can use the `/stopentry` command in Telegram to prevent future trade entry, followed by `/forceexit all` (sell all open trades). +### I sold the bot's capital and now there's errors in the log + +Freqtrade assumes that the trades it opens are managed only though the bot. +If you happen to (accidentally) sell the bot's capital, freqtrade will try to recover by trying to re-find on-exchange orders. + +This is a best-effort approach, and will not work in all cases, especially when using order types that are not supported by freqtrade (OCO, iceberg, etc.), or when working with older trades (where the exchange no longer provides full order information). +The exact limits will vary between exchanges - with the details usually being documented in the exchange's API documentation. + ### I want to run multiple bots on the same machine Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade). @@ -151,6 +159,14 @@ This warning can point to one of the below problems: * Barely traded pair -> Check the pair on the exchange webpage, look at the timeframe your strategy uses. If the pair does not have any volume in some candles (usually visualized with a "volume 0" bar, and a "_" as candle), this pair did not have any trades in this timeframe. These pairs should ideally be avoided, as they can cause problems with order-filling. * API problem -> API returns wrong data (this only here for completeness, and should not happen with supported exchanges). +### I get the message "Couldn't reuse watch for xxx" in the log + +This is an informational message that the bot tried to use candles from the websocket, but the exchange didn't provide the right information. +This can happen if there was an interruption to the websocket connection - or if the pair didn't have any trades happen in the timeframe you are using. + +Freqtrade will handle this gracefully by falling back to the REST api. +While this makes the iteration slightly slower (due to the REST Api call) - it will not cause any problems to the bot's operation. + ### I'm getting the "Exchange XXX does not support market orders." message and cannot run my strategy As the message says, your exchange does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Your strategy was probably written with other exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of the exchanges supporting market orders (but not for Gate.io). @@ -219,10 +235,7 @@ On Windows, the `--logfile` option is also supported by Freqtrade and you can us First of all, most indicator libraries don't have GPU support - as such, there would be little benefit for indicator calculations. The GPU improvements would only apply to pandas-native calculations - or ones written by yourself. -For hyperopt, freqtrade is using scikit-optimize, which is built on top of scikit-learn. -Their statement about GPU support is [pretty clear](https://scikit-learn.org/stable/faq.html#will-you-add-gpu-support). - -GPU's also are only good at crunching numbers (floating point operations). +GPU's are only good at crunching numbers (floating point operations). For hyperopt, we need both number-crunching (find next parameters) and running python code (running backtesting). As such, GPU's are not too well suited for most parts of hyperopt. @@ -271,20 +284,6 @@ Example: 4% profit 650 times vs 0,3% profit a trade 10000 times in a year. If we Example: `freqtrade --config config.json --strategy SampleStrategy --hyperopt SampleHyperopt -e 1000 --timerange 20190601-20200601` -## Edge module - -### Edge implements interesting approach for controlling position size, is there any theory behind it? - -The Edge module is mostly a result of brainstorming of [@mishaker](https://github.com/mishaker) and [@creslinux](https://github.com/creslinux) freqtrade team members. - -You can find further info on expectancy, win rate, risk management and position size in the following sources: - -- https://www.tradeciety.com/ultimate-math-guide-for-traders/ -- https://samuraitradingacademy.com/trading-expectancy/ -- https://www.learningmarkets.com/determining-expectancy-in-your-trading/ -- https://www.lonestocktrader.com/make-money-trading-positive-expectancy/ -- https://www.babypips.com/trading/trade-expectancy-matter - ## Official channels Freqtrade is using exclusively the following official channels: diff --git a/docs/freqai-feature-engineering.md b/docs/freqai-feature-engineering.md index d25051291..4d355a786 100644 --- a/docs/freqai-feature-engineering.md +++ b/docs/freqai-feature-engineering.md @@ -181,7 +181,7 @@ You can ask for each of the defined features to be included also for informative In total, the number of features the user of the presented example strategy has created is: length of `include_timeframes` * no. features in `feature_engineering_expand_*()` * length of `include_corr_pairlist` * no. `include_shifted_candles` * length of `indicator_periods_candles` $= 3 * 3 * 3 * 2 * 2 = 108$. - !!! note "Learn more about creative feature engineering" +!!! note "Learn more about creative feature engineering" Check out our [medium article](https://emergentmethods.medium.com/freqai-from-price-to-prediction-6fadac18b665) geared toward helping users learn how to creatively engineer features. ### Gain finer control over `feature_engineering_*` functions with `metadata` @@ -310,7 +310,7 @@ class MyCoolTransform(BaseTransform): If you have created your own custom `IFreqaiModel` with a custom `train()`/`predict()` function, *and* you still rely on `data_cleaning_train/predict()`, then you will need to migrate to the new pipeline. If your model does *not* rely on `data_cleaning_train/predict()`, then you do not need to worry about this migration. -More details about the migration can be found [here](strategy_migration.md#freqai---new-data-pipeline). +More details about the migration can be found [here](strategy_migration.md#freqai-new-data-pipeline). ## Outlier detection diff --git a/docs/freqai.md b/docs/freqai.md index cda8efe13..c3d3a4ec3 100644 --- a/docs/freqai.md +++ b/docs/freqai.md @@ -79,7 +79,7 @@ pip install -r requirements-freqai.txt If you are using docker, a dedicated tag with FreqAI dependencies is available as `:freqai`. As such - you can replace the image line in your docker compose file with `image: freqtradeorg/freqtrade:stable_freqai`. This image contains the regular FreqAI dependencies. Similar to native installs, Catboost will not be available on ARM based devices. If you would like to use PyTorch or Reinforcement learning, you should use the torch or RL tags, `image: freqtradeorg/freqtrade:stable_freqaitorch`, `image: freqtradeorg/freqtrade:stable_freqairl`. !!! note "docker-compose-freqai.yml" - We do provide an explicit docker-compose file for this in `docker/docker-compose-freqai.yml` - which can be used via `docker compose -f docker/docker-compose-freqai.yml run ...` - or can be copied to replace the original docker file. This docker-compose file also contains a (disabled) section to enable GPU resources within docker containers. This obviously assumes the system has GPU resources available. + We do provide an explicit docker-compose file for this in `docker/docker-compose-freqai.yml` - which can be used via `docker compose -f docker/docker-compose-freqai.yml run ...` - or can be copied to replace the original docker file. This docker-compose file also contains a (disabled) section to enable GPU resources within docker containers. This obviously assumes the system has GPU resources available. ### FreqAI position in open-source machine learning landscape diff --git a/docs/hyperopt.md b/docs/hyperopt.md index ecd32552e..2d5f66df0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -1,10 +1,10 @@ # Hyperopt This page explains how to tune your strategy by finding the optimal -parameters, a process called hyperparameter optimization. The bot uses algorithms included in the `scikit-optimize` package to accomplish this. +parameters, a process called hyperparameter optimization. The bot uses algorithms included in the `optuna` package to accomplish this. The search will burn all your CPU cores, make your laptop sound like a fighter jet and still take a long time. -In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses Bayesian search with a ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions). +In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses one of optuna's sampler algorithms (currently NSGAIIISampler) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions). Hyperopt requires historic data to be available, just as backtesting does (hyperopt runs backtesting many times with different parameters). To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation. @@ -490,6 +490,8 @@ freqtrade hyperopt --config config.json --hyperopt-loss --str ``` The `-e` option will set how many evaluations hyperopt will do. Since hyperopt uses Bayesian search, running too many epochs at once may not produce greater results. Experience has shown that best results are usually not improving much after 500-1000 epochs. +The `--early-stop` option will set after how many epochs with no improvements hyperopt will stop. A good value is 20-30% of the total epochs. Any value greater than 0 and lower than 20 it will be replaced by 20. Early stop is by default disabled (`--early-stop=0`) + Doing multiple runs (executions) with a few 1000 epochs and different random state will most likely produce different results. The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below. @@ -532,7 +534,7 @@ Legal values are: * `trailing`: search for the best trailing stop values * `trades`: search for the best max open trades values * `protection`: search for the best protection parameters (read the [protections section](#optimizing-protections) on how to properly define these) -* `default`: `all` except `trailing` and `protection` +* `default`: `all` except `trailing`, `trades` and `protection` * space-separated list of any of the above values for example `--spaces roi stoploss` The default Hyperopt Search Space, used when no `--space` command line option is specified, does not include the `trailing` hyperspace. We recommend you to run optimization for the `trailing` hyperspace separately, when the best parameters for other hyperspaces were found, validated and pasted into your custom strategy. diff --git a/docs/includes/pairlists.md b/docs/includes/pairlists.md index 32b97605c..32e669065 100644 --- a/docs/includes/pairlists.md +++ b/docs/includes/pairlists.md @@ -389,6 +389,8 @@ The `refresh_period` setting defines the interval (in seconds) at which the mark The `categories` setting specifies the [coingecko categories](https://www.coingecko.com/en/categories) from which to select coins from. The default is an empty list `[]`, meaning no category filtering is applied. If an incorrect category string is chosen, the plugin will print the available categories from CoinGecko and fail. The category should be the ID of the category, for example, for `https://www.coingecko.com/en/categories/layer-1`, the category ID would be `layer-1`. You can pass multiple categories such as `["layer-1", "meme-token"]` to select from several categories. +Coins like 1000PEPE/USDT or KPEPE/USDT:USDT are detected on a best effort basis, with the prefixes `1000` and `K` being used to identify them. + !!! Warning "Many categories" Each added category corresponds to one API call to CoinGecko. The more categories you add, the longer the pairlist generation will take, potentially causing rate limit issues. diff --git a/docs/includes/showcase.md b/docs/includes/showcase.md index 766703b9f..6fb5f15cf 100644 --- a/docs/includes/showcase.md +++ b/docs/includes/showcase.md @@ -3,7 +3,7 @@ This section will highlight a few projects from members of the community. The projects below are for the most part not maintained by the freqtrade , therefore use your own caution before using them. - [Example freqtrade strategies](https://github.com/freqtrade/freqtrade-strategies/) -- [FrequentHippo - Grafana dashboard with dry/live runs and backtests](http://frequenthippo.ddns.net:3000/) (by hippocritical). +- [FrequentHippo - Statistics of dry/live runs and backtests](http://frequenthippo.ddns.net) (by hippocritical). - [Online pairlist generator](https://remotepairlist.com/) (by Blood4rc). - [Freqtrade Backtesting Project](https://strat.ninja/) (by Blood4rc). - [Freqtrade analysis notebook](https://github.com/froggleston/freqtrade_analysis_notebook) (by Froggleston). diff --git a/docs/includes/strategy-exit-comparisons.md b/docs/includes/strategy-exit-comparisons.md new file mode 100644 index 000000000..b677d503d --- /dev/null +++ b/docs/includes/strategy-exit-comparisons.md @@ -0,0 +1,18 @@ +## Exit logic comparisons + +Freqtrade allows your strategy to implement different exit logic using signal-based or callback-based functions. +This section aims to compare each different function, helping you to choose the one that best fits your needs. + +* **`populate_exit_trend()`** - Vectorized signal-based exit logic using indicators in the main dataframe + ✅ **Use** to define exit signals based on indicators or other data that can be calculated in a vectorized manner. + 🚫 **Don't use** to customize exit conditions for each individual trade, or if trade data is necessary to make an exit decision. +* **`custom_exit()`** - Custom exit logic that will fully exit a trade immediately, called for every open trade at every bot loop iteration until a trade is closed. + ✅ **Use** to specify exit conditions for each individual trade (including any additional adjusted orders using `adjust_trade_position()`), or if trade data is necessary to make an exit decision, e.g. using profit data to exit. + 🚫 **Don't use** when you want to exit using vectorised indicator-based data (use a `populate_exit_trend()` signal instead), or as a proxy for `custom_stoploss()`, and be aware that rate-based exits in backtesting can be inaccurate. +* **`custom_stoploss()`** - Custom trailing stoploss, called for every open trade every iteration until a trade is closed. The value returned here is also used for [stoploss on exchange](stoploss.md#stop-loss-on-exchangefreqtrade). + ✅ **Use** to customize the stoploss logic to set a dynamic stoploss based on trade data or other conditions. + 🚫 **Don't use** to exit a trade immediately based on a specific condition. Use `custom_exit()` for that purpose. +* **`custom_roi()`** - Custom ROI, called for every open trade every iteration until a trade is closed. + ✅ **Use** to specify a minimum ROI threshold ("take-profit") to exit a trade at this ROI level at some point within the trade duration, based on profit or other conditions. + 🚫 **Don't use** to exit a trade immediately based on a specific condition. Use `custom_exit()`. + 🚫 **Don't use** for static ROI. Use `minimal_roi`. diff --git a/docs/index.md b/docs/index.md index d05fcc2c1..7276432da 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,12 +3,11 @@ [![Freqtrade CI](https://github.com/freqtrade/freqtrade/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/freqtrade/freqtrade/actions/) [![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864) [![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop) -[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability) - -Star -Fork -Download + +[:octicons-star-16: Star](https://github.com/freqtrade/freqtrade){ .md-button .md-button--sm } +[:octicons-repo-forked-16: Fork](https://github.com/freqtrade/freqtrade/fork){ .md-button .md-button--sm } +[:octicons-download-16: Download](https://github.com/freqtrade/freqtrade/archive/stable.zip){ .md-button .md-button--sm } ## Introduction @@ -31,7 +30,6 @@ Freqtrade is a free and open source crypto trading bot written in Python. It is - Optimize: Find the best parameters for your strategy using hyperoptimization which employs machine learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. - Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. - Run: Test your strategy with simulated money (Dry-Run mode) or deploy it with real money (Live-Trade mode). -- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. - Control/Monitor: Use Telegram or a WebUI (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.). - Analyze: Further analysis can be performed on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md). @@ -88,7 +86,7 @@ To run this bot we recommend you a linux cloud instance with a minimum of: Alternatively -- Python 3.10+ +- Python 3.11+ - pip (pip3) - git - TA-Lib diff --git a/docs/installation.md b/docs/installation.md index 30deb07ba..3efe6593f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -24,7 +24,7 @@ The easiest way to install and run Freqtrade is to clone the bot Github reposito The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). !!! Note - Python3.10 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. + Python3.11 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. Also, python headers (`python-dev` / `python-devel`) must be available for the installation to complete successfully. !!! Warning "Up-to-date clock" @@ -42,11 +42,10 @@ These requirements apply to both [Script Installation](#script-installation) and ### Install guide -* [Python >= 3.10](http://docs.python-guide.org/en/latest/starting/installation/) +* [Python >= 3.11](http://docs.python-guide.org/en/latest/starting/installation/) * [pip](https://pip.pypa.io/en/stable/installing/) * [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended) -* [TA-Lib](https://ta-lib.github.io/ta-lib-python/) (install instructions [below](#install-ta-lib)) ### Install code @@ -54,7 +53,7 @@ We've included/collected install instructions for Ubuntu, MacOS, and Windows. Th OS Specific steps are listed first, the common section below is necessary for all systems. !!! Note - Python3.10 or higher and the corresponding pip are assumed to be available. + Python3.11 or higher and the corresponding pip are assumed to be available. === "Debian/Ubuntu" #### Install necessary dependencies @@ -87,7 +86,7 @@ OS Specific steps are listed first, the common section below is necessary for al ```bash - sudo apt-get install python3-venv libatlas-base-dev cmake curl + sudo apt-get install python3-venv libatlas-base-dev cmake curl libffi-dev # Use piwheels.org to speed up installation sudo echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > tee /etc/pip.conf @@ -179,7 +178,7 @@ You can as well update, configure and reset the codebase of your bot with `./scr ** --install ** With this option, the script will install the bot and most dependencies: -You will need to have git and python3.10+ installed beforehand for this to work. +You will need to have git and python3.11+ installed beforehand for this to work. * Mandatory software as: `ta-lib` * Setup your virtualenv under `.venv/` @@ -201,35 +200,6 @@ This option will hard reset your branch (only if you are on either `stable` or ` Make sure you fulfill the [Requirements](#requirements) and have downloaded the [Freqtrade repository](#freqtrade-repository). -### Install TA-Lib - -#### TA-Lib script installation - -```bash -sudo ./build_helpers/install_ta-lib.sh -``` - -!!! Note - This will use the ta-lib tar.gz included in this repository. - -##### TA-Lib manual installation - -[Official installation guide](https://ta-lib.github.io/ta-lib-python/install.html) - -```bash -wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -tar xvzf ta-lib-0.4.0-src.tar.gz -cd ta-lib -sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h -./configure --prefix=/usr/local -make -sudo make install -# On debian based systems (debian, ubuntu, ...) - updating ldconfig might be necessary. -sudo ldconfig -cd .. -rm -rf ./ta-lib* -``` - ### Setup Python virtual environment (virtualenv) You will run freqtrade in separated `virtual environment` @@ -332,16 +302,6 @@ python3 -m pip install -r requirements.txt python3 -m pip install -e . ``` -Patch conda libta-lib (Linux only) - -```bash -# Ensure that the environment is active! -conda activate freqtrade - -cd build_helpers -bash install_ta-lib.sh ${CONDA_PREFIX} nosudo -``` - [You are now ready](#you-are-ready) to run the bot. ### Important shortcuts diff --git a/docs/lookahead-analysis.md b/docs/lookahead-analysis.md index a64479fe6..d8fb8b7bb 100644 --- a/docs/lookahead-analysis.md +++ b/docs/lookahead-analysis.md @@ -1,23 +1,21 @@ # Lookahead analysis -This page explains how to validate your strategy in terms of look ahead bias. +This page explains how to validate your strategy in terms of lookahead bias. -Checking look ahead bias is the bane of any strategy since it is sometimes very easy to introduce backtest bias - -but very hard to detect. +Lookahead bias is the bane of any strategy since it is sometimes very easy to introduce this bias, but can be very hard to detect. -Backtesting initializes all timestamps at once and calculates all indicators in the beginning. -This means that if your indicators or entry/exit signals could look into future candles and falsify your backtest. +Backtesting initializes all timestamps (loads the whole dataframe into memory) and calculates all indicators at once. +This means that if your indicators or entry/exit signals look into future candles, this will falsify your backtest. -Lookahead-analysis requires historic data to be available. +The `lookahead-analysis` command requires historic data to be available. To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation. +`lookahead-analysis` also supports freqai strategies. -This command is built upon backtesting since it internally chains backtests and pokes at the strategy to provoke it to show look ahead bias. -This is done by not looking at the strategy itself - but at the results it returned. -The results are things like changed indicator-values and moved entries/exits compared to the full backtest. +This command internally chains backtests and pokes at the strategy to provoke it to show lookahead bias. +This is done by not looking at the strategy code itself, but at changed indicator values and moved entries/exits compared to the full backtest. -You can use commands of [Backtesting](backtesting.md). -It also supports the lookahead-analysis of freqai strategies. +`lookahead-analysis` can use the typical options of [Backtesting](backtesting.md), but forces the following options: - `--cache` is forced to "none". - `--max-open-trades` is forced to be at least equal to the number of pairs. @@ -25,48 +23,82 @@ It also supports the lookahead-analysis of freqai strategies. - `--stake-amount` is forced to be a static 10000 (10k). - `--enable-protections` is forced to be off. -Those are set to avoid users accidentally generating false positives. +These are set to avoid users accidentally generating false positives. ## Lookahead-analysis command reference --8<-- "commands/lookahead-analysis.md" -!!! Note "" - The above Output was reduced to options `lookahead-analysis` adds on top of regular backtesting commands. - -### Summary - -Checks a given strategy for look ahead bias via lookahead-analysis -Look ahead bias means that the backtest uses data from future candles thereby not making it viable beyond backtesting -and producing false hopes for the one backtesting. +!!! Note + The above output was reduced to options that `lookahead-analysis` adds on top of regular backtesting commands. ### Introduction -Many strategies - without the programmer knowing - have fallen prey to look ahead bias. +Many strategies, without the programmer knowing, have fallen prey to lookahead bias. +This typically makes the strategy backtest look profitable, sometimes to extremes, but this is not realistic as the strategy is "cheating" by looking at data it would not have in dry or live modes. -Any backtest will populate the full dataframe including all time stamps at the beginning. +The reason why strategies can "cheat" is because the freqtrade backtesting process populates the full dataframe including all candle timestamps at the outset. If the programmer is not careful or oblivious how things work internally -(which sometimes can be really hard to find out) then it will just look into the future making the strategy amazing -but not realistic. +(which sometimes can be really hard to find out) then the strategy will look into the future. -This command is made to try to verify the validity in the form of the aforementioned look ahead bias. +This command is made to try to verify the validity in the form of the aforementioned lookahead bias. ### How does the command work? It will start with a backtest of all pairs to generate a baseline for indicators and entries/exits. -After the backtest ran, it will look if the `minimum-trade-amount` is met -and if not cancel the lookahead-analysis for this strategy. +After this initial backtest runs, it will look if the `minimum-trade-amount` is met and if not cancel the lookahead-analysis for this strategy. +If this happens, use a wider timerange to get more trades for the analysis, or use a timerange where more trades occur. -After setting the baseline it will then do additional runs for every entry and exit separately. -When a verification-backtest is done, it will compare the indicators as the signal (either entry or exit) and report the bias. -After all signals have been verified or falsified a result-table will be generated for the user to see. +After setting the baseline it will then do additional backtest runs for every entry and exit separately. +When these verification backtests complete, it will compare both dataframes (baseline and sliced) for any difference in columns' value and report the bias. +After all signals have been verified or falsified a result table will be generated for the user to see. + +### How to find and remove bias? How can I salvage a biased strategy? + +If you found a biased strategy online and want to have the same results, just without bias, +then you will be out of luck most of the time. +Usually the bias in the strategy is THE driving factor for "too good to be true" profits. +Removing conditions or indicators that push the profits up from bias will usually make the strategy significantly worse. +You might be able to salvage it partially if the biased indicators or conditions are not the core of the strategy, or there +are other entry and exit signals that are not biased. + +### Examples of lookahead-bias + +- `shift(-10)` looks 10 candles into the future. +- Using `iloc[]` in populate_* functions to access a specific row in the dataframe. +- For-loops are prone to introduce lookahead bias if you don't tightly control which numbers are looped through. +- Aggregation functions like `.mean()`, `.min()` and `.max()`, without a rolling window, + will calculate the value over the **whole** dataframe, so the signal candle will "see" a value including future candles. + A non-biased example would be to look back candles using `rolling()` instead: + e.g. `dataframe['volume_mean_12'] = dataframe['volume'].rolling(12).mean()` +- `ta.MACD(dataframe, 12, 26, 1)` will introduce bias with a signalperiod of 1. + +### What do the columns in the results table mean? + +- `filename`: name of the checked strategy file +- `strategy`: checked strategy class name +- `has_bias`: result of the lookahead-analysis. `No` would be good, `Yes` would be bad. +- `total_signals`: number of checked signals (default is 20) +- `biased_entry_signals`: found bias in that many entries +- `biased_exit_signals`: found bias in that many exits +- `biased_indicators`: shows you the indicators themselves that are defined in populate_indicators + +You might get false positives in the `biased_exit_signals` if you have biased entry signals paired with those exits. +However, a biased entry will usually result in a biased exit too, +even if the exit itself does not produce the bias - +especially if your entry and exit conditions use the same biased indicator. + +**Address the bias in the entries first, then address the exits.** ### Caveats - `lookahead-analysis` can only verify / falsify the trades it calculated and verified. -If the strategy has many different signals / signal types, it's up to you to select appropriate parameters to ensure that all signals have triggered at least once. Not triggered signals will not have been verified. -This could lead to a false-negative (the strategy will then be reported as non-biased). -- `lookahead-analysis` has access to everything that backtesting has too. -Please don't provoke any configs like enabling position stacking. -If you decide to do so, then make doubly sure that you won't ever run out of `max_open_trades` amount and neither leftover money in your wallet. -- In the results table, the `biased_indicators` column will falsely flag FreqAI target indicators defined in `set_freqai_targets()` as biased. These are not biased and can safely be ignored. +If the strategy has many different signals / signal types, it's up to you to select appropriate parameters to ensure that all signals have triggered at least once. Signals that are not triggered will not have been verified. +This would lead to a false-negative, i.e. the strategy will be reported as non-biased. +- `lookahead-analysis` has access to the same backtesting options and this can introduce problems. +Please don't use any options like enabling position stacking as this will distort the number of checked signals. +If you decide to do so, then make doubly sure that you won't ever run out of `max_open_trades` slots, +and that you have enough capital in the backtest wallet configuration. +- In the results table, the `biased_indicators` column +will falsely flag FreqAI target indicators defined in `set_freqai_targets()` as biased. +**These are not biased and can safely be ignored.** diff --git a/docs/overrides/main.html b/docs/overrides/main.html index cba627ead..4b53d3c57 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -37,7 +37,6 @@ {{ super() }} - diff --git a/docs/producer-consumer.md b/docs/producer-consumer.md index 0bd52ac93..d7d40df71 100644 --- a/docs/producer-consumer.md +++ b/docs/producer-consumer.md @@ -50,6 +50,7 @@ Enable subscribing to an instance by adding the `external_message_consumer` sect | `ping_timeout` | Ping timeout
*Defaults to `10`.*
**Datatype:** Integer - in seconds. | `sleep_time` | Sleep time before retrying to connect.
*Defaults to `10`.*
**Datatype:** Integer - in seconds. | `remove_entry_exit_signals` | Remove signal columns from the dataframe (set them to 0) on dataframe receipt.
*Defaults to `false`.*
**Datatype:** Boolean. +| `initial_candle_limit` | Initial candles to expect from the Producer.
*Defaults to `1500`.*
**Datatype:** Integer - Number of candles. | `message_size_limit` | Size limit per message
*Defaults to `8`.*
**Datatype:** Integer - Megabytes. Instead of (or as well as) calculating indicators in `populate_indicators()` the follower instance listens on the connection to a producer instance's messages (or multiple producer instances in advanced configurations) and requests the producer's most recently analyzed dataframes for each pair in the active whitelist. diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index b7d8fd974..71df421fc 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,7 +1,7 @@ -markdown==3.7 +markdown==3.8.2 mkdocs==1.6.1 -mkdocs-material==9.6.11 +mkdocs-material==9.6.18 mdx_truly_sane_lists==1.3 -pymdown-extensions==10.14.3 +pymdown-extensions==10.16.1 jinja2==3.1.6 mike==2.1.3 diff --git a/docs/rest-api.md b/docs/rest-api.md index cea4d2ee9..35a7af75a 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -190,9 +190,6 @@ delete_trade :param trade_id: Deletes the trade with this ID from the database. -edge - Return information about edge. - forcebuy Buy an asset. @@ -368,7 +365,6 @@ All endpoints in the below table need to be prefixed with the base URL of the AP | `/blacklist` | GET | Show the current blacklist. | `/blacklist` | POST | Adds the specified pair to the blacklist.
*Params:*
- `pair` (`str`) | `/blacklist` | DELETE | Deletes the specified list of pairs from the blacklist.
*Params:*
- `[pair,pair]` (`list[str]`) -| `/edge` | GET | Show validated pairs by Edge if it is enabled. | `/pair_candles` | GET | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha** | `/pair_candles` | POST | Returns dataframe for a pair / timeframe combination while the bot is running, filtered by a provided list of columns to return. **Alpha**
*Params:*
- `` (`list[str]`) | `/pair_history` | GET | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha** diff --git a/docs/stoploss.md b/docs/stoploss.md index 7fbe6dabc..f1a1e487d 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -31,6 +31,7 @@ The Order-type will be ignored if only one mode is available. | Binance | limit | | Binance Futures | market, limit | | Bingx | market, limit | +| Bitget | market, limit | | HTX | limit | | kraken | market, limit | | Gate | limit | @@ -256,4 +257,4 @@ The new stoploss value will be applied to open trades (and corresponding log-mes ### Limitations -Stoploss values cannot be changed if `trailing_stop` is enabled and the stoploss has already been adjusted, or if [Edge](edge.md) is enabled (since Edge would recalculate stoploss based on the current market situation). +Stoploss values cannot be changed if `trailing_stop` is enabled and the stoploss has already been adjusted. diff --git a/docs/strategy-101.md b/docs/strategy-101.md index 9226537e1..a5e100b8d 100644 --- a/docs/strategy-101.md +++ b/docs/strategy-101.md @@ -165,18 +165,23 @@ If there is any significant difference, verify that your entry and exit signals ## Controlling or monitoring a running bot -Once your bot is running in dry or live mode, Freqtrade has five mechanisms to control or monitor a running bot: +Once your bot is running in dry or live mode, Freqtrade has six mechanisms to control or monitor a running bot: - **[FreqUI](freq-ui.md)**: The easiest to get started with, FreqUI is a web interface to see and control current activity of your bot. - **[Telegram](telegram-usage.md)**: On mobile devices, Telegram integration is available to get alerts about your bot activity and to control certain aspects. - **[FTUI](https://github.com/freqtrade/ftui)**: FTUI is a terminal (command line) interface to Freqtrade, and allows monitoring of a running bot only. -- **[REST API](rest-api.md)**: The REST API allows programmers to develop their own tools to interact with a Freqtrade bot. +- **[freqtrade-client](rest-api.md#consuming-the-api)**: A python implementation of the REST API, making it easy to make requests and consume bot responses from your python apps or the command line. +- **[REST API endpoints](rest-api.md#available-endpoints)**: The REST API allows programmers to develop their own tools to interact with a Freqtrade bot. - **[Webhooks](webhook-config.md)**: Freqtrade can send information to other services, e.g. discord, by webhooks. ### Logs Freqtrade generates extensive debugging logs to help you understand what's happening. Please familiarise yourself with the information and error messages you might see in your bot logs. +Logging by default occurs on standard out (the command line). If you want to write out to a file instead, many freqtrade commands, including the `trade` command, accept the `--logfile` option to write to a file. + +Check the [FAQ](faq.md#how-do-i-search-the-bot-logs-for-something) for examples. + ## Final Thoughts Algo trading is difficult, and most public strategies are not good performers due to the time and effort to make a strategy work profitably in multiple scenarios. diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 8bb23c5da..6e77d4ccb 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -174,17 +174,27 @@ class AwesomeStrategy(IStrategy): ## Enter Tag -When your strategy has multiple buy signals, you can name the signal that triggered. -Then you can access your buy signal on `custom_exit` +When your strategy has multiple entry signals, you can name the signal that triggered. +Then you can access your entry signal on `custom_exit` ```python def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + dataframe["enter_tag"] = "" + signal_rsi = (qtpylib.crossed_above(dataframe["rsi"], 35)) + signal_bblower = (dataframe["bb_lowerband"] < dataframe["close"]) + # Additional conditions dataframe.loc[ ( - (dataframe['rsi'] < 35) & - (dataframe['volume'] > 0) - ), - ['enter_long', 'enter_tag']] = (1, 'buy_signal_rsi') + signal_rsi + | signal_bblower + # ... additional signals to enter a long position + ) + & (dataframe["volume"] > 0) + , "enter_long" + ] = 1 + # Concatenate the tags so all signals are kept + dataframe.loc[signal_rsi, "enter_tag"] += "long_signal_rsi " + dataframe.loc[signal_bblower, "enter_tag"] += "long_signal_bblower " return dataframe @@ -192,14 +202,17 @@ def custom_exit(self, pair: str, trade: Trade, current_time: datetime, current_r current_profit: float, **kwargs): dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe) last_candle = dataframe.iloc[-1].squeeze() - if trade.enter_tag == 'buy_signal_rsi' and last_candle['rsi'] > 80: - return 'sell_signal_rsi' + if "long_signal_rsi" in trade.enter_tag and last_candle["rsi"] > 80: + return "exit_signal_rsi" + if "long_signal_bblower" in trade.enter_tag and last_candle["high"] > last_candle["bb_upperband"]: + return "exit_signal_bblower" + # ... return None ``` !!! Note - `enter_tag` is limited to 100 characters, remaining data will be truncated. + `enter_tag` is limited to 255 characters, remaining data will be truncated. !!! Warning There is only one `enter_tag` column, which is used for both long and short trades. @@ -213,17 +226,27 @@ Similar to [Entry Tagging](#enter-tag), you can also specify an exit tag. ``` python def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + dataframe["exit_tag"] = "" + rsi_exit_signal = (dataframe["rsi"] > 70) + ema_exit_signal = (dataframe["ema20"] < dataframe["ema50"]) + # Additional conditions dataframe.loc[ ( - (dataframe['rsi'] > 70) & - (dataframe['volume'] > 0) - ), - ['exit_long', 'exit_tag']] = (1, 'exit_rsi') + rsi_exit_signal + | ema_exit_signal + # ... additional signals to exit a long position + ) & + (dataframe["volume"] > 0) + , + "exit_long"] = 1 + # Concatenate the tags so all signals are kept + dataframe.loc[rsi_exit_signal, "exit_tag"] += "exit_signal_rsi " + dataframe.loc[rsi_exit_signal2, "exit_tag"] += "exit_signal_rsi " return dataframe ``` -The provided exit-tag is then used as sell-reason - and shown as such in backtest results. +The provided exit-tag is then used as exit-reason - and shown as such in backtest results. !!! Note `exit_reason` is limited to 100 characters, remaining data will be truncated. diff --git a/docs/strategy-callbacks.md b/docs/strategy-callbacks.md index 4564a0f03..ecc2cbb9b 100644 --- a/docs/strategy-callbacks.md +++ b/docs/strategy-callbacks.md @@ -12,6 +12,7 @@ Currently available callbacks: * [`custom_stake_amount()`](#stake-size-management) * [`custom_exit()`](#custom-exit-signal) * [`custom_stoploss()`](#custom-stoploss) +* [`custom_roi()`](#custom-roi) * [`custom_entry_price()` and `custom_exit_price()`](#custom-order-price-rules) * [`check_entry_timeout()` and `check_exit_timeout()`](#custom-order-timeout-rules) * [`confirm_trade_entry()`](#trade-entry-buy-order-confirmation) @@ -26,6 +27,9 @@ Currently available callbacks: --8<-- "includes/strategy-imports.md" +--8<-- "includes/strategy-exit-comparisons.md" + + ## Bot start A simple callback which is called once when the strategy is loaded. @@ -121,7 +125,7 @@ Freqtrade will fall back to the `proposed_stake` value should your code raise an Called for open trade every throttling iteration (roughly every 5 seconds) until a trade is closed. -Allows to define custom exit signals, indicating that specified position should be sold. This is very useful when we need to customize exit conditions for each individual trade, or if you need trade data to make an exit decision. +Allows to define custom exit signals, indicating that specified position should be closed (full exit). This is very useful when we need to customize exit conditions for each individual trade, or if you need trade data to make an exit decision. For example you could implement a 1:2 risk-reward ROI with `custom_exit()`. @@ -178,6 +182,8 @@ Returning `None` will be interpreted as "no desire to change", and is the only s Stoploss on exchange works similar to `trailing_stop`, and the stoploss on exchange is updated as configured in `stoploss_on_exchange_interval` ([More details about stoploss on exchange](stoploss.md#stop-loss-on-exchangefreqtrade)). +If you're on futures markets, please take note of the [stoploss and leverage](stoploss.md#stoploss-and-leverage) section, as the stoploss value returned from `custom_stoploss` is the risk for this trade - not the relative price movement. + !!! Note "Use of dates" All time-based calculations should be done based on `current_time` - using `datetime.now()` or `datetime.utcnow()` is discouraged, as this will break backtesting support. @@ -233,7 +239,7 @@ class AwesomeStrategy(IStrategy): :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. :return float: New stoploss value, relative to the current_rate """ - return -0.04 + return -0.04 * trade.leverage ``` #### Time based trailing stop @@ -255,9 +261,9 @@ class AwesomeStrategy(IStrategy): # Make sure you have the longest interval first - these conditions are evaluated from top to bottom. if current_time - timedelta(minutes=120) > trade.open_date_utc: - return -0.05 + return -0.05 * trade.leverage elif current_time - timedelta(minutes=60) > trade.open_date_utc: - return -0.10 + return -0.10 * trade.leverage return None ``` @@ -284,9 +290,9 @@ class AwesomeStrategy(IStrategy): return stoploss_from_open(0.10, current_profit, is_short=trade.is_short, leverage=trade.leverage) # Make sure you have the longest interval first - these conditions are evaluated from top to bottom. if current_time - timedelta(minutes=120) > trade.open_date_utc: - return -0.05 + return -0.05 * trade.leverage elif current_time - timedelta(minutes=60) > trade.open_date_utc: - return -0.10 + return -0.10 * trade.leverage return None ``` @@ -309,10 +315,10 @@ class AwesomeStrategy(IStrategy): **kwargs) -> float | None: if pair in ("ETH/BTC", "XRP/BTC"): - return -0.10 + return -0.10 * trade.leverage elif pair in ("LTC/BTC"): - return -0.05 - return -0.15 + return -0.05 * trade.leverage + return -0.15 * trade.leverage ``` #### Trailing stoploss with positive offset @@ -341,7 +347,7 @@ class AwesomeStrategy(IStrategy): desired_stoploss = current_profit / 2 # Use a minimum of 2.5% and a maximum of 5% - return max(min(desired_stoploss, 0.05), 0.025) + return max(min(desired_stoploss, 0.05), 0.025) * trade.leverage ``` #### Stepped stoploss @@ -497,6 +503,135 @@ The helper function `stoploss_from_absolute()` can be used to convert from an ab --- +## Custom ROI + +Called for open trade every iteration (roughly every 5 seconds) until a trade is closed. + +The usage of the custom ROI method must be enabled by setting `use_custom_roi=True` on the strategy object. + +This method allows you to define a custom minimum ROI threshold for exiting a trade, expressed as a ratio (e.g., `0.05` for 5% profit). If both `minimal_roi` and `custom_roi` are defined, the lower of the two thresholds will trigger an exit. For example, if `minimal_roi` is set to `{"0": 0.10}` (10% at 0 minutes) and `custom_roi` returns `0.05`, the trade will exit when the profit reaches 5%. Also, if `custom_roi` returns `0.10` and `minimal_roi` is set to `{"0": 0.05}` (5% at 0 minutes), the trade will be closed when the profit reaches 5%. + +The method must return a float representing the new ROI threshold as a ratio, or `None` to fall back to the `minimal_roi` logic. Returning `NaN` or `inf` values is considered invalid and will be treated as `None`, causing the bot to use the `minimal_roi` configuration. + +### Custom ROI examples + +The following examples illustrate how to use the `custom_roi` function to implement different ROI logics. + +#### Custom ROI per side + +Use different ROI thresholds depending on the `side`. In this example, 5% for long entries and 2% for short entries. + +```python +# Default imports + +class AwesomeStrategy(IStrategy): + + use_custom_roi = True + + # ... populate_* methods + + def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int, + entry_tag: str | None, side: str, **kwargs) -> float | None: + """ + Custom ROI logic, returns a new minimum ROI threshold (as a ratio, e.g., 0.05 for +5%). + Only called when use_custom_roi is set to True. + + If used at the same time as minimal_roi, an exit will be triggered when the lower + threshold is reached. Example: If minimal_roi = {"0": 0.01} and custom_roi returns 0.05, + an exit will be triggered if profit reaches 5%. + + :param pair: Pair that's currently analyzed. + :param trade: trade object. + :param current_time: datetime object, containing the current datetime. + :param trade_duration: Current trade duration in minutes. + :param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal. + :param side: 'long' or 'short' - indicating the direction of the current trade. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return float: New ROI value as a ratio, or None to fall back to minimal_roi logic. + """ + return 0.05 if side == "long" else 0.02 +``` + +#### Custom ROI per pair + +Use different ROI thresholds depending on the `pair`. + +```python +# Default imports + +class AwesomeStrategy(IStrategy): + + use_custom_roi = True + + # ... populate_* methods + + def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int, + entry_tag: str | None, side: str, **kwargs) -> float | None: + + stake = trade.stake_currency + roi_map = { + f"BTC/{stake}": 0.02, # 2% for BTC + f"ETH/{stake}": 0.03, # 3% for ETH + f"XRP/{stake}": 0.04, # 4% for XRP + } + + return roi_map.get(pair, 0.01) # 1% for any other pair +``` + +#### Custom ROI per entry tag + +Use different ROI thresholds depending on the `entry_tag` provided with the buy signal. + +```python +# Default imports + +class AwesomeStrategy(IStrategy): + + use_custom_roi = True + + # ... populate_* methods + + def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int, + entry_tag: str | None, side: str, **kwargs) -> float | None: + + roi_by_tag = { + "breakout": 0.08, # 8% if tag is "breakout" + "rsi_overbought": 0.05, # 5% if tag is "rsi_overbought" + "mean_reversion": 0.03, # 3% if tag is "mean_reversion" + } + + return roi_by_tag.get(entry_tag, 0.01) # 1% if tag is unknown +``` + +#### Custom ROI based on ATR + +ROI value may be derived from indicators stored in dataframe. This example uses the ATR ratio as ROI. + +``` python +# Default imports +# <...> +import talib.abstract as ta + +class AwesomeStrategy(IStrategy): + + use_custom_roi = True + + def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + # <...> + dataframe["atr"] = ta.ATR(dataframe, timeperiod=10) + + def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int, + entry_tag: str | None, side: str, **kwargs) -> float | None: + + dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe) + last_candle = dataframe.iloc[-1].squeeze() + atr_ratio = last_candle["atr"] / last_candle["close"] + + return atr_ratio # Returns the ATR value as ratio +``` + +--- + ## Custom order price rules By default, freqtrade use the orderbook to automatically set an order price([Relevant documentation](configuration.md#prices-used-for-orders)), you also have the option to create custom order prices based on your strategy. @@ -1107,3 +1242,119 @@ class AwesomeStrategy(IStrategy): return None ``` + +## Plot annotations callback + +The plot annotations callback is called whenever freqUI requests data to display a chart. +This callback has no meaning in the trade cycle context and is only used for charting purposes. + +The strategy can then return a list of `AnnotationType` objects to be displayed on the chart. +Depending on the content returned - the chart can display horizontal areas, vertical areas, or boxes. + +The full object looks like this: + +``` json +{ + "type": "area", // Type of the annotation, currently only "area" is supported + "start": "2024-01-01 15:00:00", // Start date of the area + "end": "2024-01-01 16:00:00", // End date of the area + "y_start": 94000.2, // Price / y axis value + "y_end": 98000, // Price / y axis value + "color": "", + "label": "some label" +} +``` + +The below example will mark the chart with areas for the hours 8 and 15, with a grey color, highlighting the market open and close hours. +This is obviously a very basic example. + +``` python +# Default imports + +class AwesomeStrategy(IStrategy): + def plot_annotations( + self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs + ) -> list[AnnotationType]: + """ + Retrieve area annotations for a chart. + Must be returned as array, with type, label, color, start, end, y_start, y_end. + All settings except for type are optional - though it usually makes sense to include either + "start and end" or "y_start and y_end" for either horizontal or vertical plots + (or all 4 for boxes). + :param pair: Pair that's currently analyzed + :param start_date: Start date of the chart data being requested + :param end_date: End date of the chart data being requested + :param dataframe: DataFrame with the analyzed data for the chart + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return: List of AnnotationType objects + """ + annotations = [] + while start_dt < end_date: + start_dt += timedelta(hours=1) + if start_dt.hour in (8, 15): + annotations.append( + { + "type": "area", + "label": "Trade open and close hours", + "start": start_dt, + "end": start_dt + timedelta(hours=1), + # Omitting y_start and y_end will result in a vertical area spanning the whole height of the main Chart + "color": "rgba(133, 133, 133, 0.4)", + } + ) + + return annotations + +``` + +Entries will be validated, and won't be passed to the UI if they don't correspond to the expected schema and will log an error if they don't. + +!!! Warning "Many annotations" + Using too many annotations can cause the UI to hang, especially when plotting large amounts of historic data. + Use the annotation feature with care. + +### Plot annotations example + +![FreqUI - plot Annotations](assets/freqUI-chart-annotations-dark.png#only-dark) +![FreqUI - plot Annotations](assets/freqUI-chart-annotations-light.png#only-light) + +??? Info "Code used for the plot above" + This is an example code and should be treated as such. + + ``` python + # Default imports + + class AwesomeStrategy(IStrategy): + def plot_annotations( + self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs + ) -> list[AnnotationType]: + annotations = [] + while start_dt < end_date: + start_dt += timedelta(hours=1) + if (start_dt.hour % 4) == 0: + mark_areas.append( + { + "type": "area", + "label": "4h", + "start": start_dt, + "end": start_dt + timedelta(hours=1), + "color": "rgba(133, 133, 133, 0.4)", + } + ) + elif (start_dt.hour % 2) == 0: + price = dataframe.loc[dataframe["date"] == start_dt, ["close"]].mean() + mark_areas.append( + { + "type": "area", + "label": "2h", + "start": start_dt, + "end": start_dt + timedelta(hours=1), + "y_end": price * 1.01, + "y_start": price * 0.99, + "color": "rgba(0, 255, 0, 0.4)", + } + ) + + return annotations + + ``` diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 1220db492..6c09c4cfc 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -1068,7 +1068,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. ``` python from freqtrade.persistence import Trade from datetime import timedelta, datetime, timezone -# Put the above lines a the top of the strategy file, next to all the other imports +# Put the above lines at the top of the strategy file, next to all the other imports # -------- # Within populate indicators (or populate_entry_trend): diff --git a/docs/stylesheets/ft.extra.css b/docs/stylesheets/ft.extra.css index 930463ca8..398610d4f 100644 --- a/docs/stylesheets/ft.extra.css +++ b/docs/stylesheets/ft.extra.css @@ -19,3 +19,31 @@ #available-endpoints ~ .md-typeset__scrollwrap .md-typeset__table th:first-of-type { width: 35% !important; } + + +.md-typeset .md-button--sm { + padding: 0.2em 1em; + font-size: 12px; + font-weight: 600; + background-color: #f6f8fa; + color: #24292f; + border: 1px solid #d0d7de; + border-radius: 0.25em; + text-decoration: none; + display: inline-block; + transition: all 0.2s ease; + cursor: pointer; +} + +.md-typeset .md-button--sm:hover { + background-color: #e5eaee; + border-color: #d1d9e0; + text-decoration: none; + color: #24292f; +} + +.md-typeset .md-button--sm:active { + background-color: #ebecf0; + border-color: #afb8c1; + box-shadow: inset 0 1px 0 rgba(175, 184, 193, 0.2); +} diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index a7a27f150..22fc94783 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -188,7 +188,7 @@ You can create your own keyboard in `config.json`: !!! Note "Supported Commands" Only the following commands are allowed. Command arguments are not supported! - `/start`, `/pause`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/edge`, `/help`, `/version`, `/marketdir` + `/start`, `/pause`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/help`, `/version`, `/marketdir` ## Telegram commands @@ -229,6 +229,7 @@ official commands. You can ask at any moment for help with `/help`. | `/cancel_open_order | /coo ` | Cancel an open order for a trade. | **Metrics** | | `/profit []` | Display a summary of your profit/loss from close trades and some stats about your performance, over the last n days (all trades by default) +| `/profit_[long|short] []` | Display a summary of your profit/loss from close trades in one direction and some stats about your performance, over the last n days (all trades by default) | `/performance` | Show performance of each finished trade grouped by pair | `/balance` | Show bot managed balance per currency | `/balance full` | Show account balance per currency @@ -240,7 +241,6 @@ official commands. You can ask at any moment for help with `/help`. | `/entries` | Shows Wins / losses by Exit reason as well as Avg. holding durations for buys and sells | `/whitelist [sorted] [baseonly]` | Show the current whitelist. Optionally display in alphabetical order and/or with just the base currency of each pairing. | `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist. -| `/edge` | Show validated pairs by Edge if it is enabled. ## Telegram commands in action @@ -310,6 +310,8 @@ current max ### /profit +Also available as `/profit_long` and `/profit_short` to show profit for long or short trades only. + Return a summary of your profit/loss and performance. > **ROI:** Close trades @@ -451,21 +453,6 @@ Use `/reload_config` to reset the blacklist. > Using blacklist `StaticPairList` with 2 pairs >`DODGE/BTC`, `HOT/BTC`. -### /edge - -Shows pairs validated by Edge along with their corresponding win-rate, expectancy and stoploss values. - -> **Edge only validated following pairs:** -``` -Pair Winrate Expectancy Stoploss --------- --------- ------------ ---------- -DOCK/ETH 0.522727 0.881821 -0.03 -PHX/ETH 0.677419 0.560488 -0.03 -HOT/ETH 0.733333 0.490492 -0.03 -HC/ETH 0.588235 0.280988 -0.02 -ARDR/ETH 0.366667 0.143059 -0.01 -``` - ### /version > **Version:** `0.14.3` diff --git a/docs/trade-object.md b/docs/trade-object.md index 26f5e9131..9843d8524 100644 --- a/docs/trade-object.md +++ b/docs/trade-object.md @@ -25,6 +25,7 @@ The following attributes / properties are available for each individual trade - | `close_date_utc` | datetime | Timestamp when trade was closed - in UTC. | | `close_profit` | float | Relative profit at the time of trade closure. `0.01` == 1% | | `close_profit_abs` | float | Absolute profit (in stake currency) at the time of trade closure. | +| `realized_profit` | float | Absolute already realized profit (in stake currency) while the trade is still open. | | `leverage` | float | Leverage used for this trade - defaults to 1.0 in spot markets. | | `enter_tag` | string | Tag provided on entry via the `enter_tag` column in the dataframe. | | `is_short` | boolean | True for short trades, False otherwise. | @@ -133,15 +134,17 @@ Most properties here can be None as they are dependent on the exchange response. |------------|-------------|-------------| | `trade` | Trade | Trade object this order is attached to | | `ft_pair` | string | Pair this order is for | -| `ft_is_open` | boolean | is the order filled? | +| `ft_is_open` | boolean | is the order still open? | | `order_type` | string | Order type as defined on the exchange - usually market, limit or stoploss | -| `status` | string | Status as defined by ccxt. Usually open, closed, expired or canceled | -| `side` | string | Buy or Sell | +| `status` | string | Status as defined by [ccxt's order structure](https://docs.ccxt.com/#/README?id=order-structure). Usually open, closed, expired, canceled or rejected | +| `side` | string | buy or sell | | `price` | float | Price the order was placed at | | `average` | float | Average price the order filled at | | `amount` | float | Amount in base currency | -| `filled` | float | Filled amount (in base currency) | -| `remaining` | float | Remaining amount | +| `filled` | float | Filled amount (in base currency) (use `safe_filled` instead) | +| `safe_filled` | float | Filled amount (in base currency) - guaranteed to not be None | +| `remaining` | float | Remaining amount (use `safe_remaining` instead) | +| `safe_remaining` | float | Remaining amount - either taken from the exchange or calculated. | | `cost` | float | Cost of the order - usually average * filled (*Exchange dependent on futures, may contain the cost with or without leverage and may be in contracts.*) | | `stake_amount` | float | Stake amount used for this order. *Added in 2023.7.* | | `stake_amount_filled` | float | Filled Stake amount used for this order. *Added in 2024.11.* | diff --git a/docs/updating.md b/docs/updating.md index 5841d205a..5ffd9bd2c 100644 --- a/docs/updating.md +++ b/docs/updating.md @@ -42,7 +42,3 @@ freqtrade install-ui Update-problems usually come missing dependencies (you didn't follow the above instructions) - or from updated dependencies, which fail to install (for example TA-lib). Please refer to the corresponding installation sections (common problems linked below) - -Common problems and their solutions: - -* [ta-lib update on windows](windows_installation.md#2-install-ta-lib) diff --git a/docs/utils.md b/docs/utils.md index 335785539..651dcb9d1 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -1,6 +1,6 @@ # Utility Subcommands -Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section. +Besides the Live-Trade and Dry-Run run modes, the `backtesting` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section. ## Create userdir diff --git a/docs/webhook-config.md b/docs/webhook-config.md index 9125ff361..6adf5da21 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -117,9 +117,9 @@ Different payloads can be configured for different events. Not all fields are ne ## Webhook Message types -### Entry +### Entry / Entry fill -The fields in `webhook.entry` are filled when the bot executes a long/short. Parameters are filled using string.format. +The fields in `webhook.entry` and `webhook.entry_fill` are filled when the bot places a long/short Order to increase a position, or when that order fills respectively. Parameters are filled using string.format. Possible parameters are: * `trade_id` @@ -162,31 +162,9 @@ Possible parameters are: * `current_rate` * `enter_tag` -### Entry fill +### Exit / Exit fill -The fields in `webhook.entry_fill` are filled when the bot filled a long/short order. Parameters are filled using string.format. -Possible parameters are: - -* `trade_id` -* `exchange` -* `pair` -* `direction` -* `leverage` -* `open_rate` -* `amount` -* `open_date` -* `stake_amount` -* `stake_currency` -* `base_currency` -* `quote_currency` -* `fiat_currency` -* `order_type` -* `current_rate` -* `enter_tag` - -### Exit - -The fields in `webhook.exit` are filled when the bot exits a trade. Parameters are filled using string.format. +The fields in `webhook.exit` and `webhook.exit_fill` are filled when the bot places an exit order, or when that exit order fills respectively. Parameters are filled using string.format. Possible parameters are: * `trade_id` @@ -195,34 +173,9 @@ Possible parameters are: * `direction` * `leverage` * `gain` -* `limit` * `amount` * `open_rate` -* `profit_amount` -* `profit_ratio` -* `stake_currency` -* `base_currency` -* `quote_currency` -* `fiat_currency` -* `exit_reason` -* `order_type` -* `open_date` -* `close_date` - -### Exit fill - -The fields in `webhook.exit_fill` are filled when the bot fills a exit order (closes a Trade). Parameters are filled using string.format. -Possible parameters are: - -* `trade_id` -* `exchange` -* `pair` -* `direction` -* `leverage` -* `gain` * `close_rate` -* `amount` -* `open_rate` * `current_rate` * `profit_amount` * `profit_ratio` @@ -230,10 +183,14 @@ Possible parameters are: * `base_currency` * `quote_currency` * `fiat_currency` +* `enter_tag` * `exit_reason` * `order_type` * `open_date` * `close_date` +* `sub_trade` +* `is_final_exit` + ### Exit cancel @@ -246,7 +203,7 @@ Possible parameters are: * `direction` * `leverage` * `gain` -* `limit` +* `order_rate` * `amount` * `open_rate` * `current_rate` diff --git a/docs/windows_installation.md b/docs/windows_installation.md index c824ee5de..51facfb58 100644 --- a/docs/windows_installation.md +++ b/docs/windows_installation.md @@ -5,7 +5,7 @@ We **strongly** recommend that Windows users use [Docker](docker_quickstart.md) If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work. Otherwise, please follow the instructions below. -All instructions assume that python 3.10+ is installed and available. +All instructions assume that python 3.11+ is installed and available. ## Clone the git repository @@ -38,30 +38,6 @@ cd freqtrade !!! Hint Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Anaconda installation section](installation.md#installation-with-conda) in the documentation for more information. -### Install ta-lib - -Install ta-lib according to the [ta-lib documentation](https://github.com/TA-Lib/ta-lib-python#windows). - -As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), Freqtrade provides these dependencies (in the binary wheel format) for the latest 3 Python versions (3.10, 3.11 and 3.12) and for 64bit Windows. -These Wheels are also used by CI running on windows, and are therefore tested together with freqtrade. - -Other versions must be downloaded from the above link. - -``` powershell -cd \path\freqtrade -python -m venv .venv -.venv\Scripts\activate.ps1 -# optionally install ta-lib from wheel -# Eventually adjust the below filename to match the downloaded wheel -pip install --find-links build_helpers\ TA-Lib -U -pip install -r requirements.txt -pip install -e . -freqtrade -``` - -!!! Note "Use Powershell" - The above installation script assumes you're using powershell on a 64bit windows. - Commands for the legacy CMD windows console may differ. ### Error during installation on Windows diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 48852fd44..a65a4c98a 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -1,6 +1,6 @@ """Freqtrade bot""" -__version__ = "2025.4-dev" +__version__ = "2025.8-dev" if "dev" in __version__: from pathlib import Path diff --git a/freqtrade/__main__.py b/freqtrade/__main__.py index caa26ce0a..06dc49bbf 100755 --- a/freqtrade/__main__.py +++ b/freqtrade/__main__.py @@ -3,7 +3,7 @@ __main__.py for Freqtrade To launch Freqtrade as a module -> python -m freqtrade (with Python >= 3.10) +> python -m freqtrade (with Python >= 3.11) """ from freqtrade import main diff --git a/freqtrade/commands/analyze_commands.py b/freqtrade/commands/analyze_commands.py index d76abd1ef..e9140e82d 100644 --- a/freqtrade/commands/analyze_commands.py +++ b/freqtrade/commands/analyze_commands.py @@ -17,7 +17,7 @@ def start_analysis_entries_exits(args: dict[str, Any]) -> None: from freqtrade.data.entryexitanalysis import process_entry_exit_reasons # Initialize configuration - config = setup_utils_configuration(args, RunMode.BACKTEST) + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) logger.info("Starting freqtrade in analysis mode") diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 8eb13d25d..17d8f43d7 100755 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -54,9 +54,11 @@ ARGS_BACKTEST = [ "strategy_list", "export", "exportfilename", + "exportdirectory", "backtest_breakdown", "backtest_cache", "freqai_backtest_live_models", + "backtest_notes", ] ARGS_HYPEROPT = [ @@ -78,9 +80,10 @@ ARGS_HYPEROPT = [ "disableparamexport", "hyperopt_ignore_missing_space", "analyze_per_epoch", + "early_stop", ] -ARGS_EDGE = [*ARGS_COMMON_OPTIMIZE, "stoploss_range"] +ARGS_EDGE = [*ARGS_COMMON_OPTIMIZE] ARGS_LIST_STRATEGIES = [ "strategy_path", @@ -92,9 +95,14 @@ ARGS_LIST_FREQAIMODELS = ["freqaimodel_path", "print_one_column"] ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column"] -ARGS_BACKTEST_SHOW = ["exportfilename", "backtest_show_pair_list", "backtest_breakdown"] +ARGS_BACKTEST_SHOW = [ + "exportfilename", + "exportdirectory", + "backtest_show_pair_list", + "backtest_breakdown", +] -ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] +ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all", "trading_mode", "dex_exchanges"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] @@ -232,6 +240,7 @@ ARGS_HYPEROPT_SHOW = [ ARGS_ANALYZE_ENTRIES_EXITS = [ "exportfilename", + "exportdirectory", "analysis_groups", "enter_reason_list", "exit_reason_list", @@ -250,31 +259,33 @@ ARGS_STRATEGY_UPDATER = ["strategy_list", "strategy_path", "recursive_strategy_s ARGS_LOOKAHEAD_ANALYSIS = [ a for a in ARGS_BACKTEST - if a not in ("position_stacking", "backtest_cache", "backtest_breakdown") + if a not in ("position_stacking", "backtest_cache", "backtest_breakdown", "backtest_notes") ] + ["minimum_trade_amount", "targeted_trade_amount", "lookahead_analysis_exportfilename"] ARGS_RECURSIVE_ANALYSIS = ["timeframe", "timerange", "dataformat_ohlcv", "pairs", "startup_candle"] # Command level configs - keep at the bottom of the above definitions NO_CONF_REQURIED = [ + "backtest-filter", + "backtesting-show", "convert-data", "convert-trade-data", "download-data", - "list-timeframes", + "hyperopt-list", + "hyperopt-show", + "list-data", + "list-freqaimodels", + "list-hyperoptloss", "list-markets", "list-pairs", "list-strategies", - "list-freqaimodels", - "list-hyperoptloss", - "list-data", - "hyperopt-list", - "hyperopt-show", - "backtest-filter", + "list-timeframes", "plot-dataframe", "plot-profit", "show-trades", - "trades-to-ohlcv", + "install-ui", "strategy-updater", + "trades-to-ohlcv", ] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-strategy"] @@ -310,8 +321,6 @@ class Arguments: # (see https://bugs.python.org/issue16399) # Allow no-config for certain commands (like downloading / plotting) if "config" in parsed_arg and parsed_arg.config is None: - conf_required = "command" in parsed_arg and parsed_arg.command in NO_CONF_REQURIED - if "user_data_dir" in parsed_arg and parsed_arg.user_data_dir is not None: user_dir = parsed_arg.user_data_dir else: @@ -324,7 +333,9 @@ class Arguments: else: # Else use "config.json". cfgfile = Path.cwd() / DEFAULT_CONFIG - if cfgfile.is_file() or not conf_required: + conf_optional = "command" in parsed_arg and parsed_arg.command in NO_CONF_REQURIED + if cfgfile.is_file() or not conf_optional: + # Only inject config if the file exists, or if the config is required parsed_arg.config = [DEFAULT_CONFIG] return parsed_arg @@ -505,7 +516,9 @@ class Arguments: # Add edge subcommand edge_cmd = subparsers.add_parser( - "edge", help="Edge module.", parents=[_common_parser, _strategy_parser] + "edge", + help="Edge module. No longer part of Freqtrade", + parents=[_common_parser, _strategy_parser], ) edge_cmd.set_defaults(func=start_edge) self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 4e54930a2..4cb4f09ac 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -83,7 +83,8 @@ AVAILABLE_CLI_OPTIONS = { "-d", "--datadir", "--data-dir", - help="Path to directory with historical backtesting data.", + help="Path to the base directory of the exchange with historical backtesting data. " + "To see futures data, use trading-mode additionally.", metavar="PATH", ), "user_data_dir": Arg( @@ -198,17 +199,29 @@ AVAILABLE_CLI_OPTIONS = { "(so `backtest-data.json` becomes `backtest-data-SampleStrategy.json`", nargs="+", ), + "backtest_notes": Arg( + "--notes", + help="Add notes to the backtest results.", + metavar="TEXT", + ), "export": Arg( "--export", help="Export backtest results (default: trades).", choices=constants.EXPORT_OPTIONS, ), + "exportdirectory": Arg( + "--backtest-directory", + "--export-directory", + help="Directory to use for backtest results. " + "Example: `--export-directory=user_data/backtest_results/`. ", + metavar="PATH", + ), "exportfilename": Arg( - "--export-filename", "--backtest-filename", + "--export-filename", help="Use this filename for backtest results." - "Requires `--export` to be set as well. " - "Example: `--export-filename=user_data/backtest_results/backtest_today.json`", + "Example: `--backtest-filename=backtest_results_2020-09-27_16-20-48.json`. " + "Assumes either `user_data/backtest_results/` or `--export-directory` as base directory.", metavar="PATH", ), "disableparamexport": Arg( @@ -234,13 +247,6 @@ AVAILABLE_CLI_OPTIONS = { default=constants.BACKTEST_CACHE_DEFAULT, choices=constants.BACKTEST_CACHE_AGE, ), - # Edge - "stoploss_range": Arg( - "--stoplosses", - help="Defines a range of stoploss values against which edge will assess the strategy. " - 'The format is "min,max,step" (without any space). ' - "Example: `--stoplosses=-0.01,-0.1,-0.001`", - ), # Hyperopt "hyperopt": Arg( "--hyperopt", @@ -261,6 +267,13 @@ AVAILABLE_CLI_OPTIONS = { metavar="INT", default=constants.HYPEROPT_EPOCH, ), + "early_stop": Arg( + "--early-stop", + help="Early stop hyperopt if no improvement after (default: %(default)d) epochs.", + type=check_int_positive, + metavar="INT", + default=0, # 0 to disable by default + ), "spaces": Arg( "--spaces", help="Specify which parameters to hyperopt. Space-separated list.", @@ -363,6 +376,11 @@ AVAILABLE_CLI_OPTIONS = { help="Print all exchanges known to the ccxt library.", action="store_true", ), + "dex_exchanges": Arg( + "--dex-exchanges", + help="Print only DEX exchanges.", + action="store_true", + ), # List pairs / markets "list_pairs_all": Arg( "-a", diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 6a1ca819d..4bd2c0270 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -46,7 +46,18 @@ def start_list_exchanges(args: dict[str, Any]) -> None: table.add_column("Markets") table.add_column("Reason") + trading_mode = args.get("trading_mode", None) + dex_only = args.get("dex_exchanges", False) + for exchange in available_exchanges: + if trading_mode and not any( + a["trading_mode"] == trading_mode for a in exchange["trade_modes"] + ): + # If trading_mode is specified, only show exchanges that support it + continue + if dex_only and not exchange.get("dex", False): + # If dex_only is specified, only show DEX exchanges + continue name = Text(exchange["name"]) if exchange["supported"]: name.append(" (Supported)", style="italic") @@ -135,6 +146,9 @@ def start_list_strategies(args: dict[str, Any]) -> None: strategy_objs = StrategyResolver.search_all_objects( config, not args["print_one_column"], config.get("recursive_strategy_search", False) ) + if not strategy_objs: + logger.warning("No strategies found.") + return # Sort alphabetically strategy_objs = sorted(strategy_objs, key=lambda x: x["name"]) for obj in strategy_objs: diff --git a/freqtrade/commands/optimize_commands.py b/freqtrade/commands/optimize_commands.py index 9695a313b..7ddbf8af3 100644 --- a/freqtrade/commands/optimize_commands.py +++ b/freqtrade/commands/optimize_commands.py @@ -72,7 +72,7 @@ def start_backtesting_show(args: dict[str, Any]) -> None: from freqtrade.data.btanalysis import load_backtest_stats from freqtrade.optimize.optimize_reports import show_backtest_results, show_sorted_pairlist - results = load_backtest_stats(config["exportfilename"]) + results = load_backtest_stats(config["exportdirectory"], config["exportfilename"]) show_backtest_results(config, results) show_sorted_pairlist(config, results) @@ -129,15 +129,10 @@ def start_edge(args: dict[str, Any]) -> None: :param args: Cli args from Arguments() :return: None """ - from freqtrade.optimize.edge_cli import EdgeCli - - # Initialize configuration - config = setup_optimize_configuration(args, RunMode.EDGE) - logger.info("Starting freqtrade in Edge mode") - - # Initialize Edge object - edge_cli = EdgeCli(config) - edge_cli.start() + raise ConfigurationError( + "The Edge module has been deprecated in 2023.9 and removed in 2025.6. " + "All functionalities of edge have been removed." + ) def start_lookahead_analysis(args: dict[str, Any]) -> None: diff --git a/freqtrade/config_schema/config_schema.py b/freqtrade/config_schema/config_schema.py index 8b88e655a..8274c161b 100644 --- a/freqtrade/config_schema/config_schema.py +++ b/freqtrade/config_schema/config_schema.py @@ -26,6 +26,8 @@ __MESSAGE_TYPE_DICT: dict[str, dict[str, str]] = {x: {"type": "object"} for x in __IN_STRATEGY = "\nUsually specified in the strategy and missing in the configuration." +__VIA_ENV = "Recommended to be set via environment variable" + CONF_SCHEMA = { "type": "object", "properties": { @@ -155,6 +157,16 @@ CONF_SCHEMA = { "description": f"Offset for profit exit. {__IN_STRATEGY}", "type": "number", }, + "recursive_strategy_search": { + "description": "Enable recursive strategy search.", + "type": "boolean", + }, + "user_data_dir": { + "description": "Path to the user data directory.", + }, + "datadir": { + "description": "Path to the data directory.", + }, "fee": { "description": "Trading fee percentage. Can help to simulate slippage in backtesting", "type": "number", @@ -421,10 +433,6 @@ CONF_SCHEMA = { "description": "Exchange configuration.", "$ref": "#/definitions/exchange", }, - "edge": { - "description": "Edge configuration.", - "$ref": "#/definitions/edge", - }, "log_config": { "description": "Logging configuration.", "$ref": "#/definitions/logging", @@ -445,6 +453,7 @@ CONF_SCHEMA = { "pairlists": { "description": "Configuration for pairlists.", "type": "array", + "minItems": 1, "items": { "type": "object", "properties": { @@ -468,11 +477,16 @@ CONF_SCHEMA = { }, "token": {"description": "Telegram bot token.", "type": "string"}, "chat_id": { - "description": "Telegram chat or group ID", + "description": ( + f"Telegram chat or group ID. {__VIA_ENV} FREQTRADE__TELEGRAM__CHAT_ID" + ), "type": "string", }, "topic_id": { - "description": "Telegram topic ID - only applicable for group chats", + "description": ( + "Telegram topic ID - only applicable for group chats. " + f"{__VIA_ENV} FREQTRADE__TELEGRAM__TOPIC_ID" + ), "type": "string", }, "authorized_users": { @@ -574,8 +588,11 @@ CONF_SCHEMA = { "description": "Webhook settings.", "type": "object", "properties": { - "enabled": {"type": "boolean"}, - "url": {"type": "string"}, + "enabled": {"description": "Enable webhook notifications.", "type": "boolean"}, + "url": { + "description": f"Webhook URL. {__VIA_ENV} FREQTRADE__WEBHOOK__URL", + "type": "string", + }, "format": {"type": "string", "enum": WEBHOOK_FORMAT_OPTIONS, "default": "form"}, "retries": {"type": "integer", "minimum": 0}, "retry_delay": {"type": "number", "minimum": 0}, @@ -587,7 +604,12 @@ CONF_SCHEMA = { "type": "object", "properties": { "enabled": {"type": "boolean"}, - "webhook_url": {"type": "string"}, + "webhook_url": { + "description": ( + f"Discord webhook URL. {__VIA_ENV} FREQTRADE__DISCORD__WEBHOOK_URL" + ), + "type": "string", + }, "exit_fill": { "type": "array", "items": {"type": "object"}, @@ -806,27 +828,57 @@ CONF_SCHEMA = { "type": "object", "properties": { "name": {"description": "Name of the exchange.", "type": "string"}, - "enable_ws": { - "description": "Enable WebSocket connections to the exchange.", - "type": "boolean", - "default": True, - }, "key": { - "description": "API key for the exchange.", + "description": ( + f"API key for the exchange. {__VIA_ENV} FREQTRADE__EXCHANGE__KEY" + ), "type": "string", "default": "", }, "secret": { - "description": "API secret for the exchange.", + "description": ( + f"API secret for the exchange. {__VIA_ENV} FREQTRADE__EXCHANGE__SECRET" + ), "type": "string", "default": "", }, "password": { - "description": "Password for the exchange, if required.", + "description": ( + "Password for the exchange, if required. " + f"{__VIA_ENV} FREQTRADE__EXCHANGE__PASSWORD" + ), "type": "string", "default": "", }, - "uid": {"description": "User ID for the exchange, if required.", "type": "string"}, + "uid": { + "description": ( + "User ID for the exchange, if required. " + f"{__VIA_ENV} FREQTRADE__EXCHANGE__UID" + ), + "type": "string", + }, + "account_id": { + "description": ( + "Account ID for the exchange, if required. " + f"{__VIA_ENV} FREQTRADE__EXCHANGE__ACCOUNT_ID" + ), + "type": "string", + }, + "wallet_address": { + "description": ( + "Wallet address for the exchange, if required. " + "Usually used by DEX exchanges. " + f"{__VIA_ENV} FREQTRADE__EXCHANGE__WALLET_ADDRESS" + ), + "type": "string", + }, + "private_key": { + "description": ( + "Private key for the exchange, if required. Usually used by DEX exchanges. " + f"{__VIA_ENV} FREQTRADE__EXCHANGE__PRIVATE_KEY" + ), + "type": "string", + }, "pair_whitelist": { "description": "List of whitelisted trading pairs.", "type": "array", @@ -847,6 +899,11 @@ CONF_SCHEMA = { "type": "boolean", "default": False, }, + "enable_ws": { + "description": "Enable WebSocket connections to the exchange.", + "type": "boolean", + "default": True, + }, "unknown_fee_rate": { "description": "Fee rate for unknown markets.", "type": "number", @@ -863,30 +920,22 @@ CONF_SCHEMA = { }, "ccxt_config": {"description": "CCXT configuration settings.", "type": "object"}, "ccxt_async_config": { - "description": "CCXT asynchronous configuration settings.", + "description": ( + "CCXT asynchronous configuration settings." + "Usually ccxt_config should be used instead." + ), + "type": "object", + }, + "ccxt_sync_config": { + "description": ( + "CCXT synchronous configuration settings. " + "Usually ccxt_config should be used instead." + ), "type": "object", }, }, "required": ["name"], }, - "edge": { - "type": "object", - "properties": { - "enabled": {"type": "boolean"}, - "process_throttle_secs": {"type": "integer", "minimum": 600}, - "calculate_since_number_of_days": {"type": "integer"}, - "allowed_risk": {"type": "number"}, - "stoploss_range_min": {"type": "number"}, - "stoploss_range_max": {"type": "number"}, - "stoploss_range_step": {"type": "number"}, - "minimum_winrate": {"type": "number"}, - "minimum_expectancy": {"type": "number"}, - "min_trade_number": {"type": "number"}, - "max_trade_duration_minute": {"type": "integer"}, - "remove_pumps": {"type": "boolean"}, - }, - "required": ["process_throttle_secs", "allowed_risk"], - }, "logging": { "type": "object", "properties": { @@ -1333,6 +1382,7 @@ SCHEMA_TRADE_REQUIRED = [ "entry_pricing", "stoploss", "minimal_roi", + "pairlists", "internals", "dataformat_ohlcv", "dataformat_trades", @@ -1342,6 +1392,7 @@ SCHEMA_BACKTEST_REQUIRED = [ "exchange", "stake_currency", "stake_amount", + "pairlists", "dry_run_wallet", "dataformat_ohlcv", "dataformat_trades", diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index aa06a70c9..cf8479919 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,6 +1,6 @@ # flake8: noqa: F401 -from freqtrade.configuration.config_secrets import sanitize_config +from freqtrade.configuration.config_secrets import remove_exchange_credentials, sanitize_config from freqtrade.configuration.config_setup import setup_utils_configuration from freqtrade.configuration.config_validation import validate_config_consistency from freqtrade.configuration.configuration import Configuration diff --git a/freqtrade/configuration/config_secrets.py b/freqtrade/configuration/config_secrets.py index 2bb0d97f8..797caba23 100644 --- a/freqtrade/configuration/config_secrets.py +++ b/freqtrade/configuration/config_secrets.py @@ -1,6 +1,27 @@ from copy import deepcopy -from freqtrade.constants import Config +from freqtrade.constants import Config, ExchangeConfig + + +_SENSITIVE_KEYS = [ + "exchange.key", + "exchange.api_key", + "exchange.apiKey", + "exchange.secret", + "exchange.password", + "exchange.uid", + "exchange.account_id", + "exchange.accountId", + "exchange.wallet_address", + "exchange.walletAddress", + "exchange.private_key", + "exchange.privateKey", + "telegram.token", + "telegram.chat_id", + "discord.webhook_url", + "api_server.password", + "webhook.url", +] def sanitize_config(config: Config, *, show_sensitive: bool = False) -> Config: @@ -12,26 +33,8 @@ def sanitize_config(config: Config, *, show_sensitive: bool = False) -> Config: """ if show_sensitive: return config - keys_to_remove = [ - "exchange.key", - "exchange.api_key", - "exchange.apiKey", - "exchange.secret", - "exchange.password", - "exchange.uid", - "exchange.account_id", - "exchange.accountId", - "exchange.wallet_address", - "exchange.walletAddress", - "exchange.private_key", - "exchange.privateKey", - "telegram.token", - "telegram.chat_id", - "discord.webhook_url", - "api_server.password", - ] config = deepcopy(config) - for key in keys_to_remove: + for key in _SENSITIVE_KEYS: if "." in key: nested_keys = key.split(".") nested_config = config @@ -44,3 +47,21 @@ def sanitize_config(config: Config, *, show_sensitive: bool = False) -> Config: config[key] = "REDACTED" return config + + +def remove_exchange_credentials(exchange_config: ExchangeConfig, dry_run: bool) -> None: + """ + Removes exchange keys from the configuration and specifies dry-run + Used for backtesting / hyperopt and utils. + Modifies the input dict! + :param exchange_config: Exchange configuration + :param dry_run: If True, remove sensitive keys from the exchange configuration + """ + if not dry_run: + return + + for key in [k for k in _SENSITIVE_KEYS if k.startswith("exchange.")]: + if "." in key: + key1 = key.removeprefix("exchange.") + if key1 in exchange_config: + exchange_config[key1] = "" diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 07a109bd7..4c14d3d4b 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -66,7 +66,8 @@ def validate_config_schema(conf: dict[str, Any], preliminary: bool = False) -> d return conf except ValidationError as e: logger.critical(f"Invalid configuration. Reason: {e}") - raise ValidationError(best_match(Draft4Validator(conf_schema).iter_errors(conf)).message) + result = best_match(FreqtradeValidator(conf_schema).iter_errors(conf)) + raise ConfigurationError(result.message) def validate_config_consistency(conf: dict[str, Any], *, preliminary: bool = False) -> None: @@ -99,14 +100,12 @@ def validate_config_consistency(conf: dict[str, Any], *, preliminary: bool = Fal def _validate_unlimited_amount(conf: dict[str, Any]) -> None: """ - If edge is disabled, either max_open_trades or stake_amount need to be set. + Either max_open_trades or stake_amount need to be set. :raise: ConfigurationError if config validation failed """ if ( - not conf.get("edge", {}).get("enabled") - and conf.get("max_open_trades") == float("inf") - and conf.get("stake_amount") == UNLIMITED_STAKE_AMOUNT - ): + conf.get("max_open_trades") == float("inf") or conf.get("max_open_trades") == -1 + ) and conf.get("stake_amount") == UNLIMITED_STAKE_AMOUNT: raise ConfigurationError("`max_open_trades` and `stake_amount` cannot both be unlimited.") @@ -164,12 +163,9 @@ def _validate_edge(conf: dict[str, Any]) -> None: Edge and Dynamic whitelist should not both be enabled, since edge overrides dynamic whitelists. """ - if not conf.get("edge", {}).get("enabled"): - return - - if not conf.get("use_exit_signal", True): + if conf.get("edge", {}).get("enabled"): raise ConfigurationError( - "Edge requires `use_exit_signal` to be True, otherwise no sells will happen." + "Edge is no longer supported and has been removed from Freqtrade with 2025.6." ) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 6db5f2f86..7bf448335 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -2,7 +2,6 @@ This module contains the configuration class """ -import ast import logging import warnings from collections.abc import Callable @@ -19,10 +18,7 @@ from freqtrade.constants import Config from freqtrade.enums import ( NON_UTIL_MODES, TRADE_MODES, - CandleType, - MarginMode, RunMode, - TradingMode, ) from freqtrade.exceptions import OperationalException from freqtrade.loggers import setup_logging @@ -88,9 +84,6 @@ class Configuration: if "internals" not in config: config["internals"] = {} - if "pairlists" not in config: - config["pairlists"] = [] - # Keep a copy of the original configuration file config["original_config"] = deepcopy(config) @@ -216,13 +209,28 @@ class Configuration: config.update({"datadir": create_datadir(config, self.args.get("datadir"))}) logger.info("Using data directory: %s ...", config.get("datadir")) + self._args_to_config( + config, argname="exportdirectory", logstring="Using {} as backtest directory ..." + ) + if self.args.get("exportfilename"): self._args_to_config( config, argname="exportfilename", logstring="Storing backtest results to {} ..." ) config["exportfilename"] = Path(config["exportfilename"]) - else: - config["exportfilename"] = config["user_data_dir"] / "backtest_results" + if config.get("exportdirectory") and Path(config["exportdirectory"]).is_dir(): + logger.warning( + "DEPRECATED: Using `--export-filename` with directories is deprecated, " + "use `--backtest-directory` instead." + ) + if config.get("exportdirectory") is None: + # Fallback - assign export-directory directly. + config["exportdirectory"] = config["exportfilename"] + if not config.get("exportdirectory"): + config["exportdirectory"] = config["user_data_dir"] / "backtest_results" + if not config.get("exportfilename"): + config["exportfilename"] = None + config["exportdirectory"] = Path(config["exportdirectory"]) if self.args.get("show_sensitive"): logger.warning( @@ -310,17 +318,10 @@ class Configuration: ("backtest_cache", "Parameter --cache={} detected ..."), ("disableparamexport", "Parameter --disableparamexport detected: {} ..."), ("freqai_backtest_live_models", "Parameter --freqai-backtest-live-models detected ..."), + ("backtest_notes", "Parameter --notes detected: {} ..."), ] self._args_to_config_loop(config, configurations) - # Edge section: - if self.args.get("stoploss_range"): - txt_range = ast.literal_eval(self.args["stoploss_range"]) - config["edge"].update({"stoploss_range_min": txt_range[0]}) - config["edge"].update({"stoploss_range_max": txt_range[1]}) - config["edge"].update({"stoploss_range_step": txt_range[2]}) - logger.info("Parameter --stoplosses detected: %s ...", self.args["stoploss_range"]) - # Hyperopt section configurations = [ @@ -334,6 +335,19 @@ class Configuration: ("print_all", "Parameter --print-all detected ..."), ] self._args_to_config_loop(config, configurations) + es_epochs = self.args.get("early_stop", 0) + if es_epochs > 0: + if es_epochs < 20: + logger.warning( + f"Early stop epochs {es_epochs} lower than 20. It will be replaced with 20." + ) + config.update({"early_stop": 20}) + else: + config.update({"early_stop": self.args["early_stop"]}) + logger.info( + f"Parameter --early-stop detected ... Will early stop hyperopt if no improvement " + f"after {config.get('early_stop')} epochs ..." + ) configurations = [ ("print_json", "Parameter --print-json detected ..."), @@ -393,11 +407,6 @@ class Configuration: self._args_to_config( config, argname="trading_mode", logstring="Detected --trading-mode: {}" ) - config["candle_type_def"] = CandleType.get_default( - config.get("trading_mode", "spot") or "spot" - ) - config["trading_mode"] = TradingMode(config.get("trading_mode", "spot") or "spot") - config["margin_mode"] = MarginMode(config.get("margin_mode", "") or "") self._args_to_config( config, argname="candle_types", logstring="Detected --candle-types: {}" ) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 202c317de..47842d04b 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -159,16 +159,6 @@ def process_temporary_deprecated_settings(config: Config) -> None: process_removed_setting( config, "ask_strategy", "ignore_roi_if_buy_signal", None, "ignore_roi_if_entry_signal" ) - if config.get("edge", {}).get( - "enabled", False - ) and "capital_available_percentage" in config.get("edge", {}): - raise ConfigurationError( - "DEPRECATED: " - "Using 'edge.capital_available_percentage' has been deprecated in favor of " - "'tradable_balance_ratio'. Please migrate your configuration to " - "'tradable_balance_ratio' and remove 'capital_available_percentage' " - "from the edge configuration." - ) if "ticker_interval" in config: raise ConfigurationError( "DEPRECATED: 'ticker_interval' detected. " diff --git a/freqtrade/configuration/environment_vars.py b/freqtrade/configuration/environment_vars.py index 8a825f59b..e5eb031e7 100644 --- a/freqtrade/configuration/environment_vars.py +++ b/freqtrade/configuration/environment_vars.py @@ -43,15 +43,27 @@ def _flat_vars_to_nested_dict(env_dict: dict[str, Any], prefix: str) -> dict[str :return: Nested dict based on available and relevant variables. """ no_convert = ["CHAT_ID", "PASSWORD"] + ccxt_config_keys = ["ccxt_config", "ccxt_sync_config", "ccxt_async_config"] relevant_vars: dict[str, Any] = {} for env_var, val in sorted(env_dict.items()): if env_var.startswith(prefix): logger.info(f"Loading variable '{env_var}'") key = env_var.replace(prefix, "") - for k in reversed(key.split("__")): + key_parts = key.split("__") + logger.info("Key parts: %s", key_parts) + + # Check if any ccxt config key is in the key parts + preserve_case = key_parts[0].lower() == "exchange" and any( + ccxt_key in [part.lower() for part in key_parts] for ccxt_key in ccxt_config_keys + ) + + for i, k in enumerate(reversed(key_parts)): + # Preserve case for the final key if ccxt config is involved + key_name = k if preserve_case and i == 0 else k.lower() + val = { - k.lower(): ( + key_name: ( _get_var_typed(val) if not isinstance(val, dict) and k not in no_convert else val diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 30860cd63..9a2b47504 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -4,9 +4,8 @@ This module contains the argument manager class import logging import re -from datetime import datetime, timezone - -from typing_extensions import Self +from datetime import UTC, datetime +from typing import Self from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.exceptions import ConfigurationError @@ -151,9 +150,7 @@ class TimeRange: starts = rvals[index] if stype[0] == "date" and len(starts) == 8: start = int( - datetime.strptime(starts, "%Y%m%d") - .replace(tzinfo=timezone.utc) - .timestamp() + datetime.strptime(starts, "%Y%m%d").replace(tzinfo=UTC).timestamp() ) elif len(starts) == 13: start = int(starts) // 1000 @@ -164,9 +161,7 @@ class TimeRange: stops = rvals[index] if stype[1] == "date" and len(stops) == 8: stop = int( - datetime.strptime(stops, "%Y%m%d") - .replace(tzinfo=timezone.utc) - .timestamp() + datetime.strptime(stops, "%Y%m%d").replace(tzinfo=UTC).timestamp() ) elif len(stops) == 13: stop = int(stops) // 1000 diff --git a/freqtrade/constants.py b/freqtrade/constants.py index a5c07ae1f..807b0888b 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -71,6 +71,19 @@ DEFAULT_DATAFRAME_COLUMNS = ["date", "open", "high", "low", "close", "volume"] # it has wide consequences for stored trades files DEFAULT_TRADES_COLUMNS = ["timestamp", "id", "type", "side", "price", "amount", "cost"] DEFAULT_ORDERFLOW_COLUMNS = ["level", "bid", "ask", "delta"] +ORDERFLOW_ADDED_COLUMNS = [ + "trades", + "orderflow", + "imbalances", + "stacked_imbalances_bid", + "stacked_imbalances_ask", + "max_delta", + "min_delta", + "bid", + "ask", + "delta", + "total_trades", +] TRADES_DTYPES = { "timestamp": "int64", "id": "str", diff --git a/freqtrade/data/btanalysis/__init__.py b/freqtrade/data/btanalysis/__init__.py new file mode 100644 index 000000000..2253a45ae --- /dev/null +++ b/freqtrade/data/btanalysis/__init__.py @@ -0,0 +1,29 @@ +# flake8: noqa: F401 +from .bt_fileutils import ( + BT_DATA_COLUMNS, + delete_backtest_result, + extract_trades_of_period, + find_existing_backtest_stats, + get_backtest_market_change, + get_backtest_result, + get_backtest_resultlist, + get_latest_backtest_filename, + get_latest_hyperopt_file, + get_latest_hyperopt_filename, + get_latest_optimize_filename, + load_and_merge_backtest_result, + load_backtest_analysis_data, + load_backtest_data, + load_backtest_metadata, + load_backtest_stats, + load_file_from_zip, + load_trades, + load_trades_from_db, + trade_list_to_dataframe, + update_backtest_metadata, +) +from .historic_precision import get_tick_size_over_time +from .trade_parallelism import ( + analyze_trade_parallelism, + evaluate_result_multi, +) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis/bt_fileutils.py similarity index 81% rename from freqtrade/data/btanalysis.py rename to freqtrade/data/btanalysis/bt_fileutils.py index 1d580a7dd..ea9c993fb 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis/bt_fileutils.py @@ -5,7 +5,7 @@ Helpers when analyzing backtest data import logging import zipfile from copy import copy -from datetime import datetime, timezone +from datetime import UTC, datetime from io import BytesIO, StringIO from pathlib import Path from typing import Any, Literal @@ -13,7 +13,7 @@ from typing import Any, Literal import numpy as np import pandas as pd -from freqtrade.constants import LAST_BT_RESULT_FN, IntOrInf +from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.exceptions import ConfigurationError, OperationalException from freqtrade.ft_types import BacktestHistoryEntryType, BacktestResultType from freqtrade.misc import file_dump_json, json_load @@ -52,6 +52,7 @@ BT_DATA_COLUMNS = [ "open_timestamp", "close_timestamp", "orders", + "funding_fees", ] @@ -154,33 +155,55 @@ def load_backtest_metadata(filename: Path | str) -> dict[str, Any]: raise OperationalException("Unexpected error while loading backtest metadata.") from e -def load_backtest_stats(filename: Path | str) -> BacktestResultType: +def _normalize_filename(file_or_directory: Path | str, filename: Path | str | None) -> Path: + """ + Normalize the filename by ensuring it is a Path object. + :param file_or_directory: The directory or file to normalize. + :param filename: The filename to normalize. + :return: A Path object representing the normalized filename. + """ + if isinstance(file_or_directory, str): + file_or_directory = Path(file_or_directory) + if file_or_directory.is_dir(): + if not filename: + filename = get_latest_backtest_filename(file_or_directory) + if Path(filename).is_file(): + fn = Path(filename) + else: + fn = file_or_directory / filename + else: + fn = file_or_directory + return fn + + +def load_backtest_stats( + file_or_directory: Path | str, filename: Path | str | None = None +) -> BacktestResultType: """ Load backtest statistics file. - :param filename: pathlib.Path object, or string pointing to the file. + :param file_or_directory: pathlib.Path object, or string pointing to the directory, + or absolute/relative path to the backtest results file. + :param filename: Optional filename to load from (if different from the main filename). + Only valid when loading from a directory. :return: a dictionary containing the resulting file. """ - if isinstance(filename, str): - filename = Path(filename) - if filename.is_dir(): - filename = filename / get_latest_backtest_filename(filename) - if not filename.is_file(): - raise ValueError(f"File {filename} does not exist.") - logger.info(f"Loading backtest result from {filename}") + fn = _normalize_filename(file_or_directory, filename) - if filename.suffix == ".zip": + if not fn.is_file(): + raise ValueError(f"File or directory {fn} does not exist.") + logger.info(f"Loading backtest result from {fn}") + + if fn.suffix == ".zip": data = json_load( - StringIO( - load_file_from_zip(filename, filename.with_suffix(".json").name).decode("utf-8") - ) + StringIO(load_file_from_zip(fn, fn.with_suffix(".json").name).decode("utf-8")) ) else: - with filename.open() as file: + with fn.open() as file: data = json_load(file) # Legacy list format does not contain metadata. if isinstance(data, dict): - data["metadata"] = load_backtest_metadata(filename) + data["metadata"] = load_backtest_metadata(fn) return data @@ -323,7 +346,7 @@ def find_existing_backtest_stats( if min_backtest_date is not None: backtest_date = strategy_metadata["backtest_start_time"] - backtest_date = datetime.fromtimestamp(backtest_date, tz=timezone.utc) + backtest_date = datetime.fromtimestamp(backtest_date, tz=UTC) if backtest_date < min_backtest_date: # Do not use a cached result for this strategy as first result is too old. del run_ids[strategy_name] @@ -356,19 +379,26 @@ def _load_backtest_data_df_compatibility(df: pd.DataFrame) -> pd.DataFrame: df["max_stake_amount"] = df["stake_amount"] if "orders" not in df.columns: df["orders"] = None + if "funding_fees" not in df.columns: + df["funding_fees"] = 0.0 return df -def load_backtest_data(filename: Path | str, strategy: str | None = None) -> pd.DataFrame: +def load_backtest_data( + file_or_directory: Path | str, strategy: str | None = None, filename: Path | str | None = None +) -> pd.DataFrame: """ - Load backtest data file. - :param filename: pathlib.Path object, or string pointing to a file or directory + Load backtest data file, returns a dataframe with the individual trades. + :param file_or_directory: pathlib.Path object, or string pointing to the directory, + or absolute/relative path to the backtest results file. :param strategy: Strategy to load - mainly relevant for multi-strategy backtests Can also serve as protection to load the correct result. + :param filename: Optional filename to load from (if different from the main filename). + Only valid when loading from a directory. :return: a dataframe with the analysis results :raise: ValueError if loading goes wrong. """ - data = load_backtest_stats(filename) + data = load_backtest_stats(file_or_directory, filename) if not isinstance(data, list): # new, nested format if "strategy" not in data: @@ -427,20 +457,23 @@ def load_file_from_zip(zip_path: Path, filename: str) -> bytes: raise ValueError(f"Bad zip file: {zip_path}.") from None -def load_backtest_analysis_data(backtest_dir: Path, name: str): +def load_backtest_analysis_data( + file_or_directory: Path, + name: Literal["signals", "rejected", "exited"], + filename: Path | str | None = None, +): """ Load backtest analysis data either from a pickle file or from within a zip file - :param backtest_dir: Directory containing backtest results + :param file_or_directory: pathlib.Path object, or string pointing to the directory, + or absolute/relative path to the backtest results file. :param name: Name of the analysis data to load (signals, rejected, exited) + :param filename: Optional filename to load from (if different from the main filename). + Only valid when loading from a directory. :return: Analysis data """ import joblib - if backtest_dir.is_dir(): - lbf = Path(get_latest_backtest_filename(backtest_dir)) - zip_path = backtest_dir / lbf - else: - zip_path = backtest_dir + zip_path = _normalize_filename(file_or_directory, filename) if zip_path.suffix == ".zip": # Load from zip file @@ -455,10 +488,10 @@ def load_backtest_analysis_data(backtest_dir: Path, name: str): else: # Load from separate pickle file - if backtest_dir.is_dir(): - scpf = Path(backtest_dir, f"{zip_path.stem}_{name}.pkl") + if file_or_directory.is_dir(): + scpf = Path(file_or_directory, f"{zip_path.stem}_{name}.pkl") else: - scpf = Path(backtest_dir.parent / f"{backtest_dir.stem}_{name}.pkl") + scpf = Path(file_or_directory.parent / f"{file_or_directory.stem}_{name}.pkl") try: with scpf.open("rb") as scp: @@ -470,76 +503,6 @@ def load_backtest_analysis_data(backtest_dir: Path, name: str): return None -def load_rejected_signals(backtest_dir: Path): - """ - Load rejected signals from backtest directory - """ - return load_backtest_analysis_data(backtest_dir, "rejected") - - -def load_signal_candles(backtest_dir: Path): - """ - Load signal candles from backtest directory - """ - return load_backtest_analysis_data(backtest_dir, "signals") - - -def load_exit_signal_candles(backtest_dir: Path) -> dict[str, dict[str, pd.DataFrame]]: - """ - Load exit signal candles from backtest directory - """ - return load_backtest_analysis_data(backtest_dir, "exited") - - -def analyze_trade_parallelism(results: pd.DataFrame, timeframe: str) -> pd.DataFrame: - """ - Find overlapping trades by expanding each trade once per period it was open - and then counting overlaps. - :param results: Results Dataframe - can be loaded - :param timeframe: Timeframe used for backtest - :return: dataframe with open-counts per time-period in timeframe - """ - from freqtrade.exchange import timeframe_to_resample_freq - - timeframe_freq = timeframe_to_resample_freq(timeframe) - dates = [ - pd.Series( - pd.date_range( - row[1]["open_date"], - row[1]["close_date"], - freq=timeframe_freq, - # Exclude right boundary - the date is the candle open date. - inclusive="left", - ) - ) - for row in results[["open_date", "close_date"]].iterrows() - ] - deltas = [len(x) for x in dates] - dates = pd.Series(pd.concat(dates).values, name="date") - df2 = pd.DataFrame(np.repeat(results.values, deltas, axis=0), columns=results.columns) - - df2 = pd.concat([dates, df2], axis=1) - df2 = df2.set_index("date") - df_final = df2.resample(timeframe_freq)[["pair"]].count() - df_final = df_final.rename({"pair": "open_trades"}, axis=1) - return df_final - - -def evaluate_result_multi( - results: pd.DataFrame, timeframe: str, max_open_trades: IntOrInf -) -> pd.DataFrame: - """ - Find overlapping trades by expanding each trade once per period it was open - and then counting overlaps - :param results: Results Dataframe - can be loaded - :param timeframe: Frequency used for the backtest - :param max_open_trades: parameter max_open_trades used during backtest run - :return: dataframe with open-counts per time-period in freq - """ - df_final = analyze_trade_parallelism(results, timeframe) - return df_final[df_final["open_trades"] > max_open_trades] - - def trade_list_to_dataframe(trades: list[Trade] | list[LocalTrade]) -> pd.DataFrame: """ Convert list of Trade objects to pandas Dataframe diff --git a/freqtrade/data/btanalysis/historic_precision.py b/freqtrade/data/btanalysis/historic_precision.py new file mode 100644 index 000000000..9aa43fa6a --- /dev/null +++ b/freqtrade/data/btanalysis/historic_precision.py @@ -0,0 +1,27 @@ +from pandas import DataFrame, Series + + +def get_tick_size_over_time(candles: DataFrame) -> Series: + """ + Calculate the number of significant digits for candles over time. + It's using the Monthly maximum of the number of significant digits for each month. + :param candles: DataFrame with OHLCV data + :return: Series with the average number of significant digits for each month + """ + # count the number of significant digits for the open and close prices + for col in ["open", "high", "low", "close"]: + candles[f"{col}_count"] = ( + candles[col].round(14).apply("{:.15f}".format).str.extract(r"\.(\d*[1-9])")[0].str.len() + ) + candles["max_count"] = candles[["open_count", "close_count", "high_count", "low_count"]].max( + axis=1 + ) + + candles1 = candles.set_index("date", drop=True) + # Group by month and calculate the average number of significant digits + monthly_count_avg1 = candles1["max_count"].resample("MS").max() + # monthly_open_count_avg + # convert monthly_open_count_avg from 5.0 to 0.00001, 4.0 to 0.0001, ... + monthly_open_count_avg = 1 / 10**monthly_count_avg1 + + return monthly_open_count_avg diff --git a/freqtrade/data/btanalysis/trade_parallelism.py b/freqtrade/data/btanalysis/trade_parallelism.py new file mode 100644 index 000000000..eabdcf08a --- /dev/null +++ b/freqtrade/data/btanalysis/trade_parallelism.py @@ -0,0 +1,60 @@ +import logging + +import numpy as np +import pandas as pd + +from freqtrade.constants import IntOrInf + + +logger = logging.getLogger(__name__) + + +def analyze_trade_parallelism(trades: pd.DataFrame, timeframe: str) -> pd.DataFrame: + """ + Find overlapping trades by expanding each trade once per period it was open + and then counting overlaps. + :param trades: Trades Dataframe - can be loaded from backtest, or created + via trade_list_to_dataframe + :param timeframe: Timeframe used for backtest + :return: dataframe with open-counts per time-period in timeframe + """ + from freqtrade.exchange import timeframe_to_resample_freq + + timeframe_freq = timeframe_to_resample_freq(timeframe) + dates = [ + pd.Series( + pd.date_range( + row[1]["open_date"], + row[1]["close_date"], + freq=timeframe_freq, + # Exclude right boundary - the date is the candle open date. + inclusive="left", + ) + ) + for row in trades[["open_date", "close_date"]].iterrows() + ] + deltas = [len(x) for x in dates] + dates = pd.Series(pd.concat(dates).values, name="date") + df2 = pd.DataFrame(np.repeat(trades.values, deltas, axis=0), columns=trades.columns) + + df2 = pd.concat([dates, df2], axis=1) + df2 = df2.set_index("date") + df_final = df2.resample(timeframe_freq)[["pair"]].count() + df_final = df_final.rename({"pair": "open_trades"}, axis=1) + return df_final + + +def evaluate_result_multi( + trades: pd.DataFrame, timeframe: str, max_open_trades: IntOrInf +) -> pd.DataFrame: + """ + Find overlapping trades by expanding each trade once per period it was open + and then counting overlaps + :param trades: Trades Dataframe - can be loaded from backtest, or created + via trade_list_to_dataframe + :param timeframe: Frequency used for the backtest + :param max_open_trades: parameter max_open_trades used during backtest run + :return: dataframe with open-counts per time-period in freq + """ + df_final = analyze_trade_parallelism(trades, timeframe) + return df_final[df_final["open_trades"] > max_open_trades] diff --git a/freqtrade/data/converter/orderflow.py b/freqtrade/data/converter/orderflow.py index 4b4923cfb..2b4a1fc61 100644 --- a/freqtrade/data/converter/orderflow.py +++ b/freqtrade/data/converter/orderflow.py @@ -9,26 +9,12 @@ from datetime import datetime import numpy as np import pandas as pd -from freqtrade.constants import DEFAULT_ORDERFLOW_COLUMNS, Config +from freqtrade.constants import DEFAULT_ORDERFLOW_COLUMNS, ORDERFLOW_ADDED_COLUMNS, Config from freqtrade.exceptions import DependencyException logger = logging.getLogger(__name__) -ORDERFLOW_ADDED_COLUMNS = [ - "trades", - "orderflow", - "imbalances", - "stacked_imbalances_bid", - "stacked_imbalances_ask", - "max_delta", - "min_delta", - "bid", - "ask", - "delta", - "total_trades", -] - def _init_dataframe_with_trades_columns(dataframe: pd.DataFrame): """ diff --git a/freqtrade/data/converter/trade_converter_kraken.py b/freqtrade/data/converter/trade_converter_kraken.py index 911fcd17b..1934ec4d4 100644 --- a/freqtrade/data/converter/trade_converter_kraken.py +++ b/freqtrade/data/converter/trade_converter_kraken.py @@ -69,6 +69,10 @@ def import_kraken_trades_from_csv(config: Config, convert_to: str): trades = pd.concat(dfs, ignore_index=True) del dfs + # drop any row not having a number in the column timestamp + timestamp_numeric = pd.to_numeric(trades["timestamp"], errors="coerce") + trades = trades[timestamp_numeric.notna()] + trades.loc[:, "timestamp"] = trades["timestamp"] * 1e3 trades.loc[:, "cost"] = trades["price"] * trades["amount"] for col in DEFAULT_TRADES_COLUMNS: diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 1f2bcd82d..ed1da4ca2 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -7,7 +7,7 @@ Common Interface for bot and strategy to access data. import logging from collections import deque -from datetime import datetime, timezone +from datetime import UTC, datetime from typing import Any from pandas import DataFrame, Timedelta, Timestamp, to_timedelta @@ -98,7 +98,7 @@ class DataProvider: :param candle_type: Any of the enum CandleType (must match trading mode!) """ pair_key = (pair, timeframe, candle_type) - self.__cached_pairs[pair_key] = (dataframe, datetime.now(timezone.utc)) + self.__cached_pairs[pair_key] = (dataframe, datetime.now(UTC)) # For multiple producers we will want to merge the pairlists instead of overwriting def _set_producer_pairs(self, pairlist: list[str], producer_name: str = "default"): @@ -131,7 +131,7 @@ class DataProvider: "data": { "key": pair_key, "df": dataframe.tail(1), - "la": datetime.now(timezone.utc), + "la": datetime.now(UTC), }, } self.__rpc.send_msg(msg) @@ -164,7 +164,7 @@ class DataProvider: if producer_name not in self.__producer_pairs_df: self.__producer_pairs_df[producer_name] = {} - _last_analyzed = datetime.now(timezone.utc) if not last_analyzed else last_analyzed + _last_analyzed = datetime.now(UTC) if not last_analyzed else last_analyzed self.__producer_pairs_df[producer_name][pair_key] = (dataframe, _last_analyzed) logger.debug(f"External DataFrame for {pair_key} from {producer_name} added.") @@ -275,12 +275,12 @@ class DataProvider: # If we have no data from this Producer yet if producer_name not in self.__producer_pairs_df: # We don't have this data yet, return empty DataFrame and datetime (01-01-1970) - return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc)) + return (DataFrame(), datetime.fromtimestamp(0, tz=UTC)) # If we do have data from that Producer, but no data on this pair_key if pair_key not in self.__producer_pairs_df[producer_name]: # We don't have this data yet, return empty DataFrame and datetime (01-01-1970) - return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc)) + return (DataFrame(), datetime.fromtimestamp(0, tz=UTC)) # We have it, return this data df, la = self.__producer_pairs_df[producer_name][pair_key] @@ -396,16 +396,16 @@ class DataProvider: if (max_index := self.__slice_index.get(pair)) is not None: df = df.iloc[max(0, max_index - MAX_DATAFRAME_CANDLES) : max_index] else: - return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc)) + return (DataFrame(), datetime.fromtimestamp(0, tz=UTC)) return df, date else: - return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc)) + return (DataFrame(), datetime.fromtimestamp(0, tz=UTC)) @property def runmode(self) -> RunMode: """ Get runmode of the bot - can be "live", "dry-run", "backtest", "edgecli", "hyperopt" or "other". + can be "live", "dry-run", "backtest", "hyperopt" or "other". """ return RunMode(self._config.get("runmode", RunMode.OTHER)) diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index 2bea8a5db..1509fade7 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -7,11 +7,9 @@ from freqtrade.configuration import TimeRange from freqtrade.constants import Config from freqtrade.data.btanalysis import ( BT_DATA_COLUMNS, + load_backtest_analysis_data, load_backtest_data, load_backtest_stats, - load_exit_signal_candles, - load_rejected_signals, - load_signal_candles, ) from freqtrade.exceptions import ConfigurationError, OperationalException from freqtrade.util import print_df_rich_table @@ -331,7 +329,9 @@ def process_entry_exit_reasons(config: Config): exit_only = config.get("exit_only", False) do_rejected = config.get("analysis_rejected", False) to_csv = config.get("analysis_to_csv", False) - csv_path = Path(config.get("analysis_csv_path", config["exportfilename"])) + csv_path = Path( + config.get("analysis_csv_path", config["exportdirectory"]), # type: ignore[arg-type] + ) if entry_only is True and exit_only is True: raise OperationalException( @@ -344,20 +344,30 @@ def process_entry_exit_reasons(config: Config): None if config.get("timerange") is None else str(config.get("timerange")) ) try: - backtest_stats = load_backtest_stats(config["exportfilename"]) + backtest_stats = load_backtest_stats( + config["exportdirectory"], config["exportfilename"] + ) except ValueError as e: raise ConfigurationError(e) from e for strategy_name, results in backtest_stats["strategy"].items(): - trades = load_backtest_data(config["exportfilename"], strategy_name) + trades = load_backtest_data( + config["exportdirectory"], strategy_name, config["exportfilename"] + ) if trades is not None and not trades.empty: - signal_candles = load_signal_candles(config["exportfilename"]) - exit_signals = load_exit_signal_candles(config["exportfilename"]) + signal_candles = load_backtest_analysis_data( + config["exportdirectory"], "signals", config["exportfilename"] + ) + exit_signals = load_backtest_analysis_data( + config["exportdirectory"], "exited", config["exportfilename"] + ) rej_df = None if do_rejected: - rejected_signals_dict = load_rejected_signals(config["exportfilename"]) + rejected_signals_dict = load_backtest_analysis_data( + config["exportdirectory"], "rejected", config["exportfilename"] + ) rej_df = prepare_results( rejected_signals_dict, strategy_name, diff --git a/freqtrade/data/history/datahandlers/idatahandler.py b/freqtrade/data/history/datahandlers/idatahandler.py index e368c1d41..67ae386c6 100644 --- a/freqtrade/data/history/datahandlers/idatahandler.py +++ b/freqtrade/data/history/datahandlers/idatahandler.py @@ -8,7 +8,7 @@ import logging import re from abc import ABC, abstractmethod from copy import deepcopy -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from pandas import DataFrame, to_datetime @@ -118,8 +118,8 @@ class IDataHandler(ABC): df = self._ohlcv_load(pair, timeframe, None, candle_type) if df.empty: return ( - datetime.fromtimestamp(0, tz=timezone.utc), - datetime.fromtimestamp(0, tz=timezone.utc), + datetime.fromtimestamp(0, tz=UTC), + datetime.fromtimestamp(0, tz=UTC), 0, ) return df.iloc[0]["date"].to_pydatetime(), df.iloc[-1]["date"].to_pydatetime(), len(df) @@ -201,8 +201,8 @@ class IDataHandler(ABC): df = self._trades_load(pair, trading_mode) if df.empty: return ( - datetime.fromtimestamp(0, tz=timezone.utc), - datetime.fromtimestamp(0, tz=timezone.utc), + datetime.fromtimestamp(0, tz=UTC), + datetime.fromtimestamp(0, tz=UTC), 0, ) return ( diff --git a/freqtrade/data/metrics.py b/freqtrade/data/metrics.py index 8e234df85..7e0b279f4 100644 --- a/freqtrade/data/metrics.py +++ b/freqtrade/data/metrics.py @@ -10,7 +10,9 @@ import pandas as pd logger = logging.getLogger(__name__) -def calculate_market_change(data: dict[str, pd.DataFrame], column: str = "close") -> float: +def calculate_market_change( + data: dict[str, pd.DataFrame], column: str = "close", min_date: datetime | None = None +) -> float: """ Calculate market change based on "column". Calculation is done by taking the first non-null and the last non-null element of each column @@ -19,14 +21,24 @@ def calculate_market_change(data: dict[str, pd.DataFrame], column: str = "close" :param data: Dict of Dataframes, dict key should be pair. :param column: Column in the original dataframes to use + :param min_date: Minimum date to consider for calculations. Market change should only be + calculated for data actually backtested, excluding startup periods. :return: """ tmp_means = [] for pair, df in data.items(): - start = df[column].dropna().iloc[0] - end = df[column].dropna().iloc[-1] + df1 = df + if min_date is not None: + df1 = df1[df1["date"] >= min_date] + if df1.empty: + logger.warning(f"Pair {pair} has no data after {min_date}.") + continue + start = df1[column].dropna().iloc[0] + end = df1[column].dropna().iloc[-1] tmp_means.append((end - start) / start) + if not tmp_means: + return 0.0 return float(np.mean(tmp_means)) @@ -162,12 +174,18 @@ def calculate_underwater( @dataclass() class DrawDownResult: + # Max drawdown fields drawdown_abs: float = 0.0 high_date: pd.Timestamp = None low_date: pd.Timestamp = None high_value: float = 0.0 low_value: float = 0.0 relative_account_drawdown: float = 0.0 + # Current drawdown fields + current_high_date: pd.Timestamp = None + current_high_value: float = 0.0 + current_drawdown_abs: float = 0.0 + current_relative_account_drawdown: float = 0.0 def calculate_max_drawdown( @@ -179,29 +197,31 @@ def calculate_max_drawdown( relative: bool = False, ) -> DrawDownResult: """ - Calculate max drawdown and the corresponding close dates - :param trades: DataFrame containing trades (requires columns close_date and profit_ratio) + Calculate max drawdown and current drawdown with corresponding dates + :param trades: DataFrame containing trades (requires columns close_date and profit_abs) :param date_col: Column in DataFrame to use for dates (defaults to 'close_date') :param value_col: Column in DataFrame to use for values (defaults to 'profit_abs') :param starting_balance: Portfolio starting balance - properly calculate relative drawdown. + :param relative: If True, use relative drawdown for max calculation instead of absolute :return: DrawDownResult object with absolute max drawdown, high and low time and high and low value, - and the relative account drawdown + relative account drawdown, and current drawdown information. :raise: ValueError if trade-dataframe was found empty. """ if len(trades) == 0: raise ValueError("Trade dataframe empty.") + profit_results = trades.sort_values(date_col).reset_index(drop=True) max_drawdown_df = _calc_drawdown_series( profit_results, date_col=date_col, value_col=value_col, starting_balance=starting_balance ) + # Calculate maximum drawdown idxmin = ( max_drawdown_df["drawdown_relative"].idxmax() if relative else max_drawdown_df["drawdown"].idxmin() ) - high_idx = max_drawdown_df.iloc[: idxmin + 1]["high_value"].idxmax() high_date = profit_results.loc[high_idx, date_col] low_date = profit_results.loc[idxmin, date_col] @@ -209,13 +229,27 @@ def calculate_max_drawdown( low_val = max_drawdown_df.loc[idxmin, "cumulative"] max_drawdown_rel = max_drawdown_df.loc[idxmin, "drawdown_relative"] + # Calculate current drawdown + current_high_idx = max_drawdown_df["high_value"].iloc[:-1].idxmax() + current_high_date = profit_results.loc[current_high_idx, date_col] + current_high_value = max_drawdown_df.iloc[-1]["high_value"] + current_cumulative = max_drawdown_df.iloc[-1]["cumulative"] + current_drawdown_abs = current_high_value - current_cumulative + current_drawdown_relative = max_drawdown_df.iloc[-1]["drawdown_relative"] + return DrawDownResult( + # Max drawdown drawdown_abs=abs(max_drawdown_df.loc[idxmin, "drawdown"]), high_date=high_date, low_date=low_date, high_value=high_val, low_value=low_val, relative_account_drawdown=max_drawdown_rel, + # Current drawdown + current_high_date=current_high_date, + current_high_value=current_high_value, + current_drawdown_abs=current_drawdown_abs, + current_relative_account_drawdown=current_drawdown_relative, ) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py deleted file mode 100644 index d275a80e3..000000000 --- a/freqtrade/edge/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .edge_positioning import Edge, PairInfo # noqa: F401 diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py deleted file mode 100644 index 546126513..000000000 --- a/freqtrade/edge/edge_positioning.py +++ /dev/null @@ -1,524 +0,0 @@ -# pragma pylint: disable=W0603 -"""Edge positioning package""" - -import logging -from collections import defaultdict -from copy import deepcopy -from datetime import timedelta -from typing import Any, NamedTuple - -import numpy as np -import utils_find_1st as utf1st -from pandas import DataFrame - -from freqtrade.configuration import TimeRange -from freqtrade.constants import DATETIME_PRINT_FORMAT, UNLIMITED_STAKE_AMOUNT, Config -from freqtrade.data.history import get_timerange, load_data, refresh_data -from freqtrade.enums import CandleType, ExitType, RunMode -from freqtrade.exceptions import OperationalException -from freqtrade.exchange import timeframe_to_seconds -from freqtrade.plugins.pairlist.pairlist_helpers import expand_pairlist -from freqtrade.strategy.interface import IStrategy -from freqtrade.util import dt_now - - -logger = logging.getLogger(__name__) - - -class PairInfo(NamedTuple): - stoploss: float - winrate: float - risk_reward_ratio: float - required_risk_reward: float - expectancy: float - nb_trades: int - avg_trade_duration: float - - -class Edge: - """ - Calculates Win Rate, Risk Reward Ratio, Expectancy - against historical data for a give set of markets and a strategy - it then adjusts stoploss and position size accordingly - and force it into the strategy - Author: https://github.com/mishaker - """ - - _cached_pairs: dict[str, Any] = {} # Keeps a list of pairs - - def __init__(self, config: Config, exchange, strategy) -> None: - self.config = config - self.exchange = exchange - self.strategy: IStrategy = strategy - - self.edge_config = self.config.get("edge", {}) - self._cached_pairs: dict[str, Any] = {} # Keeps a list of pairs - self._final_pairs: list = [] - - # checking max_open_trades. it should be -1 as with Edge - # the number of trades is determined by position size - if self.config["max_open_trades"] != float("inf"): - logger.critical("max_open_trades should be -1 in config !") - - if self.config["stake_amount"] != UNLIMITED_STAKE_AMOUNT: - raise OperationalException("Edge works only with unlimited stake amount") - - self._capital_ratio: float = self.config["tradable_balance_ratio"] - self._allowed_risk: float = self.edge_config.get("allowed_risk") - self._since_number_of_days: int = self.edge_config.get("calculate_since_number_of_days", 14) - self._last_updated: int = 0 # Timestamp of pairs last updated time - self._refresh_pairs = True - - self._stoploss_range_min = float(self.edge_config.get("stoploss_range_min", -0.01)) - self._stoploss_range_max = float(self.edge_config.get("stoploss_range_max", -0.05)) - self._stoploss_range_step = float(self.edge_config.get("stoploss_range_step", -0.001)) - - # calculating stoploss range - self._stoploss_range = np.arange( - self._stoploss_range_min, self._stoploss_range_max, self._stoploss_range_step - ) - - self._timerange: TimeRange = TimeRange.parse_timerange( - f"{(dt_now() - timedelta(days=self._since_number_of_days)).strftime('%Y%m%d')}-" - ) - if config.get("fee"): - self.fee = config["fee"] - else: - try: - self.fee = self.exchange.get_fee( - symbol=expand_pairlist( - self.config["exchange"]["pair_whitelist"], list(self.exchange.markets) - )[0] - ) - except IndexError: - self.fee = None - - def calculate(self, pairs: list[str]) -> bool: - if self.fee is None and pairs: - self.fee = self.exchange.get_fee(pairs[0]) - - heartbeat = self.edge_config.get("process_throttle_secs") - - if (self._last_updated > 0) and ( - self._last_updated + heartbeat > int(dt_now().timestamp()) - ): - return False - - data: dict[str, Any] = {} - logger.info("Using stake_currency: %s ...", self.config["stake_currency"]) - logger.info("Using local backtesting data (using whitelist in given config) ...") - - if self._refresh_pairs: - timerange_startup = deepcopy(self._timerange) - timerange_startup.subtract_start( - timeframe_to_seconds(self.strategy.timeframe) * self.strategy.startup_candle_count - ) - refresh_data( - datadir=self.config["datadir"], - pairs=pairs, - exchange=self.exchange, - timeframe=self.strategy.timeframe, - timerange=timerange_startup, - data_format=self.config["dataformat_ohlcv"], - candle_type=self.config.get("candle_type_def", CandleType.SPOT), - ) - # Download informative pairs too - res = defaultdict(list) - for pair, timeframe, _ in self.strategy.gather_informative_pairs(): - res[timeframe].append(pair) - for timeframe, inf_pairs in res.items(): - timerange_startup = deepcopy(self._timerange) - timerange_startup.subtract_start( - timeframe_to_seconds(timeframe) * self.strategy.startup_candle_count - ) - refresh_data( - datadir=self.config["datadir"], - pairs=inf_pairs, - exchange=self.exchange, - timeframe=timeframe, - timerange=timerange_startup, - data_format=self.config["dataformat_ohlcv"], - candle_type=self.config.get("candle_type_def", CandleType.SPOT), - ) - - data = load_data( - datadir=self.config["datadir"], - pairs=pairs, - timeframe=self.strategy.timeframe, - timerange=self._timerange, - startup_candles=self.strategy.startup_candle_count, - data_format=self.config["dataformat_ohlcv"], - candle_type=self.config.get("candle_type_def", CandleType.SPOT), - ) - - if not data: - # Reinitializing cached pairs - self._cached_pairs = {} - logger.critical("No data found. Edge is stopped ...") - return False - # Fake run-mode to Edge - prior_rm = self.config["runmode"] - self.config["runmode"] = RunMode.EDGE - preprocessed = self.strategy.advise_all_indicators(data) - self.config["runmode"] = prior_rm - - # Print timeframe - min_date, max_date = get_timerange(preprocessed) - logger.info( - f"Measuring data from {min_date.strftime(DATETIME_PRINT_FORMAT)} " - f"up to {max_date.strftime(DATETIME_PRINT_FORMAT)} " - f"({(max_date - min_date).days} days).." - ) - # TODO: Should edge support shorts? needs to be investigated further - # * (add enter_short exit_short) - headers = ["date", "open", "high", "low", "close", "enter_long", "exit_long"] - - trades: list = [] - for pair, pair_data in preprocessed.items(): - # Sorting dataframe by date and reset index - pair_data = pair_data.sort_values(by=["date"]) - pair_data = pair_data.reset_index(drop=True) - - df_analyzed = self.strategy.ft_advise_signals(pair_data, {"pair": pair})[headers].copy() - - trades += self._find_trades_for_stoploss_range(df_analyzed, pair, self._stoploss_range) - - # If no trade found then exit - if len(trades) == 0: - logger.info("No trades found.") - return False - - # Fill missing, calculable columns, profit, duration , abs etc. - trades_df = self._fill_calculable_fields(DataFrame(trades)) - self._cached_pairs = self._process_expectancy(trades_df) - self._last_updated = int(dt_now().timestamp()) - - return True - - def stake_amount( - self, pair: str, free_capital: float, total_capital: float, capital_in_trade: float - ) -> float: - stoploss = self.get_stoploss(pair) - available_capital = (total_capital + capital_in_trade) * self._capital_ratio - allowed_capital_at_risk = available_capital * self._allowed_risk - max_position_size = abs(allowed_capital_at_risk / stoploss) - # Position size must be below available capital. - position_size = min(min(max_position_size, free_capital), available_capital) - if pair in self._cached_pairs: - logger.info( - "winrate: %s, expectancy: %s, position size: %s, pair: %s," - " capital in trade: %s, free capital: %s, total capital: %s," - " stoploss: %s, available capital: %s.", - self._cached_pairs[pair].winrate, - self._cached_pairs[pair].expectancy, - position_size, - pair, - capital_in_trade, - free_capital, - total_capital, - stoploss, - available_capital, - ) - return round(position_size, 15) - - def get_stoploss(self, pair: str) -> float: - if pair in self._cached_pairs: - return self._cached_pairs[pair].stoploss - else: - logger.warning( - f"Tried to access stoploss of non-existing pair {pair}, " - "strategy stoploss is returned instead." - ) - return self.strategy.stoploss - - def adjust(self, pairs: list[str]) -> list: - """ - Filters out and sorts "pairs" according to Edge calculated pairs - """ - final = [] - for pair, info in self._cached_pairs.items(): - if ( - info.expectancy > float(self.edge_config.get("minimum_expectancy", 0.2)) - and info.winrate > float(self.edge_config.get("minimum_winrate", 0.60)) - and pair in pairs - ): - final.append(pair) - - if self._final_pairs != final: - self._final_pairs = final - if self._final_pairs: - logger.info( - "Minimum expectancy and minimum winrate are met only for %s," - " so other pairs are filtered out.", - self._final_pairs, - ) - else: - logger.info( - "Edge removed all pairs as no pair with minimum expectancy " - "and minimum winrate was found !" - ) - - return self._final_pairs - - def accepted_pairs(self) -> list[dict[str, Any]]: - """ - return a list of accepted pairs along with their winrate, expectancy and stoploss - """ - final = [] - for pair, info in self._cached_pairs.items(): - if info.expectancy > float( - self.edge_config.get("minimum_expectancy", 0.2) - ) and info.winrate > float(self.edge_config.get("minimum_winrate", 0.60)): - final.append( - { - "Pair": pair, - "Winrate": info.winrate, - "Expectancy": info.expectancy, - "Stoploss": info.stoploss, - } - ) - return final - - def _fill_calculable_fields(self, result: DataFrame) -> DataFrame: - """ - The result frame contains a number of columns that are calculable - from other columns. These are left blank till all rows are added, - to be populated in single vector calls. - - Columns to be populated are: - - Profit - - trade duration - - profit abs - :param result Dataframe - :return: result Dataframe - """ - # We set stake amount to an arbitrary amount, as it doesn't change the calculation. - # All returned values are relative, they are defined as ratios. - stake = 0.015 - - result["trade_duration"] = result["close_date"] - result["open_date"] - - result["trade_duration"] = result["trade_duration"].map( - lambda x: int(x.total_seconds() / 60) - ) - - # Spends, Takes, Profit, Absolute Profit - - # Buy Price - result["buy_vol"] = stake / result["open_rate"] # How many target are we buying - result["buy_fee"] = stake * self.fee - result["buy_spend"] = stake + result["buy_fee"] # How much we're spending - - # Sell price - result["sell_sum"] = result["buy_vol"] * result["close_rate"] - result["sell_fee"] = result["sell_sum"] * self.fee - result["sell_take"] = result["sell_sum"] - result["sell_fee"] - - # profit_ratio - result["profit_ratio"] = (result["sell_take"] - result["buy_spend"]) / result["buy_spend"] - - # Absolute profit - result["profit_abs"] = result["sell_take"] - result["buy_spend"] - - return result - - def _process_expectancy(self, results: DataFrame) -> dict[str, Any]: - """ - This calculates WinRate, Required Risk Reward, Risk Reward and Expectancy of all pairs - The calculation will be done per pair and per strategy. - """ - # Removing pairs having less than min_trades_number - min_trades_number = self.edge_config.get("min_trade_number", 10) - results = results.groupby(["pair", "stoploss"]).filter(lambda x: len(x) > min_trades_number) - ################################### - - # Removing outliers (Only Pumps) from the dataset - # The method to detect outliers is to calculate standard deviation - # Then every value more than (standard deviation + 2*average) is out (pump) - # - # Removing Pumps - if self.edge_config.get("remove_pumps", False): - results = results[ - results["profit_abs"] - < 2 * results["profit_abs"].std() + results["profit_abs"].mean() - ] - ########################################################################## - - # Removing trades having a duration more than X minutes (set in config) - max_trade_duration = self.edge_config.get("max_trade_duration_minute", 1440) - results = results[results.trade_duration < max_trade_duration] - ####################################################################### - - if results.empty: - return {} - - groupby_aggregator = { - "profit_abs": [ - ("nb_trades", "count"), # number of all trades - ("profit_sum", lambda x: x[x > 0].sum()), # cumulative profit of all winning trades - ("loss_sum", lambda x: abs(x[x < 0].sum())), # cumulative loss of all losing trades - ("nb_win_trades", lambda x: x[x > 0].count()), # number of winning trades - ], - "trade_duration": [("avg_trade_duration", "mean")], - } - - # Group by (pair and stoploss) by applying above aggregator - df = ( - results.groupby(["pair", "stoploss"])[["profit_abs", "trade_duration"]] - .agg(groupby_aggregator) - .reset_index(col_level=1) - ) - - # Dropping level 0 as we don't need it - df.columns = df.columns.droplevel(0) - - # Calculating number of losing trades, average win and average loss - df["nb_loss_trades"] = df["nb_trades"] - df["nb_win_trades"] - df["average_win"] = np.where( - df["nb_win_trades"] == 0, 0.0, df["profit_sum"] / df["nb_win_trades"] - ) - df["average_loss"] = np.where( - df["nb_loss_trades"] == 0, 0.0, df["loss_sum"] / df["nb_loss_trades"] - ) - - # Win rate = number of profitable trades / number of trades - df["winrate"] = df["nb_win_trades"] / df["nb_trades"] - - # risk_reward_ratio = average win / average loss - df["risk_reward_ratio"] = df["average_win"] / df["average_loss"] - - # required_risk_reward = (1 / winrate) - 1 - df["required_risk_reward"] = (1 / df["winrate"]) - 1 - - # expectancy = (risk_reward_ratio * winrate) - (lossrate) - df["expectancy"] = (df["risk_reward_ratio"] * df["winrate"]) - (1 - df["winrate"]) - - # sort by expectancy and stoploss - df = ( - df.sort_values(by=["expectancy", "stoploss"], ascending=False) - .groupby("pair") - .first() - .sort_values(by=["expectancy"], ascending=False) - .reset_index() - ) - - final = {} - for x in df.itertuples(): - final[x.pair] = PairInfo( - x.stoploss, - x.winrate, - x.risk_reward_ratio, - x.required_risk_reward, - x.expectancy, - x.nb_trades, - x.avg_trade_duration, - ) - - # Returning a list of pairs in order of "expectancy" - return final - - def _find_trades_for_stoploss_range(self, df, pair: str, stoploss_range) -> list: - buy_column = df["enter_long"].values - sell_column = df["exit_long"].values - date_column = df["date"].values - ohlc_columns = df[["open", "high", "low", "close"]].values - - result: list = [] - for stoploss in stoploss_range: - result += self._detect_next_stop_or_sell_point( - buy_column, sell_column, date_column, ohlc_columns, round(stoploss, 6), pair - ) - - return result - - def _detect_next_stop_or_sell_point( - self, buy_column, sell_column, date_column, ohlc_columns, stoploss, pair: str - ): - """ - Iterate through ohlc_columns in order to find the next trade - Next trade opens from the first buy signal noticed to - The sell or stoploss signal after it. - It then cuts OHLC, buy_column, sell_column and date_column. - Cut from (the exit trade index) + 1. - - Author: https://github.com/mishaker - """ - - result: list = [] - start_point = 0 - - while True: - open_trade_index = utf1st.find_1st(buy_column, 1, utf1st.cmp_equal) - - # Return empty if we don't find trade entry (i.e. buy==1) or - # we find a buy but at the end of array - if open_trade_index == -1 or open_trade_index == len(buy_column) - 1: - break - else: - # When a buy signal is seen, - # trade opens in reality on the next candle - open_trade_index += 1 - - open_price = ohlc_columns[open_trade_index, 0] - stop_price = open_price * (stoploss + 1) - - # Searching for the index where stoploss is hit - stop_index = utf1st.find_1st( - ohlc_columns[open_trade_index:, 2], stop_price, utf1st.cmp_smaller - ) - - # If we don't find it then we assume stop_index will be far in future (infinite number) - if stop_index == -1: - stop_index = float("inf") - - # Searching for the index where sell is hit - sell_index = utf1st.find_1st(sell_column[open_trade_index:], 1, utf1st.cmp_equal) - - # If we don't find it then we assume sell_index will be far in future (infinite number) - if sell_index == -1: - sell_index = float("inf") - - # Check if we don't find any stop or sell point (in that case trade remains open) - # It is not interesting for Edge to consider it so we simply ignore the trade - # And stop iterating there is no more entry - if stop_index == sell_index == float("inf"): - break - - if stop_index <= sell_index: - exit_index = open_trade_index + stop_index - exit_type = ExitType.STOP_LOSS - exit_price = stop_price - elif stop_index > sell_index: - # If exit is SELL then we exit at the next candle - exit_index = open_trade_index + sell_index + 1 - - # Check if we have the next candle - if len(ohlc_columns) - 1 < exit_index: - break - - exit_type = ExitType.EXIT_SIGNAL - exit_price = ohlc_columns[exit_index, 0] - - trade = { - "pair": pair, - "stoploss": stoploss, - "profit_ratio": "", - "profit_abs": "", - "open_date": date_column[open_trade_index], - "close_date": date_column[exit_index], - "trade_duration": "", - "open_rate": round(open_price, 15), - "close_rate": round(exit_price, 15), - "exit_type": exit_type, - } - - result.append(trade) - - # Giving a view of exit_index till the end of array - buy_column = buy_column[exit_index:] - sell_column = sell_column[exit_index:] - date_column = date_column[exit_index:] - ohlc_columns = ohlc_columns[exit_index:] - start_point += exit_index - - return result diff --git a/freqtrade/enums/marginmode.py b/freqtrade/enums/marginmode.py index 9aa814c39..f1a4a3a17 100644 --- a/freqtrade/enums/marginmode.py +++ b/freqtrade/enums/marginmode.py @@ -13,4 +13,4 @@ class MarginMode(str, Enum): NONE = "" def __str__(self): - return f"{self.name.lower()}" + return f"{self.value.lower()}" diff --git a/freqtrade/enums/runmode.py b/freqtrade/enums/runmode.py index a24dd6e2c..f3316629a 100644 --- a/freqtrade/enums/runmode.py +++ b/freqtrade/enums/runmode.py @@ -4,13 +4,12 @@ from enum import Enum class RunMode(str, Enum): """ Bot running mode (backtest, hyperopt, ...) - can be "live", "dry-run", "backtest", "edge", "hyperopt". + can be "live", "dry-run", "backtest", "hyperopt". """ LIVE = "live" DRY_RUN = "dry_run" BACKTEST = "backtest" - EDGE = "edge" HYPEROPT = "hyperopt" UTIL_EXCHANGE = "util_exchange" UTIL_NO_EXCHANGE = "util_no_exchange" @@ -20,5 +19,5 @@ class RunMode(str, Enum): TRADE_MODES = [RunMode.LIVE, RunMode.DRY_RUN] -OPTIMIZE_MODES = [RunMode.BACKTEST, RunMode.EDGE, RunMode.HYPEROPT] +OPTIMIZE_MODES = [RunMode.BACKTEST, RunMode.HYPEROPT] NON_UTIL_MODES = TRADE_MODES + OPTIMIZE_MODES diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 01f9d93ed..031a6e897 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,11 +1,12 @@ # flake8: noqa: F401 # isort: off -from freqtrade.exchange.common import remove_exchange_credentials, MAP_EXCHANGE_CHILDCLASS +from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS from freqtrade.exchange.exchange import Exchange # isort: on from freqtrade.exchange.binance import Binance from freqtrade.exchange.bingx import Bingx +from freqtrade.exchange.bitget import Bitget from freqtrade.exchange.bitmart import Bitmart from freqtrade.exchange.bitpanda import Bitpanda from freqtrade.exchange.bitvavo import Bitvavo @@ -43,4 +44,6 @@ from freqtrade.exchange.idex import Idex from freqtrade.exchange.kraken import Kraken from freqtrade.exchange.kucoin import Kucoin from freqtrade.exchange.lbank import Lbank -from freqtrade.exchange.okx import Okx +from freqtrade.exchange.luno import Luno +from freqtrade.exchange.modetrade import Modetrade +from freqtrade.exchange.okx import MyOkx, Okx diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index c67263096..1a6bcc18f 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -1,7 +1,7 @@ """Binance exchange subclass""" import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path import ccxt @@ -32,19 +32,23 @@ class Binance(Exchange): "stop_price_param": "stopPrice", "stop_price_prop": "stopPrice", "stoploss_order_types": {"limit": "stop_loss_limit"}, + "stoploss_blocks_assets": True, # By default stoploss orders block assets "order_time_in_force": ["GTC", "FOK", "IOC", "PO"], "trades_pagination": "id", "trades_pagination_arg": "fromId", "trades_has_history": True, + "fetch_orders_limit_minutes": None, "l2_limit_range": [5, 10, 20, 50, 100, 500, 1000], "ws_enabled": True, } _ft_has_futures: FtHas = { "funding_fee_candle_limit": 1000, "stoploss_order_types": {"limit": "stop", "market": "stop_market"}, + "stoploss_blocks_assets": False, # Stoploss orders do not block assets "order_time_in_force": ["GTC", "FOK", "IOC"], "tickers_have_price": False, "floor_leverage": True, + "fetch_orders_limit_minutes": 7 * 1440, # "fetch_orders" is limited to 7 days "stop_price_type_field": "workingType", "order_props_in_contracts": ["amount", "cost", "filled", "remaining"], "stop_price_type_value_mapping": { @@ -59,7 +63,7 @@ class Binance(Exchange): } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + (TradingMode.SPOT, MarginMode.NONE), # (TradingMode.MARGIN, MarginMode.CROSS), (TradingMode.FUTURES, MarginMode.CROSS), (TradingMode.FUTURES, MarginMode.ISOLATED), @@ -72,7 +76,10 @@ class Binance(Exchange): :return: Proxy coin or stake currency """ if self.margin_mode == MarginMode.CROSS: - return self._config.get("proxy_coin", self._config["stake_currency"]) + return self._config.get( + "proxy_coin", + self._config["stake_currency"], + ) # type: ignore[return-value] return self._config["stake_currency"] def get_tickers( @@ -143,7 +150,7 @@ class Binance(Exchange): Does not work for other exchanges, which don't return the earliest data when called with "0" :param candle_type: Any of the enum CandleType (must match trading mode!) """ - if is_new_pair: + if is_new_pair and candle_type in (CandleType.SPOT, CandleType.FUTURES, CandleType.MARK): with self._loop_lock: x = self.loop.run_until_complete( self._async_get_candle_history(pair, timeframe, candle_type, 0) @@ -153,7 +160,7 @@ class Binance(Exchange): since_ms = x[3][0][0] logger.info( f"Candle-data for {pair} available starting with " - f"{datetime.fromtimestamp(since_ms // 1000, tz=timezone.utc).isoformat()}." + f"{datetime.fromtimestamp(since_ms // 1000, tz=UTC).isoformat()}." ) if until_ms and since_ms >= until_ms: logger.warning( @@ -392,7 +399,7 @@ class Binance(Exchange): trades = await self._api_async.fetch_trades( pair, params={ - self._trades_pagination_arg: "0", + self._ft_has["trades_pagination_arg"]: "0", }, limit=5, ) @@ -400,7 +407,7 @@ class Binance(Exchange): since = max(since, listing_date) _, res = await download_archive_trades( - CandleType.SPOT, + CandleType.FUTURES if self.trading_mode == "futures" else CandleType.SPOT, pair, since_ms=since, until_ms=until, diff --git a/freqtrade/exchange/binance_leverage_tiers.json b/freqtrade/exchange/binance_leverage_tiers.json index b45689af5..acd3a3124 100644 --- a/freqtrade/exchange/binance_leverage_tiers.json +++ b/freqtrade/exchange/binance_leverage_tiers.json @@ -1,4 +1,142 @@ { + "1000000BOB/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "1000000BOB/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], "1000000MOG/USDT:USDT": [ { "tier": 1.0, @@ -7,10 +145,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -24,10 +162,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -39,13 +177,13 @@ "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -55,102 +193,119 @@ "tier": 4.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1000000MOG/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000000MOG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -162,10 +317,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 50.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -177,118 +332,152 @@ "symbol": "1000BONK/USDC:USDC", "currency": "USDC", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 50000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "600000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "300.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "1200000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "15300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 1200000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.1", - "cum": "75300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "150300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 4000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "650300.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000BONK/USDC:USDC", "currency": "USDC", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "1000BONK/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000BONK/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2150300.0" + "cum": "2284650.0" } } ], @@ -298,13 +487,13 @@ "symbol": "1000BONK/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "20000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -314,68 +503,68 @@ "tier": 2.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 100000.0, + "minNotional": 20000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "200000", + "notionalFloor": "20000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "100.0" } }, { "tier": 3.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 200000.0, + "maxNotional": 1000000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "25", + "notionalCap": "1000000", + "notionalFloor": "200000", "maintMarginRatio": "0.02", - "cum": "550.0" + "cum": "1100.0" } }, { "tier": 4.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 1000000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "20", + "notionalCap": "2000000", + "notionalFloor": "1000000", "maintMarginRatio": "0.025", - "cum": "3050.0" + "cum": "6100.0" } }, { "tier": 5.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, + "minNotional": 2000000.0, "maxNotional": 5000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", + "initialLeverage": "10", "notionalCap": "5000000", - "notionalFloor": "1000000", + "notionalFloor": "2000000", "maintMarginRatio": "0.05", - "cum": "28050.0" + "cum": "56100.0" } }, { @@ -383,67 +572,67 @@ "symbol": "1000BONK/USDT:USDT", "currency": "USDT", "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "6000000", + "initialLeverage": "5", + "notionalCap": "7500000", "notionalFloor": "5000000", "maintMarginRatio": "0.1", - "cum": "278050.0" + "cum": "306100.0" } }, { "tier": 7.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7000000.0, + "minNotional": 7500000.0, + "maxNotional": 10000000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "7000000", - "notionalFloor": "6000000", + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.125", - "cum": "428050.0" + "cum": "493600.0" } }, { "tier": 8.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 7000000.0, - "maxNotional": 8000000.0, + "minNotional": 10000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "8000000", - "notionalFloor": "7000000", + "notionalCap": "12500000", + "notionalFloor": "10000000", "maintMarginRatio": "0.25", - "cum": "1303050.0" + "cum": "1743600.0" } }, { "tier": 9.0, "symbol": "1000BONK/USDT:USDT", "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 9000000.0, + "minNotional": 12500000.0, + "maxNotional": 15000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "9000000", - "notionalFloor": "8000000", + "notionalCap": "15000000", + "notionalFloor": "12500000", "maintMarginRatio": "0.5", - "cum": "3303050.0" + "cum": "4868600.0" } } ], @@ -453,13 +642,13 @@ "symbol": "1000CAT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -469,136 +658,153 @@ "tier": 2.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1000CAT/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000CAT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -610,10 +816,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 15.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "15", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -627,10 +833,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -642,13 +848,13 @@ "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -658,102 +864,119 @@ "tier": 4.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000CHEEMS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -763,13 +986,13 @@ "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -779,119 +1002,119 @@ "tier": 2.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "600000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "16850.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "166850.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "254350.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, + "minNotional": 500000.0, "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "3", "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "754350.0" + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { @@ -899,16 +1122,33 @@ "symbol": "1000FLOKI/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000FLOKI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1879350.0" + "cum": "2284650.0" } } ], @@ -920,10 +1160,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 50.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -935,101 +1175,152 @@ "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "20700.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "45700.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "295700.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000LUNC/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "1000LUNC/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "1000LUNC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000LUNC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1795700.0" + "cum": "2284650.0" } } ], @@ -1349,15 +1640,15 @@ "symbol": "1000RATS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "25", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -1365,136 +1656,119 @@ "tier": 2.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "1000RATS/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" - } - }, - { - "tier": 9.0, - "symbol": "1000RATS/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "1168150.0" + "cum": "152770.0" } } ], @@ -1504,13 +1778,13 @@ "symbol": "1000SATS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "10", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -1520,136 +1794,153 @@ "tier": 2.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "50000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "200000", - "notionalFloor": "50000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "300.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "400000", - "notionalFloor": "200000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1300.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "400000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "11300.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "51300.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "76300.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "326300.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1000SATS/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000SATS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1076300.0" + "cum": "2284650.0" } } ], @@ -1987,14 +2278,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, + "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "1", "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -2004,14 +2295,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -2020,118 +2311,101 @@ "symbol": "1000WHY/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "1000WHY/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "375475.0" + "cum": "152770.0" } } ], @@ -2142,14 +2416,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -2159,14 +2433,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -2175,15 +2449,15 @@ "symbol": "1000X/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -2191,102 +2465,102 @@ "tier": 4.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "700000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 800000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "800000", - "notionalFloor": "700000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "119225.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "1000X/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 900000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "900000", - "notionalFloor": "800000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "319225.0" + "cum": "2267225.0" } } ], @@ -2330,13 +2604,13 @@ "symbol": "1000XEC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -2346,102 +2620,119 @@ "tier": 4.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "156725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1000XEC/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1000XEC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "531725.0" + "cum": "2284650.0" } } ], @@ -2451,13 +2742,13 @@ "symbol": "1INCH/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -2467,136 +2758,153 @@ "tier": 2.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "1INCH/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1INCH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -2606,13 +2914,13 @@ "symbol": "1MBABYDOGE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -2622,14 +2930,547 @@ "tier": 2.0, "symbol": "1MBABYDOGE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", "initialLeverage": "10", - "notionalCap": "30000", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "1MBABYDOGE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "A/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "A/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" + } + } + ], + "A2Z/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "A2Z/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "AAVE/USDC:USDC": [ + { + "tier": 1.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 0.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "10000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 10000.0, + "maxNotional": 60000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "60000", "notionalFloor": "10000", "maintMarginRatio": "0.015", "cum": "50.0" @@ -2637,121 +3478,121 @@ }, { "tier": 3.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 60000.0, + "maxNotional": 300000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "300000", + "notionalFloor": "60000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "350.0" } }, { "tier": 4.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 300000.0, + "maxNotional": 600000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "600000", + "notionalFloor": "300000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "1850.0" } }, { "tier": 5.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 600000.0, + "maxNotional": 3000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "3000000", + "notionalFloor": "600000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "16850.0" } }, { "tier": 6.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 3000000.0, + "maxNotional": 6000000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "6000000", + "notionalFloor": "3000000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "166850.0" } }, { "tier": 7.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 6000000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "7500000", + "notionalFloor": "6000000", "maintMarginRatio": "0.125", - "cum": "133450.0" + "cum": "316850.0" } }, { "tier": 8.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 15000000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "15000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.25", - "cum": "445950.0" + "cum": "1254350.0" } }, { "tier": 9.0, - "symbol": "1MBABYDOGE/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "symbol": "AAVE/USDC:USDC", + "currency": "USDC", + "minNotional": 15000000.0, + "maxNotional": 30000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "30000000", + "notionalFloor": "15000000", "maintMarginRatio": "0.5", - "cum": "1195950.0" + "cum": "5004350.0" } } ], @@ -2918,10 +3759,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -2933,13 +3774,13 @@ "symbol": "ACE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -2949,102 +3790,119 @@ "tier": 3.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "50000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "50000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "1400.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "26400.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "51400.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "207650.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ACE/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ACE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "832650.0" + "cum": "2267225.0" } } ], @@ -3055,14 +3913,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -3071,15 +3929,15 @@ "symbol": "ACH/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -3087,17 +3945,17 @@ "tier": 3.0, "symbol": "ACH/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", + "initialLeverage": "25", "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { @@ -3105,84 +3963,118 @@ "symbol": "ACH/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "8", - "notionalCap": "200000", + "initialLeverage": "20", + "notionalCap": "50000", "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ACH/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ACH/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ACH/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ACH/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ACH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ACH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2284650.0" } } ], @@ -3192,13 +4084,13 @@ "symbol": "ACT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "10", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -3208,136 +4100,153 @@ "tier": 2.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "50000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "50000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "300.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "500000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1800.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "500000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "14300.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "54300.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "79300.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "329300.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ACT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ACT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1079300.0" + "cum": "2284650.0" } } ], @@ -3347,15 +4256,15 @@ "symbol": "ACX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -3363,136 +4272,136 @@ "tier": 2.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ACX/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267225.0" } } ], @@ -3829,15 +4738,15 @@ "symbol": "AERGO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "7", - "notionalCap": "40000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -3845,85 +4754,136 @@ "tier": 2.0, "symbol": "AERGO/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1000.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "AERGO/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11000.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AERGO/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21000.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AERGO/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "600000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83500.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AERGO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "AERGO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "AERGO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "AERGO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "700000", - "notionalFloor": "600000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "233500.0" + "cum": "2267225.0" } } ], @@ -3935,10 +4895,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -3952,10 +4912,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -3967,13 +4927,13 @@ "symbol": "AERO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -3983,102 +4943,119 @@ "tier": 4.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "AERO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AERO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -4090,10 +5067,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -4105,13 +5082,13 @@ "symbol": "AEVO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -4121,102 +5098,119 @@ "tier": 3.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "275.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 1000000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "2775.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "52775.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "102775.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "415275.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AEVO/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "AEVO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1665275.0" + "cum": "2267225.0" } } ], @@ -4347,15 +5341,15 @@ "symbol": "AGLD/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -4363,136 +5357,274 @@ "tier": 2.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "AGLD/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1168150.0" + "cum": "2267225.0" + } + } + ], + "AGT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "AGT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -4504,10 +5636,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -4519,13 +5651,13 @@ "symbol": "AI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -4535,102 +5667,119 @@ "tier": 3.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "80000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "80000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "2150.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "42150.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "82150.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "332150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AI/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "AI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "2267225.0" } } ], @@ -4641,14 +5790,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -4657,15 +5806,15 @@ "symbol": "AI16Z/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -4673,119 +5822,550 @@ "tier": 3.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "334505.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "AI16Z/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2267225.0" + } + } + ], + "AIN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "AIN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "AIO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "AIO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "AIOT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1550.0" + } + }, + { + "tier": 5.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2800.0" + } + }, + { + "tier": 6.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "13225.0" + } + }, + { + "tier": 7.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "388075.0" + } + }, + { + "tier": 8.0, + "symbol": "AIOT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2263075.0" } } ], @@ -4797,10 +6377,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -4812,13 +6392,13 @@ "symbol": "AIXBT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 9.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "9", - "notionalCap": "16000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -4828,119 +6408,136 @@ "tier": 3.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "80000", - "notionalFloor": "16000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "105.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "160000", - "notionalFloor": "80000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "800000", - "notionalFloor": "160000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "800000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "AIXBT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4100000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AIXBT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4100000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2284650.0" } } ], @@ -4951,14 +6548,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -4968,14 +6565,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -4984,15 +6581,15 @@ "symbol": "AKT/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -5000,102 +6597,102 @@ "tier": 4.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "AKT/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -5106,14 +6703,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -5123,14 +6720,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "8", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -5139,15 +6736,15 @@ "symbol": "ALCH/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -5155,102 +6752,102 @@ "tier": 4.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ALCH/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -5260,13 +6857,13 @@ "symbol": "ALGO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -5276,136 +6873,170 @@ "tier": 2.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "40000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "250.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "1250.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.05", - "cum": "11250.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111250.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "211250.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "836250.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "ALGO/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "ALGO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ALGO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "20000000", - "notionalFloor": "10000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "3336250.0" + "cum": "2347727.5" } } ], @@ -5432,13 +7063,13 @@ "symbol": "ALICE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -5448,7 +7079,7 @@ "tier": 3.0, "symbol": "ALICE/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -5456,9 +7087,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -5466,84 +7097,290 @@ "symbol": "ALICE/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ALICE/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ALICE/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ALICE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ALICE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ALICE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" + } + } + ], + "ALL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ALL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" } } ], @@ -5553,15 +7390,15 @@ "symbol": "ALPACA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.08, + "maxLeverage": 5.0, "info": { "bracket": "1", - "initialLeverage": "10", - "notionalCap": "5000", + "initialLeverage": "5", + "notionalCap": "100000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.08", "cum": "0.0" } }, @@ -5569,123 +7406,55 @@ "tier": 2.0, "symbol": "ALPACA/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 9.0, + "minNotional": 100000.0, + "maxNotional": 200000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 4.0, "info": { "bracket": "2", - "initialLeverage": "9", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "initialLeverage": "4", + "notionalCap": "200000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1", + "cum": "2000.0" } }, { "tier": 3.0, "symbol": "ALPACA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "minNotional": 200000.0, + "maxNotional": 400000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 3.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "initialLeverage": "3", + "notionalCap": "400000", + "notionalFloor": "200000", + "maintMarginRatio": "0.125", + "cum": "7000.0" } }, { "tier": 4.0, "symbol": "ALPACA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, - "info": { - "bracket": "4", - "initialLeverage": "7", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" - } - }, - { - "tier": 5.0, - "symbol": "ALPACA/USDT:USDT", - "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, - "info": { - "bracket": "5", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" - } - }, - { - "tier": 6.0, - "symbol": "ALPACA/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" - } - }, - { - "tier": 7.0, - "symbol": "ALPACA/USDT:USDT", - "currency": "USDT", "minNotional": 400000.0, - "maxNotional": 450000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "450000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" - } - }, - { - "tier": 8.0, - "symbol": "ALPACA/USDT:USDT", - "currency": "USDT", - "minNotional": 450000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "4", "initialLeverage": "2", "notionalCap": "500000", - "notionalFloor": "450000", + "notionalFloor": "400000", "maintMarginRatio": "0.25", - "cum": "77425.0" + "cum": "57000.0" } }, { - "tier": 9.0, + "tier": 5.0, "symbol": "ALPACA/USDT:USDT", "currency": "USDT", "minNotional": 500000.0, @@ -5693,12 +7462,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "5", "initialLeverage": "1", "notionalCap": "550000", "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "202425.0" + "cum": "182000.0" } } ], @@ -5709,6 +7478,144 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "ALPHA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], + "ALPINE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ALPINE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -5722,121 +7629,121 @@ }, { "tier": 2.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "7", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "83250.0" + "cum": "387825.0" } }, { "tier": 8.0, - "symbol": "ALPHA/USDT:USDT", + "symbol": "ALPINE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2262825.0" } } ], @@ -5847,14 +7754,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -5863,15 +7770,15 @@ "symbol": "ALT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxNotional": 12500.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "25", + "notionalCap": "12500", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -5879,119 +7786,119 @@ "tier": 3.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 12500.0, + "maxNotional": 27500.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "20", + "notionalCap": "27500", + "notionalFloor": "12500", + "maintMarginRatio": "0.025", + "cum": "87.5" } }, { "tier": 4.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 27500.0, + "maxNotional": 70000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "10", + "notionalCap": "70000", + "notionalFloor": "27500", + "maintMarginRatio": "0.05", + "cum": "775.0" } }, { "tier": 5.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 70000.0, + "maxNotional": 140000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "notionalCap": "140000", + "notionalFloor": "70000", + "maintMarginRatio": "0.1", + "cum": "4275.0" } }, { "tier": 6.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 140000.0, + "maxNotional": 300000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "notionalCap": "300000", + "notionalFloor": "140000", + "maintMarginRatio": "0.125", + "cum": "7775.0" } }, { "tier": 7.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 300000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "notionalCap": "4500000", + "notionalFloor": "300000", + "maintMarginRatio": "0.1667", + "cum": "20285.0" } }, { "tier": 8.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "334505.0" + "cum": "395135.0" } }, { "tier": 9.0, "symbol": "ALT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2270135.0" } } ], @@ -6139,13 +8046,13 @@ "symbol": "ANIME/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -6155,102 +8062,119 @@ "tier": 4.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ANIME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ANIME/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -6261,14 +8185,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -6277,101 +8201,135 @@ "symbol": "ANKR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ANKR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ANKR/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "20700.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ANKR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "45700.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ANKR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "295700.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ANKR/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ANKR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ANKR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1795700.0" + "cum": "2267225.0" } } ], @@ -6381,15 +8339,15 @@ "symbol": "APE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.0065, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.0065", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -6397,153 +8355,153 @@ "tier": 2.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "25000", - "maintMarginRatio": "0.01", - "cum": "87.5" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.015", - "cum": "337.5" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.02", - "cum": "837.5" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.025", - "cum": "3337.5" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "28337.5" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "178337.5" + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "8", "initialLeverage": "3", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "278337.5" + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "9", "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "903337.5" + "cum": "409650.0" } }, { "tier": 10.0, "symbol": "APE/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "10", "initialLeverage": "1", - "notionalCap": "7000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2403337.5" + "cum": "2284650.0" } } ], @@ -6554,14 +8512,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -6570,118 +8528,152 @@ "symbol": "API3/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.06, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.06", - "cum": "1675.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "21675.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "61675.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "311675.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "API3/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "API3/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "API3/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1061675.0" + "cum": "2284650.0" } } ], @@ -6846,13 +8838,13 @@ "symbol": "AR/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -6862,136 +8854,153 @@ "tier": 2.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "AR/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -7141,10 +9150,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.006, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.006", @@ -7158,10 +9167,10 @@ "minNotional": 5000.0, "maxNotional": 50000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "50000", "notionalFloor": "5000", "maintMarginRatio": "0.01", @@ -7175,10 +9184,10 @@ "minNotional": 50000.0, "maxNotional": 100000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "100000", "notionalFloor": "50000", "maintMarginRatio": "0.015", @@ -7192,10 +9201,10 @@ "minNotional": 100000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", + "initialLeverage": "20", "notionalCap": "500000", "notionalFloor": "100000", "maintMarginRatio": "0.02", @@ -7209,10 +9218,10 @@ "minNotional": 500000.0, "maxNotional": 1000000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", + "initialLeverage": "10", "notionalCap": "1000000", "notionalFloor": "500000", "maintMarginRatio": "0.025", @@ -7226,10 +9235,10 @@ "minNotional": 1000000.0, "maxNotional": 5000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "6", + "initialLeverage": "5", "notionalCap": "5000000", "notionalFloor": "1000000", "maintMarginRatio": "0.05", @@ -7243,10 +9252,10 @@ "minNotional": 5000000.0, "maxNotional": 6000000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "5", + "initialLeverage": "4", "notionalCap": "6000000", "notionalFloor": "5000000", "maintMarginRatio": "0.1", @@ -7260,10 +9269,10 @@ "minNotional": 6000000.0, "maxNotional": 7000000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "4", + "initialLeverage": "3", "notionalCap": "7000000", "notionalFloor": "6000000", "maintMarginRatio": "0.125", @@ -7312,6 +9321,144 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "ARC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "ARK/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ARK/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { @@ -7325,139 +9472,18 @@ }, { "tier": 2.0, - "symbol": "ARC/USDT:USDT", + "symbol": "ARK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "ARC/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "ARC/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "ARC/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "ARC/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" - } - }, - { - "tier": 7.0, - "symbol": "ARC/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.5", - "cum": "648150.0" - } - } - ], - "ARK/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ARK/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, - "info": { - "bracket": "1", - "initialLeverage": "10", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ARK/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 9.0, - "info": { - "bracket": "2", - "initialLeverage": "9", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -7466,118 +9492,101 @@ "symbol": "ARK/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "20000", + "initialLeverage": "10", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "ARK/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "ARK/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "ARK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "ARK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23675.0" + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "ARK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148675.0" - } - }, - { - "tier": 9.0, - "symbol": "ARK/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "898675.0" + "cum": "152770.0" } } ], @@ -7587,13 +9596,13 @@ "symbol": "ARKM/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -7603,136 +9612,153 @@ "tier": 2.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ARKM/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ARKM/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -7743,14 +9769,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -7759,101 +9785,256 @@ "symbol": "ARPA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "15000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "ARPA/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 600000.0, + "minNotional": 15000.0, + "maxNotional": 32500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "25000", + "initialLeverage": "10", + "notionalCap": "32500", + "notionalFloor": "15000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "425.0" } }, { "tier": 4.0, "symbol": "ARPA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "600000", + "initialLeverage": "5", + "notionalCap": "75000", + "notionalFloor": "32500", "maintMarginRatio": "0.1", - "cum": "30650.0" + "cum": "2050.0" } }, { "tier": 5.0, "symbol": "ARPA/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "75000", "maintMarginRatio": "0.125", - "cum": "70650.0" + "cum": "3925.0" } }, { "tier": 6.0, "symbol": "ARPA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "320650.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, "symbol": "ARPA/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" + } + }, + { + "tier": 8.0, + "symbol": "ARPA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1820650.0" + "cum": "2264200.0" + } + } + ], + "ASR/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "ASR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -7880,13 +10061,13 @@ "symbol": "ASTR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 12500.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "12500", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -7896,102 +10077,119 @@ "tier": 3.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 25000.0, + "minNotional": 12500.0, + "maxNotional": 27500.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "3", "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "20000", + "notionalCap": "27500", + "notionalFloor": "12500", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "87.5" } }, { "tier": 4.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 27500.0, + "maxNotional": 70000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "70000", + "notionalFloor": "27500", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "775.0" } }, { "tier": 5.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 70000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "70000", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "4275.0" } }, { "tier": 6.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "7400.0" } }, { "tier": 7.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17825.0" } }, { "tier": 8.0, "symbol": "ASTR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392675.0" + } + }, + { + "tier": 9.0, + "symbol": "ASTR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267675.0" } } ], @@ -8002,110 +10200,6 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ATA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "ATA/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "ATA/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5650.0" - } - }, - { - "tier": 5.0, - "symbol": "ATA/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, - "info": { - "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11900.0" - } - }, - { - "tier": 6.0, - "symbol": "ATA/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "6", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "386900.0" - } - } - ], - "ATH/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ATH/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -8119,16 +10213,16 @@ }, { "tier": 2.0, - "symbol": "ATH/USDT:USDT", + "symbol": "ATA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -8136,104 +10230,293 @@ }, { "tier": 3.0, - "symbol": "ATH/USDT:USDT", + "symbol": "ATA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "3", "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ATA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "ATH/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ATH/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ATH/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ATH/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ATH/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "30000", - "maintMarginRatio": "0.05", - "cum": "875.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ATH/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15875.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ATH/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "30875.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ATH/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ATH/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ATH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ATH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "2284650.0" } } ], @@ -8416,144 +10699,6 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "1", - "initialLeverage": "10", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, - "info": { - "bracket": "2", - "initialLeverage": "8", - "notionalCap": "20000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "3", - "initialLeverage": "6", - "notionalCap": "30000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" - } - }, - { - "tier": 4.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "30000", - "maintMarginRatio": "0.05", - "cum": "875.0" - } - }, - { - "tier": 5.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15875.0" - } - }, - { - "tier": 6.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "30875.0" - } - }, - { - "tier": 7.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" - } - }, - { - "tier": 8.0, - "symbol": "AUCTION/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "499625.0" - } - } - ], - "AVA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "AVA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -8567,7 +10712,7 @@ }, { "tier": 2.0, - "symbol": "AVA/USDT:USDT", + "symbol": "AUCTION/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -8584,16 +10729,16 @@ }, { "tier": 3.0, - "symbol": "AVA/USDT:USDT", + "symbol": "AUCTION/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -8601,104 +10746,276 @@ }, { "tier": 4.0, - "symbol": "AVA/USDT:USDT", + "symbol": "AUCTION/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AUCTION/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "AVA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AVA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AVA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "AVA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "AVA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "AVA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "AVA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "AVA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "AVA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "AVA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -8709,14 +11026,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -8725,101 +11042,118 @@ "symbol": "AVAAI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "15000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "AVAAI/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 15000.0, + "maxNotional": 32500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "32500", + "notionalFloor": "15000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "425.0" } }, { "tier": 4.0, "symbol": "AVAAI/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "75000", + "notionalFloor": "32500", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "2050.0" } }, { "tier": 5.0, "symbol": "AVAAI/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "75000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "3925.0" } }, { "tier": 6.0, "symbol": "AVAAI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, "symbol": "AVAAI/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" + } + }, + { + "tier": 8.0, + "symbol": "AVAAI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "648150.0" + "cum": "2264200.0" } } ], @@ -9167,6 +11501,144 @@ } } ], + "AWE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "AWE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], "AXL/USDT:USDT": [ { "tier": 1.0, @@ -9207,13 +11679,13 @@ "symbol": "AXL/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -9223,102 +11695,119 @@ "tier": 4.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "AXL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AXL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -9328,15 +11817,15 @@ "symbol": "AXS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.007, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "20000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.007", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -9344,136 +11833,463 @@ "tier": 2.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 8.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "400000", - "notionalFloor": "20000", - "maintMarginRatio": "0.01", - "cum": "60.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 600000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "600000", - "notionalFloor": "400000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "4060.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1200000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "22060.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 1200000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.1", - "cum": "82060.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "132060.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.15, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.15", - "cum": "194560.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.25", - "cum": "494560.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "AXS/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "AXS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1369560.0" + "cum": "2284650.0" + } + } + ], + "B/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "B/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "B2/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "B2/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -9484,14 +12300,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -9501,14 +12317,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -9517,15 +12333,15 @@ "symbol": "B3/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -9533,102 +12349,102 @@ "tier": 4.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "B3/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -9639,14 +12455,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "5", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.1", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -9656,15 +12472,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "4", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.125", - "cum": "125.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { @@ -9672,50 +12488,135 @@ "symbol": "BABY/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.167, - "maxLeverage": 3.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "3", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.167", - "cum": "545.0" + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BABY/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "2", - "notionalCap": "80000", - "notionalFloor": "30000", - "maintMarginRatio": "0.25", - "cum": "3035.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BABY/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "BABY/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "BABY/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "BABY/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "BABY/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BABY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "5", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "200000", - "notionalFloor": "80000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "23035.0" + "cum": "2284650.0" } } ], @@ -9847,14 +12748,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 40.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "40", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -9863,101 +12764,118 @@ "symbol": "BAKE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BAKE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "675.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "BAKE/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "5675.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "BAKE/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "250000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "11925.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "BAKE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "136925.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "BAKE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "BAKE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "511925.0" + "cum": "152770.0" } } ], @@ -10071,13 +12989,13 @@ "symbol": "BAN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 30000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "8", - "notionalCap": "30000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", "cum": "0.0" @@ -10087,119 +13005,136 @@ "tier": 2.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "900.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "8400.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 1700000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1700000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "83400.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 1700000.0, - "maxNotional": 1800000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "1800000", - "notionalFloor": "1700000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "125900.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 1800000.0, - "maxNotional": 1900000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1900000", - "notionalFloor": "1800000", - "maintMarginRatio": "0.25", - "cum": "350900.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BAN/USDT:USDT", "currency": "USDT", - "minNotional": 1900000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BAN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1900000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "825900.0" + "cum": "2267225.0" } } ], @@ -10210,14 +13145,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -10227,14 +13162,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -10243,15 +13178,15 @@ "symbol": "BANANA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -10259,102 +13194,102 @@ "tier": 4.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "BANANA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" } } ], @@ -10364,15 +13299,15 @@ "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 500.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", + "initialLeverage": "75", + "notionalCap": "500", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -10380,102 +13315,153 @@ "tier": 2.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 500.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "500", + "maintMarginRatio": "0.015", + "cum": "2.5" } }, { "tier": 3.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "27.5" } }, { "tier": 4.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "77.5" } }, { "tier": 5.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "702.5" } }, { "tier": 6.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3827.5" } }, { "tier": 7.0, "symbol": "BANANAS31/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6952.5" + } + }, + { + "tier": 8.0, + "symbol": "BANANAS31/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17377.5" + } + }, + { + "tier": 9.0, + "symbol": "BANANAS31/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392227.5" + } + }, + { + "tier": 10.0, + "symbol": "BANANAS31/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2267227.5" } } ], @@ -10502,13 +13488,13 @@ "symbol": "BAND/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -10518,7 +13504,7 @@ "tier": 3.0, "symbol": "BAND/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -10526,9 +13512,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -10536,84 +13522,239 @@ "symbol": "BAND/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BAND/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BAND/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BAND/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BAND/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BAND/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "BANK/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BANK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2262825.0" } } ], @@ -10640,13 +13781,13 @@ "symbol": "BAT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -10656,7 +13797,7 @@ "tier": 3.0, "symbol": "BAT/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -10664,9 +13805,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -10674,84 +13815,101 @@ "symbol": "BAT/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BAT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BAT/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BAT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BAT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BAT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -10763,10 +13921,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -10778,13 +13936,13 @@ "symbol": "BB/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -10794,102 +13952,119 @@ "tier": 3.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "80000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "80000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "2150.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "42150.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "82150.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "332150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BB/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BB/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "2267225.0" } } ], @@ -11237,6 +14412,144 @@ } } ], + "BDXN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 40.0, + "info": { + "bracket": "1", + "initialLeverage": "40", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "BDXN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], "BEAMX/USDT:USDT": [ { "tier": 1.0, @@ -11277,13 +14590,13 @@ "symbol": "BEAMX/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -11293,102 +14606,119 @@ "tier": 4.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "BEAMX/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BEAMX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -11399,14 +14729,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -11415,101 +14745,118 @@ "symbol": "BEL/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "BEL/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "200000", - "notionalFloor": "50000", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "1275.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "BEL/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "11275.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "BEL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23775.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "BEL/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148775.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "BEL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BEL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "523775.0" + "cum": "2262825.0" } } ], @@ -11553,13 +14900,13 @@ "symbol": "BERA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -11569,102 +14916,119 @@ "tier": 4.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "BERA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BERA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -11675,14 +15039,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -11692,14 +15056,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -11708,15 +15072,15 @@ "symbol": "BICO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -11724,102 +15088,102 @@ "tier": 4.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "BICO/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], @@ -11830,14 +15194,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -11846,101 +15210,118 @@ "symbol": "BID/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "BID/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "25000", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "BID/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "BID/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "500000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "BID/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "BID/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BID/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2262825.0" } } ], @@ -11950,13 +15331,13 @@ "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -11966,136 +15347,153 @@ "tier": 2.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "3500000", - "maintMarginRatio": "0.25", - "cum": "595950.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "BIGTIME/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BIGTIME/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1595950.0" + "cum": "2284650.0" } } ], @@ -12107,10 +15505,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -12124,10 +15522,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -12139,13 +15537,13 @@ "symbol": "BIO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -12155,68 +15553,68 @@ "tier": 4.0, "symbol": "BIO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "BIO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "BIO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "BIO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 250000.0, "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { @@ -12225,15 +15623,15 @@ "currency": "USDT", "minNotional": 750000.0, "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "4", "notionalCap": "1500000", "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { @@ -12241,16 +15639,50 @@ "symbol": "BIO/USDT:USDT", "currency": "USDT", "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "BIO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "BIO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2347727.5" } } ], @@ -12261,14 +15693,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -12277,15 +15709,15 @@ "symbol": "BLUR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -12293,102 +15725,136 @@ "tier": 3.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.025", - "cum": "150.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2650.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "32650.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "72650.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "322650.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BLUR/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "BLUR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BLUR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1822650.0" + "cum": "2284650.0" } } ], @@ -12503,14 +15969,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -12519,101 +15985,118 @@ "symbol": "BMT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "BMT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "BMT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "BMT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "BMT/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "BMT/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BMT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2262825.0" } } ], @@ -12984,101 +16467,135 @@ "symbol": "BNT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "BNT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BNT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2267225.0" } } ], @@ -13177,10 +16694,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -13192,118 +16709,152 @@ "symbol": "BOME/USDC:USDC", "currency": "USDC", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 50000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "300.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1200000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "15300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 1200000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.1", - "cum": "75300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "150300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 4000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "650300.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BOME/USDC:USDC", "currency": "USDC", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "BOME/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BOME/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2150300.0" + "cum": "2284650.0" } } ], @@ -13313,13 +16864,13 @@ "symbol": "BOME/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -13329,136 +16880,153 @@ "tier": 2.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "600000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "16850.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "66850.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "104350.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "354350.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "BOME/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BOME/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "979350.0" + "cum": "2284650.0" } } ], @@ -13589,15 +17157,15 @@ "symbol": "BR/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 500.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", + "initialLeverage": "50", + "notionalCap": "500", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -13605,102 +17173,136 @@ "tier": 2.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 500.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 40.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" + "initialLeverage": "40", + "notionalCap": "5000", + "notionalFloor": "500", + "maintMarginRatio": "0.02", + "cum": "2.5" } }, { "tier": 3.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "27.5" } }, { "tier": 4.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "277.5" } }, { "tier": 5.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1527.5" } }, { "tier": 6.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2777.5" } }, { "tier": 7.0, "symbol": "BR/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6947.5" + } + }, + { + "tier": 8.0, + "symbol": "BR/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27772.5" + } + }, + { + "tier": 9.0, + "symbol": "BR/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "152772.5" } } ], @@ -13710,13 +17312,13 @@ "symbol": "BRETT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -13726,136 +17328,153 @@ "tier": 2.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "93150.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "343150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "BRETT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "BRETT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "968150.0" + "cum": "2284650.0" } } ], @@ -13866,14 +17485,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -13882,101 +17501,118 @@ "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "BROCCOLI714/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BROCCOLI714/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2262825.0" } } ], @@ -14003,13 +17639,13 @@ "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "25.0" @@ -14019,85 +17655,102 @@ "tier": 3.0, "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "BROCCOLIF3B/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "BROCCOLIF3B/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "152770.0" } } ], @@ -14124,101 +17777,135 @@ "symbol": "BSV/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "BSV/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "BSV/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "BSV/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "BSV/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "BSV/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "BSV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "BSV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -14229,14 +17916,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -14246,14 +17933,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -14262,84 +17949,84 @@ "symbol": "BSW/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "BSW/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "BSW/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "BSW/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "BSW/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", + "initialLeverage": "2", "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { @@ -14347,33 +18034,16 @@ "symbol": "BSW/USDT:USDT", "currency": "USDT", "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "BSW/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "152770.0" } } ], @@ -14555,13 +18225,13 @@ "symbol": "BTC/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, + "maxNotional": 300000.0, "maintenanceMarginRate": 0.004, - "maxLeverage": 125.0, + "maxLeverage": 150.0, "info": { "bracket": "1", - "initialLeverage": "125", - "notionalCap": "50000", + "initialLeverage": "150", + "notionalCap": "300000", "notionalFloor": "0", "maintMarginRatio": "0.004", "cum": "0.0" @@ -14571,24 +18241,24 @@ "tier": 2.0, "symbol": "BTC/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, + "minNotional": 300000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.005, "maxLeverage": 100.0, "info": { "bracket": "2", "initialLeverage": "100", - "notionalCap": "600000", - "notionalFloor": "50000", + "notionalCap": "800000", + "notionalFloor": "300000", "maintMarginRatio": "0.005", - "cum": "50.0" + "cum": "300.0" } }, { "tier": 3.0, "symbol": "BTC/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 800000.0, "maxNotional": 3000000.0, "maintenanceMarginRate": 0.0065, "maxLeverage": 75.0, @@ -14596,9 +18266,9 @@ "bracket": "3", "initialLeverage": "75", "notionalCap": "3000000", - "notionalFloor": "600000", + "notionalFloor": "800000", "maintMarginRatio": "0.0065", - "cum": "950.0" + "cum": "1500.0" } }, { @@ -14615,7 +18285,7 @@ "notionalCap": "12000000", "notionalFloor": "3000000", "maintMarginRatio": "0.01", - "cum": "11450.0" + "cum": "12000.0" } }, { @@ -14632,7 +18302,7 @@ "notionalCap": "70000000", "notionalFloor": "12000000", "maintMarginRatio": "0.02", - "cum": "131450.0" + "cum": "132000.0" } }, { @@ -14649,7 +18319,7 @@ "notionalCap": "100000000", "notionalFloor": "70000000", "maintMarginRatio": "0.025", - "cum": "481450.0" + "cum": "482000.0" } }, { @@ -14666,7 +18336,7 @@ "notionalCap": "230000000", "notionalFloor": "100000000", "maintMarginRatio": "0.05", - "cum": "2981450.0" + "cum": "2982000.0" } }, { @@ -14683,7 +18353,7 @@ "notionalCap": "480000000", "notionalFloor": "230000000", "maintMarginRatio": "0.1", - "cum": "14481450.0" + "cum": "14482000.0" } }, { @@ -14700,7 +18370,7 @@ "notionalCap": "600000000", "notionalFloor": "480000000", "maintMarginRatio": "0.125", - "cum": "26481450.0" + "cum": "26482000.0" } }, { @@ -14717,7 +18387,7 @@ "notionalCap": "800000000", "notionalFloor": "600000000", "maintMarginRatio": "0.15", - "cum": "41481450.0" + "cum": "41482000.0" } }, { @@ -14734,7 +18404,7 @@ "notionalCap": "1200000000", "notionalFloor": "800000000", "maintMarginRatio": "0.25", - "cum": "121481450.0" + "cum": "121482000.0" } }, { @@ -14751,145 +18421,7 @@ "notionalCap": "1800000000", "notionalFloor": "1200000000", "maintMarginRatio": "0.5", - "cum": "421481450.0" - } - } - ], - "BTC/USDT:USDT-250627": [ - { - "tier": 1.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 50.0, - "info": { - "bracket": "1", - "initialLeverage": "50", - "notionalCap": "50000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 375000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "2", - "initialLeverage": "25", - "notionalCap": "375000", - "notionalFloor": "50000", - "maintMarginRatio": "0.02", - "cum": "500.0" - } - }, - { - "tier": 3.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 375000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "375000", - "maintMarginRatio": "0.05", - "cum": "11750.0" - } - }, - { - "tier": 4.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111750.0" - } - }, - { - "tier": 5.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "10000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "211750.0" - } - }, - { - "tier": 6.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, - "maintenanceMarginRate": 0.15, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "20000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.15", - "cum": "461750.0" - } - }, - { - "tier": 7.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 20000000.0, - "maxNotional": 40000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "40000000", - "notionalFloor": "20000000", - "maintMarginRatio": "0.25", - "cum": "2461750.0" - } - }, - { - "tier": 8.0, - "symbol": "BTC/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 40000000.0, - "maxNotional": 120000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "120000000", - "notionalFloor": "40000000", - "maintMarginRatio": "0.5", - "cum": "12461750.0" + "cum": "421482000.0" } } ], @@ -15031,6 +18563,144 @@ } } ], + "BTC/USDT:USDT-251226": [ + { + "tier": 1.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "50000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 375000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "375000", + "notionalFloor": "50000", + "maintMarginRatio": "0.02", + "cum": "500.0" + } + }, + { + "tier": 3.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 375000.0, + "maxNotional": 2000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "2000000", + "notionalFloor": "375000", + "maintMarginRatio": "0.05", + "cum": "11750.0" + } + }, + { + "tier": 4.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 2000000.0, + "maxNotional": 4000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "4000000", + "notionalFloor": "2000000", + "maintMarginRatio": "0.1", + "cum": "111750.0" + } + }, + { + "tier": 5.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 4000000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "4000000", + "maintMarginRatio": "0.125", + "cum": "211750.0" + } + }, + { + "tier": 6.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 10000000.0, + "maxNotional": 20000000.0, + "maintenanceMarginRate": 0.15, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "20000000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.15", + "cum": "461750.0" + } + }, + { + "tier": 7.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 20000000.0, + "maxNotional": 40000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "40000000", + "notionalFloor": "20000000", + "maintMarginRatio": "0.25", + "cum": "2461750.0" + } + }, + { + "tier": 8.0, + "symbol": "BTC/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 40000000.0, + "maxNotional": 120000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "120000000", + "notionalFloor": "40000000", + "maintMarginRatio": "0.5", + "cum": "12461750.0" + } + } + ], "BTCDOM/USDT:USDT": [ { "tier": 1.0, @@ -15239,6 +18909,299 @@ } } ], + "BULLA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "BULLA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "C/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "C/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], "C98/USDT:USDT": [ { "tier": 1.0, @@ -15246,14 +19209,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -15262,15 +19225,15 @@ "symbol": "C98/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -15278,85 +19241,119 @@ "tier": 3.0, "symbol": "C98/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "C98/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "C98/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.125", - "cum": "35650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "C98/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "160650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "C98/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "C98/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "C98/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "910650.0" + "cum": "2267225.0" } } ], @@ -15366,13 +19363,13 @@ "symbol": "CAKE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -15382,136 +19379,308 @@ "tier": 2.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "20000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "100000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "CAKE/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "CAKE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "CARV/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CARV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267225.0" } } ], @@ -15521,15 +19690,15 @@ "symbol": "CATI/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -15537,16 +19706,16 @@ "tier": 2.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", "cum": "50.0" } }, @@ -15554,119 +19723,102 @@ "tier": 3.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.02, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "150000", - "notionalFloor": "30000", - "maintMarginRatio": "0.02", - "cum": "200.0" + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.025", - "cum": "950.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "48450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1200000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "73450.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "CATI/USDT:USDT", "currency": "USDT", - "minNotional": 1200000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.25", - "cum": "223450.0" - } - }, - { - "tier": 9.0, - "symbol": "CATI/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "598450.0" + "cum": "2262825.0" } } ], @@ -15678,282 +19830,6 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "16000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" - } - }, - { - "tier": 4.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" - } - }, - { - "tier": 5.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" - } - }, - { - "tier": 6.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" - } - }, - { - "tier": 7.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" - } - }, - { - "tier": 8.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" - } - }, - { - "tier": 9.0, - "symbol": "CELO/USDT:USDT", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.5", - "cum": "1334505.0" - } - } - ], - "CELR/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "30650.0" - } - }, - { - "tier": 5.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "70650.0" - } - }, - { - "tier": 6.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "320650.0" - } - }, - { - "tier": 7.0, - "symbol": "CELR/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.5", - "cum": "1820650.0" - } - } - ], - "CETUS/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "CETUS/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", @@ -15966,7 +19842,7 @@ }, { "tier": 2.0, - "symbol": "CETUS/USDT:USDT", + "symbol": "CELO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -15983,16 +19859,16 @@ }, { "tier": 3.0, - "symbol": "CETUS/USDT:USDT", + "symbol": "CELO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -16000,104 +19876,431 @@ }, { "tier": 4.0, - "symbol": "CETUS/USDT:USDT", + "symbol": "CELO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "CELO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "CELR/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CELR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "CETUS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CETUS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CETUS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CETUS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CETUS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CETUS/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "CETUS/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "CETUS/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "CETUS/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "CETUS/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -16107,13 +20310,13 @@ "symbol": "CFX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -16123,136 +20326,170 @@ "tier": 2.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "400000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 600000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "400000", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "2350.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "17350.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "117350.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.125", - "cum": "179850.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.25", - "cum": "554850.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "CFX/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "CFX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "CFX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1429850.0" + "cum": "2347727.5" } } ], @@ -16263,14 +20500,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -16280,14 +20517,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -16296,15 +20533,15 @@ "symbol": "CGPT/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -16312,102 +20549,102 @@ "tier": 4.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "CGPT/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -16418,14 +20655,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -16435,15 +20672,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -16452,15 +20689,15 @@ "currency": "USDT", "minNotional": 10000.0, "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { @@ -16468,101 +20705,84 @@ "symbol": "CHESS/USDT:USDT", "currency": "USDT", "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "40000", + "initialLeverage": "5", + "notionalCap": "50000", "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "CHESS/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "CHESS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "CHESS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "CHESS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "CHESS/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2262825.0" } } ], @@ -16572,13 +20792,13 @@ "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -16588,136 +20808,153 @@ "tier": 2.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "CHILLGUY/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "CHILLGUY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -16728,14 +20965,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -16745,14 +20982,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -16761,15 +20998,15 @@ "symbol": "CHR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -16777,102 +21014,102 @@ "tier": 4.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "CHR/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" } } ], @@ -16899,13 +21136,13 @@ "symbol": "CHZ/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "16000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -16915,119 +21152,136 @@ "tier": 3.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "80000", - "notionalFloor": "16000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "105.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "160000", - "notionalFloor": "80000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "800000", - "notionalFloor": "160000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "800000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "CHZ/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "CHZ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2284650.0" } } ], @@ -17037,15 +21291,15 @@ "symbol": "CKB/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -17053,136 +21307,136 @@ "tier": 2.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 12500.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "12500", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 12500.0, + "maxNotional": 27500.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "27500", + "notionalFloor": "12500", + "maintMarginRatio": "0.025", + "cum": "87.5" } }, { "tier": 4.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 27500.0, + "maxNotional": 70000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "70000", + "notionalFloor": "27500", + "maintMarginRatio": "0.05", + "cum": "775.0" } }, { "tier": 5.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 70000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "70000", + "maintMarginRatio": "0.1", + "cum": "4275.0" } }, { "tier": 6.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "7400.0" } }, { "tier": 7.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17825.0" } }, { "tier": 8.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392675.0" } }, { "tier": 9.0, "symbol": "CKB/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267675.0" } } ], @@ -17298,10 +21552,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -17315,10 +21569,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -17332,10 +21586,10 @@ "minNotional": 10000.0, "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", + "initialLeverage": "25", "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", @@ -17349,10 +21603,10 @@ "minNotional": 50000.0, "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", + "initialLeverage": "20", "notionalCap": "100000", "notionalFloor": "50000", "maintMarginRatio": "0.025", @@ -17364,84 +21618,118 @@ "symbol": "COMP/USDT:USDT", "currency": "USDT", "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", + "initialLeverage": "15", + "notionalCap": "175000", "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "COMP/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "COMP/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "COMP/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "COMP/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "COMP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "COMP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2347727.5" } } ], @@ -17453,10 +21741,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -17470,10 +21758,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -17485,13 +21773,13 @@ "symbol": "COOKIE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -17501,102 +21789,119 @@ "tier": 4.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "COOKIE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "COOKIE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -17607,14 +21912,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -17624,15 +21929,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -17641,15 +21946,15 @@ "currency": "USDT", "minNotional": 10000.0, "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { @@ -17657,101 +21962,84 @@ "symbol": "COS/USDT:USDT", "currency": "USDT", "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "40000", + "initialLeverage": "5", + "notionalCap": "50000", "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "COS/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "COS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "COS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "COS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "COS/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2262825.0" } } ], @@ -17778,13 +22066,13 @@ "symbol": "COTI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -17794,7 +22082,7 @@ "tier": 3.0, "symbol": "COTI/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -17802,9 +22090,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -17812,84 +22100,101 @@ "symbol": "COTI/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "COTI/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "COTI/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "COTI/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "COTI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "COTI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -17901,10 +22206,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -17916,13 +22221,13 @@ "symbol": "COW/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -17932,119 +22237,291 @@ "tier": 3.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "105.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "COW/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "COW/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "CROSS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CROSS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2267225.0" } } ], @@ -18348,14 +22825,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 11.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "11", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -18364,15 +22841,15 @@ "symbol": "CTK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -18380,68 +22857,119 @@ "tier": 3.0, "symbol": "CTK/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CTK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CTK/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11900.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "CTK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CTK/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CTK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CTK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "386900.0" + "cum": "2267225.0" } } ], @@ -18452,14 +22980,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -18469,14 +22997,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -18485,15 +23013,15 @@ "symbol": "CTSI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -18501,102 +23029,257 @@ "tier": 4.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "CTSI/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" + } + } + ], + "CUDIS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CUDIS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -18606,15 +23289,15 @@ "symbol": "CVC/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -18622,68 +23305,136 @@ "tier": 2.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "625.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5625.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11875.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CVC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CVC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CVC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CVC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "5", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "386875.0" + "cum": "2267225.0" } } ], @@ -18693,214 +23444,6 @@ "symbol": "CVX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "0", - "maintMarginRatio": "0.025", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "CVX/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "625.0" - } - }, - { - "tier": 3.0, - "symbol": "CVX/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "3", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5625.0" - } - }, - { - "tier": 4.0, - "symbol": "CVX/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, - "info": { - "bracket": "4", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11875.0" - } - }, - { - "tier": 5.0, - "symbol": "CVX/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "5", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "386875.0" - } - } - ], - "CYBER/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" - } - }, - { - "tier": 7.0, - "symbol": "CYBER/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.5", - "cum": "898150.0" - } - } - ], - "D/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "D/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, @@ -18915,7 +23458,7 @@ }, { "tier": 2.0, - "symbol": "D/USDT:USDT", + "symbol": "CVX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -18932,16 +23475,16 @@ }, { "tier": 3.0, - "symbol": "D/USDT:USDT", + "symbol": "CVX/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -18949,104 +23492,569 @@ }, { "tier": 4.0, - "symbol": "D/USDT:USDT", + "symbol": "CVX/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "CVX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "CYBER/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 15.0, + "info": { + "bracket": "3", + "initialLeverage": "15", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "CYBER/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "D/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "D/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "D/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "D/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "D/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "D/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "D/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "D/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "D/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "DAM/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "DAM/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, - "symbol": "D/USDT:USDT", + "symbol": "DAM/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -19213,10 +24221,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -19230,10 +24238,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -19245,13 +24253,13 @@ "symbol": "DASH/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -19261,102 +24269,274 @@ "tier": 4.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "DASH/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "DASH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "DEEP/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1325.0" + } + }, + { + "tier": 5.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7575.0" + } + }, + { + "tier": 6.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13825.0" + } + }, + { + "tier": 7.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34675.0" + } + }, + { + "tier": 8.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409525.0" + } + }, + { + "tier": 9.0, + "symbol": "DEEP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2284525.0" } } ], @@ -19471,14 +24651,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -19488,14 +24668,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -19504,15 +24684,15 @@ "symbol": "DEGEN/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -19520,102 +24700,102 @@ "tier": 4.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "DEGEN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -19626,14 +24806,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -19643,15 +24823,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -19659,118 +24839,101 @@ "symbol": "DEGO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "DEGO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "DEGO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "DEGO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "DEGO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "DEGO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "DEGO/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2262825.0" } } ], @@ -19781,14 +24944,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -19797,15 +24960,15 @@ "symbol": "DENT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -19813,85 +24976,119 @@ "tier": 3.0, "symbol": "DENT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DENT/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "DENT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.125", - "cum": "35650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "DENT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "160650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "DENT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "DENT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "DENT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "910650.0" + "cum": "2267225.0" } } ], @@ -19902,14 +25099,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -19918,15 +25115,15 @@ "symbol": "DEXE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", + "initialLeverage": "25", + "notionalCap": "20000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -19934,119 +25131,119 @@ "tier": 3.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 12.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "12", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.025", + "cum": "125.0" } }, { "tier": 4.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1375.0" } }, { "tier": 5.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7625.0" } }, { "tier": 6.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13875.0" } }, { "tier": 7.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34725.0" } }, { "tier": 8.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "409575.0" } }, { "tier": 9.0, "symbol": "DEXE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284575.0" } } ], @@ -20057,14 +25254,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -20074,15 +25271,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -20090,118 +25287,101 @@ "symbol": "DF/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "DF/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "DF/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "DF/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "DF/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "DF/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "DF/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2262825.0" } } ], @@ -20315,15 +25495,15 @@ "symbol": "DIA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -20331,136 +25511,274 @@ "tier": 2.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "20650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "600000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "33150.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "700000", - "notionalFloor": "600000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "108150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "DIA/USDT:USDT", "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 800000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "800000", - "notionalFloor": "700000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "283150.0" + "cum": "2267225.0" + } + } + ], + "DMC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "DMC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -20471,14 +25789,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -20487,101 +25805,118 @@ "symbol": "DODOX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 15.0, "info": { "bracket": "2", "initialLeverage": "15", - "notionalCap": "25000", + "notionalCap": "15000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "DODOX/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 15000.0, + "maxNotional": 32500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "32500", + "notionalFloor": "15000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "425.0" } }, { "tier": 4.0, "symbol": "DODOX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "75000", + "notionalFloor": "32500", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "2050.0" } }, { "tier": 5.0, "symbol": "DODOX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "75000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "3925.0" } }, { "tier": 6.0, "symbol": "DODOX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, "symbol": "DODOX/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" + } + }, + { + "tier": 8.0, + "symbol": "DODOX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2264200.0" } } ], @@ -20763,15 +26098,15 @@ "symbol": "DOGE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.005, + "maxNotional": 80000.0, + "maintenanceMarginRate": 0.0065, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "80000", "notionalFloor": "0", - "maintMarginRatio": "0.005", + "maintMarginRatio": "0.0065", "cum": "0.0" } }, @@ -20779,34 +26114,34 @@ "tier": 2.0, "symbol": "DOGE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.007, + "minNotional": 80000.0, + "maxNotional": 150000.0, + "maintenanceMarginRate": 0.01, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.007", - "cum": "20.0" + "notionalCap": "150000", + "notionalFloor": "80000", + "maintMarginRatio": "0.01", + "cum": "280.0" } }, { "tier": 3.0, "symbol": "DOGE/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, + "minNotional": 150000.0, "maxNotional": 750000.0, - "maintenanceMarginRate": 0.01, + "maintenanceMarginRate": 0.0125, "maxLeverage": 40.0, "info": { "bracket": "3", "initialLeverage": "40", "notionalCap": "750000", - "notionalFloor": "50000", - "maintMarginRatio": "0.01", - "cum": "170.0" + "notionalFloor": "150000", + "maintMarginRatio": "0.0125", + "cum": "655.0" } }, { @@ -20823,7 +26158,7 @@ "notionalCap": "2000000", "notionalFloor": "750000", "maintMarginRatio": "0.02", - "cum": "7670.0" + "cum": "6280.0" } }, { @@ -20840,7 +26175,7 @@ "notionalCap": "4000000", "notionalFloor": "2000000", "maintMarginRatio": "0.025", - "cum": "17670.0" + "cum": "16280.0" } }, { @@ -20857,7 +26192,7 @@ "notionalCap": "20000000", "notionalFloor": "4000000", "maintMarginRatio": "0.05", - "cum": "117670.0" + "cum": "116280.0" } }, { @@ -20874,7 +26209,7 @@ "notionalCap": "40000000", "notionalFloor": "20000000", "maintMarginRatio": "0.1", - "cum": "1117670.0" + "cum": "1116280.0" } }, { @@ -20891,7 +26226,7 @@ "notionalCap": "50000000", "notionalFloor": "40000000", "maintMarginRatio": "0.125", - "cum": "2117670.0" + "cum": "2116280.0" } }, { @@ -20908,7 +26243,7 @@ "notionalCap": "100000000", "notionalFloor": "50000000", "maintMarginRatio": "0.25", - "cum": "8367670.0" + "cum": "8366280.0" } }, { @@ -20925,7 +26260,7 @@ "notionalCap": "200000000", "notionalFloor": "100000000", "maintMarginRatio": "0.5", - "cum": "33367670.0" + "cum": "33366280.0" } } ], @@ -20935,13 +26270,13 @@ "symbol": "DOGS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -20951,136 +26286,446 @@ "tier": 2.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "600000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "16850.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "91850.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "141850.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "454350.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "DOGS/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "DOGS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "DOLO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1325.0" + } + }, + { + "tier": 5.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7575.0" + } + }, + { + "tier": 6.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13825.0" + } + }, + { + "tier": 7.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34675.0" + } + }, + { + "tier": 8.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409525.0" + } + }, + { + "tier": 9.0, + "symbol": "DOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1204350.0" + "cum": "2284525.0" + } + } + ], + "DOOD/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 27500.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "27500", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 27500.0, + "maxNotional": 65000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "65000", + "notionalFloor": "27500", + "maintMarginRatio": "0.05", + "cum": "737.5" + } + }, + { + "tier": 4.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 65000.0, + "maxNotional": 130000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "130000", + "notionalFloor": "65000", + "maintMarginRatio": "0.1", + "cum": "3987.5" + } + }, + { + "tier": 5.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 130000.0, + "maxNotional": 350000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "350000", + "notionalFloor": "130000", + "maintMarginRatio": "0.125", + "cum": "7237.5" + } + }, + { + "tier": 6.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 350000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "350000", + "maintMarginRatio": "0.1667", + "cum": "21832.5" + } + }, + { + "tier": 7.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "396682.5" + } + }, + { + "tier": 8.0, + "symbol": "DOOD/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2271682.5" } } ], @@ -21262,15 +26907,15 @@ "symbol": "DRIFT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -21278,136 +26923,136 @@ "tier": 2.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "DRIFT/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267225.0" } } ], @@ -21418,14 +27063,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -21434,135 +27079,118 @@ "symbol": "DUSK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", + "initialLeverage": "20", + "notionalCap": "15000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, + "minNotional": 15000.0, + "maxNotional": 32500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "notionalCap": "32500", + "notionalFloor": "15000", + "maintMarginRatio": "0.05", + "cum": "425.0" } }, { "tier": 4.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "5", + "notionalCap": "75000", + "notionalFloor": "32500", + "maintMarginRatio": "0.1", + "cum": "2050.0" } }, { "tier": 5.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "75000", + "maintMarginRatio": "0.125", + "cum": "3925.0" } }, { "tier": 6.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" } }, { "tier": 8.0, "symbol": "DUSK/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" - } - }, - { - "tier": 9.0, - "symbol": "DUSK/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2264200.0" } } ], @@ -21572,13 +27200,13 @@ "symbol": "DYDX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -21588,136 +27216,153 @@ "tier": 2.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "40000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "250.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1250.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "400000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "11250.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "111250.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "4000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "211250.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "12000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "836250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "DYDX/USDT:USDT", "currency": "USDT", - "minNotional": 12000000.0, - "maxNotional": 20000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "DYDX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "20000000", - "notionalFloor": "12000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "3836250.0" + "cum": "2284650.0" } } ], @@ -21729,10 +27374,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 25.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -21744,13 +27389,13 @@ "symbol": "DYM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -21760,102 +27405,119 @@ "tier": 3.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "80000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "2150.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "42150.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "82150.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "332150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "DYM/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "DYM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "2267225.0" } } ], @@ -21882,101 +27544,135 @@ "symbol": "EDU/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "EDU/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "EDU/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "EDU/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "EDU/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "EDU/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "EDU/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "EDU/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2267225.0" } } ], @@ -21986,13 +27682,13 @@ "symbol": "EGLD/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -22002,136 +27698,153 @@ "tier": 2.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "EGLD/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "EGLD/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1918150.0" + "cum": "2284650.0" } } ], @@ -22141,13 +27854,13 @@ "symbol": "EIGEN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -22157,119 +27870,119 @@ "tier": 2.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "600000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "16850.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "2000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "116850.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "191850.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "EIGEN/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, + "minNotional": 500000.0, "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "3", "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "691850.0" + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { @@ -22277,16 +27990,33 @@ "symbol": "EIGEN/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "EIGEN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1816850.0" + "cum": "2284650.0" } } ], @@ -22589,15 +28319,15 @@ "symbol": "ENJ/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -22605,119 +28335,136 @@ "tier": 2.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.02", - "cum": "500.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "150000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "1000.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 250000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "8", - "notionalCap": "250000", - "notionalFloor": "150000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "4750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "250000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "17250.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "29750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "154750.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ENJ/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ENJ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1404750.0" + "cum": "2267225.0" } } ], @@ -22727,324 +28474,186 @@ "symbol": "ENS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.02", - "cum": "250.0" - } - }, - { - "tier": 4.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.025", - "cum": "1250.0" - } - }, - { - "tier": 5.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "2000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.05", - "cum": "11250.0" - } - }, - { - "tier": 6.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111250.0" - } - }, - { - "tier": 7.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "211250.0" - } - }, - { - "tier": 8.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "4500000", - "maintMarginRatio": "0.25", - "cum": "773750.0" - } - }, - { - "tier": 9.0, - "symbol": "ENS/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 5500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "5500000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.5", - "cum": "2023750.0" - } - } - ], - "EOS/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "EOS/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.005, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.005", + "maintMarginRatio": "0.01", "cum": "0.0" } }, { "tier": 2.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.01", - "cum": "50.0" + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 40.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "40", - "notionalCap": "80000", - "notionalFloor": "50000", - "maintMarginRatio": "0.015", - "cum": "300.0" + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "25", - "notionalCap": "250000", - "notionalFloor": "80000", - "maintMarginRatio": "0.02", - "cum": "700.0" + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" } }, { "tier": 5.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "20", - "notionalCap": "500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.025", - "cum": "1950.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 2000000.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "6", "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "175000", "maintMarginRatio": "0.05", - "cum": "14450.0" + "cum": "4077.5" } }, { "tier": 7.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "7", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "2000000", + "notionalCap": "750000", + "notionalFloor": "250000", "maintMarginRatio": "0.1", - "cum": "114450.0" + "cum": "16577.5" } }, { "tier": 8.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "8", "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3000000", + "notionalCap": "1500000", + "notionalFloor": "750000", "maintMarginRatio": "0.125", - "cum": "189450.0" + "cum": "35327.5" } }, { "tier": 9.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "9", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "689450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" } }, { "tier": 10.0, - "symbol": "EOS/USDT:USDT", + "symbol": "ENS/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ENS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1939450.0" + "cum": "2347727.5" } } ], @@ -23055,14 +28664,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -23072,14 +28681,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -23088,15 +28697,15 @@ "symbol": "EPIC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -23104,102 +28713,584 @@ "tier": 4.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "EPIC/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" + } + } + ], + "EPT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "EPT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "ERA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ERA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" + } + } + ], + "ESPORTS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ESPORTS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -23742,13 +29833,13 @@ "symbol": "ETH/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, + "maxNotional": 300000.0, "maintenanceMarginRate": 0.004, - "maxLeverage": 125.0, + "maxLeverage": 150.0, "info": { "bracket": "1", - "initialLeverage": "125", - "notionalCap": "50000", + "initialLeverage": "150", + "notionalCap": "300000", "notionalFloor": "0", "maintMarginRatio": "0.004", "cum": "0.0" @@ -23758,24 +29849,24 @@ "tier": 2.0, "symbol": "ETH/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, + "minNotional": 300000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.005, "maxLeverage": 100.0, "info": { "bracket": "2", "initialLeverage": "100", - "notionalCap": "600000", - "notionalFloor": "50000", + "notionalCap": "800000", + "notionalFloor": "300000", "maintMarginRatio": "0.005", - "cum": "50.0" + "cum": "300.0" } }, { "tier": 3.0, "symbol": "ETH/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 800000.0, "maxNotional": 3000000.0, "maintenanceMarginRate": 0.0065, "maxLeverage": 75.0, @@ -23783,9 +29874,9 @@ "bracket": "3", "initialLeverage": "75", "notionalCap": "3000000", - "notionalFloor": "600000", + "notionalFloor": "800000", "maintMarginRatio": "0.0065", - "cum": "950.0" + "cum": "1500.0" } }, { @@ -23802,7 +29893,7 @@ "notionalCap": "12000000", "notionalFloor": "3000000", "maintMarginRatio": "0.01", - "cum": "11450.0" + "cum": "12000.0" } }, { @@ -23819,7 +29910,7 @@ "notionalCap": "50000000", "notionalFloor": "12000000", "maintMarginRatio": "0.02", - "cum": "131450.0" + "cum": "132000.0" } }, { @@ -23836,7 +29927,7 @@ "notionalCap": "65000000", "notionalFloor": "50000000", "maintMarginRatio": "0.025", - "cum": "381450.0" + "cum": "382000.0" } }, { @@ -23853,7 +29944,7 @@ "notionalCap": "150000000", "notionalFloor": "65000000", "maintMarginRatio": "0.05", - "cum": "2006450.0" + "cum": "2007000.0" } }, { @@ -23870,7 +29961,7 @@ "notionalCap": "320000000", "notionalFloor": "150000000", "maintMarginRatio": "0.1", - "cum": "9506450.0" + "cum": "9507000.0" } }, { @@ -23887,7 +29978,7 @@ "notionalCap": "400000000", "notionalFloor": "320000000", "maintMarginRatio": "0.125", - "cum": "17506450.0" + "cum": "17507000.0" } }, { @@ -23904,7 +29995,7 @@ "notionalCap": "530000000", "notionalFloor": "400000000", "maintMarginRatio": "0.15", - "cum": "27506450.0" + "cum": "27507000.0" } }, { @@ -23921,7 +30012,7 @@ "notionalCap": "800000000", "notionalFloor": "530000000", "maintMarginRatio": "0.25", - "cum": "80506450.0" + "cum": "80507000.0" } }, { @@ -23938,145 +30029,7 @@ "notionalCap": "1200000000", "notionalFloor": "800000000", "maintMarginRatio": "0.5", - "cum": "280506450.0" - } - } - ], - "ETH/USDT:USDT-250627": [ - { - "tier": 1.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 50.0, - "info": { - "bracket": "1", - "initialLeverage": "50", - "notionalCap": "50000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 375000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "2", - "initialLeverage": "25", - "notionalCap": "375000", - "notionalFloor": "50000", - "maintMarginRatio": "0.02", - "cum": "500.0" - } - }, - { - "tier": 3.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 375000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "375000", - "maintMarginRatio": "0.05", - "cum": "11750.0" - } - }, - { - "tier": 4.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111750.0" - } - }, - { - "tier": 5.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "10000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "211750.0" - } - }, - { - "tier": 6.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, - "maintenanceMarginRate": 0.15, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "20000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.15", - "cum": "461750.0" - } - }, - { - "tier": 7.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 20000000.0, - "maxNotional": 40000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "40000000", - "notionalFloor": "20000000", - "maintMarginRatio": "0.25", - "cum": "2461750.0" - } - }, - { - "tier": 8.0, - "symbol": "ETH/USDT:USDT-250627", - "currency": "USDT", - "minNotional": 40000000.0, - "maxNotional": 120000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "120000000", - "notionalFloor": "40000000", - "maintMarginRatio": "0.5", - "cum": "12461750.0" + "cum": "280507000.0" } } ], @@ -24218,6 +30171,144 @@ } } ], + "ETH/USDT:USDT-251226": [ + { + "tier": 1.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "50000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 375000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "375000", + "notionalFloor": "50000", + "maintMarginRatio": "0.02", + "cum": "500.0" + } + }, + { + "tier": 3.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 375000.0, + "maxNotional": 2000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "2000000", + "notionalFloor": "375000", + "maintMarginRatio": "0.05", + "cum": "11750.0" + } + }, + { + "tier": 4.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 2000000.0, + "maxNotional": 4000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "4000000", + "notionalFloor": "2000000", + "maintMarginRatio": "0.1", + "cum": "111750.0" + } + }, + { + "tier": 5.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 4000000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "4000000", + "maintMarginRatio": "0.125", + "cum": "211750.0" + } + }, + { + "tier": 6.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 10000000.0, + "maxNotional": 20000000.0, + "maintenanceMarginRate": 0.15, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "20000000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.15", + "cum": "461750.0" + } + }, + { + "tier": 7.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 20000000.0, + "maxNotional": 40000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "40000000", + "notionalFloor": "20000000", + "maintMarginRatio": "0.25", + "cum": "2461750.0" + } + }, + { + "tier": 8.0, + "symbol": "ETH/USDT:USDT-251226", + "currency": "USDT", + "minNotional": 40000000.0, + "maxNotional": 120000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "120000000", + "notionalFloor": "40000000", + "maintMarginRatio": "0.5", + "cum": "12461750.0" + } + } + ], "ETHFI/USDC:USDC": [ { "tier": 1.0, @@ -24226,10 +30317,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -24241,118 +30332,152 @@ "symbol": "ETHFI/USDC:USDC", "currency": "USDC", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 50000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "300.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1200000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "15300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 1200000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.1", - "cum": "75300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "150300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 4000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "650300.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ETHFI/USDC:USDC", "currency": "USDC", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ETHFI/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ETHFI/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2150300.0" + "cum": "2284650.0" } } ], @@ -24362,13 +30487,13 @@ "symbol": "ETHFI/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -24378,136 +30503,153 @@ "tier": 2.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "40000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "200000", - "notionalFloor": "40000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "250.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "400000", - "notionalFloor": "200000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1250.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "400000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "11250.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "111250.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "5000000", - "notionalFloor": "4000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "211250.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "836250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ETHFI/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ETHFI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "20000000", - "notionalFloor": "10000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "3336250.0" + "cum": "2284650.0" } } ], @@ -24518,14 +30660,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -24535,14 +30677,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -24551,15 +30693,15 @@ "symbol": "ETHW/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -24567,102 +30709,240 @@ "tier": 4.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ETHW/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" + } + } + ], + "F/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "F/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -24672,13 +30952,13 @@ "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "20000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -24688,136 +30968,136 @@ "tier": 2.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 20000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "200000", + "notionalFloor": "20000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "100.0" } }, { "tier": 3.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 200000.0, + "maxNotional": 1000000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "1000000", + "notionalFloor": "200000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "1100.0" } }, { "tier": 4.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 1000000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "2000000", + "notionalFloor": "1000000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "6100.0" } }, { "tier": 5.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 2000000.0, + "maxNotional": 5000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "5000000", + "notionalFloor": "2000000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "56100.0" } }, { "tier": 6.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 5000000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "7500000", + "notionalFloor": "5000000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "306100.0" } }, { "tier": 7.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 7500000.0, + "maxNotional": 10000000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "10000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "493600.0" } }, { "tier": 8.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 10000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "10000000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "1743600.0" } }, { "tier": 9.0, "symbol": "FARTCOIN/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 12500000.0, + "maxNotional": 15000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "15000000", + "notionalFloor": "12500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "4868600.0" } } ], @@ -24827,13 +31107,13 @@ "symbol": "FET/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -24843,136 +31123,308 @@ "tier": 2.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 100000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "100000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "500000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "550.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "3050.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "28050.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "5000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "178050.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 7000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "7000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.125", - "cum": "303050.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 7000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "8000000", - "notionalFloor": "7000000", - "maintMarginRatio": "0.25", - "cum": "1178050.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "FET/USDT:USDT", "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 9000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "FET/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "FET/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "9000000", - "notionalFloor": "8000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "3178050.0" + "cum": "2347727.5" + } + } + ], + "FHE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "FHE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -24984,10 +31436,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -25001,10 +31453,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -25016,13 +31468,13 @@ "symbol": "FIDA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -25032,102 +31484,119 @@ "tier": 4.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "FIDA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "FIDA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2284650.0" } } ], @@ -25465,14 +31934,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -25482,14 +31951,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -25498,118 +31967,239 @@ "symbol": "FIO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "FIO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "FIO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "FIO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "FIO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "FIO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "FIO/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "152770.0" + } + } + ], + "FIS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "FIS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" } } ], @@ -25620,14 +32210,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -25636,15 +32226,15 @@ "symbol": "FLM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -25652,17 +32242,17 @@ "tier": 3.0, "symbol": "FLM/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { @@ -25670,84 +32260,84 @@ "symbol": "FLM/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "200000", + "notionalCap": "50000", "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "FLM/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "FLM/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "6", "initialLeverage": "3", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "FLM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "7", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.25", - "cum": "83250.0" + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "FLM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "152770.0" } } ], @@ -25791,13 +32381,13 @@ "symbol": "FLOW/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "50000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -25807,102 +32397,119 @@ "tier": 4.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "500000", - "notionalFloor": "100000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "FLOW/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "FLOW/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2284650.0" } } ], @@ -25913,14 +32520,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -25930,14 +32537,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -25946,15 +32553,15 @@ "symbol": "FLUX/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -25962,102 +32569,102 @@ "tier": 4.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "83675.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "FLUX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2267225.0" } } ], @@ -26084,13 +32691,13 @@ "symbol": "FORM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -26100,102 +32707,119 @@ "tier": 3.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "3", "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "30000", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "875.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "15875.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "30875.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "FORM/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "FORM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "2267225.0" } } ], @@ -26206,14 +32830,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -26223,14 +32847,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -26239,84 +32863,118 @@ "symbol": "FORTH/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "60000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.05", - "cum": "275.0" + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "FORTH/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.1", - "cum": "3275.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "FORTH/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "400000", - "notionalFloor": "300000", - "maintMarginRatio": "0.125", - "cum": "10775.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "FORTH/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.25", - "cum": "60775.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "FORTH/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "FORTH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "FORTH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "310775.0" + "cum": "2267225.0" } } ], @@ -26585,13 +33243,13 @@ "symbol": "FUN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, + "maxNotional": 500.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 25.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", + "initialLeverage": "50", + "notionalCap": "500", "notionalFloor": "0", "maintMarginRatio": "0.015", "cum": "0.0" @@ -26601,119 +33259,136 @@ "tier": 2.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 20000.0, + "minNotional": 500.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "5000", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "500", "maintMarginRatio": "0.02", - "cum": "25.0" + "cum": "2.5" } }, { "tier": 3.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "20000", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "27.5" } }, { "tier": 4.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "30000", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "875.0" + "cum": "277.5" } }, { "tier": 5.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "15875.0" + "cum": "1527.5" } }, { "tier": 6.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "30875.0" + "cum": "2777.5" } }, { "tier": 7.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 400000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "3", + "notionalCap": "400000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6947.5" } }, { "tier": 8.0, "symbol": "FUN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 400000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "400000", + "maintMarginRatio": "0.25", + "cum": "40267.5" + } + }, + { + "tier": 9.0, + "symbol": "FUN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "165267.5" } } ], @@ -26724,14 +33399,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -26740,15 +33415,15 @@ "symbol": "FXS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -26756,68 +33431,136 @@ "tier": 3.0, "symbol": "FXS/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "FXS/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5650.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "FXS/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11900.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "FXS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "FXS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "FXS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "FXS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "FXS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "386900.0" + "cum": "2284650.0" } } ], @@ -26844,13 +33587,13 @@ "symbol": "G/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -26860,7 +33603,7 @@ "tier": 3.0, "symbol": "G/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -26868,9 +33611,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -26878,84 +33621,101 @@ "symbol": "G/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "G/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "G/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "G/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "G/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "G/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -26965,333 +33725,6 @@ "symbol": "GALA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.006, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.006", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.01", - "cum": "40.0" - } - }, - { - "tier": 3.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, - "info": { - "bracket": "3", - "initialLeverage": "8", - "notionalCap": "80000", - "notionalFloor": "50000", - "maintMarginRatio": "0.015", - "cum": "290.0" - } - }, - { - "tier": 4.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "4", - "initialLeverage": "7", - "notionalCap": "200000", - "notionalFloor": "80000", - "maintMarginRatio": "0.02", - "cum": "690.0" - } - }, - { - "tier": 5.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 900000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "5", - "initialLeverage": "6", - "notionalCap": "900000", - "notionalFloor": "200000", - "maintMarginRatio": "0.025", - "cum": "1690.0" - } - }, - { - "tier": 6.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 900000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "900000", - "maintMarginRatio": "0.05", - "cum": "24190.0" - } - }, - { - "tier": 7.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "124190.0" - } - }, - { - "tier": 8.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "8", - "initialLeverage": "3", - "notionalCap": "6000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.125", - "cum": "249190.0" - } - }, - { - "tier": 9.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 18000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "9", - "initialLeverage": "2", - "notionalCap": "18000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.25", - "cum": "999190.0" - } - }, - { - "tier": 10.0, - "symbol": "GALA/USDT:USDT", - "currency": "USDT", - "minNotional": 18000000.0, - "maxNotional": 30000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "10", - "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "18000000", - "maintMarginRatio": "0.5", - "cum": "5499190.0" - } - } - ], - "GAS/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "GAS/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "GHST/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GHST/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, @@ -27306,7 +33739,7 @@ }, { "tier": 2.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -27323,16 +33756,16 @@ }, { "tier": 3.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -27340,60 +33773,60 @@ }, { "tier": 4.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "20000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "175.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1175.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "11175.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "GHST/USDT:USDT", + "symbol": "GALA/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -27401,43 +33834,370 @@ "bracket": "7", "initialLeverage": "4", "notionalCap": "500000", - "notionalFloor": "400000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "21175.0" + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "GALA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "GALA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GALA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "GAS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GAS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "GHST/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "GHST/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "GHST/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "GHST/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2262825.0" } } ], @@ -27449,10 +34209,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -27464,13 +34224,13 @@ "symbol": "GLM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 12500.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", + "initialLeverage": "25", + "notionalCap": "12500", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -27480,102 +34240,119 @@ "tier": 3.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, + "minNotional": 12500.0, + "maxNotional": 27500.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "20000", + "initialLeverage": "20", + "notionalCap": "27500", + "notionalFloor": "12500", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "87.5" } }, { "tier": 4.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, + "minNotional": 27500.0, + "maxNotional": 70000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "30000", + "initialLeverage": "10", + "notionalCap": "70000", + "notionalFloor": "27500", "maintMarginRatio": "0.05", - "cum": "875.0" + "cum": "775.0" } }, { "tier": 5.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 70000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "70000", "maintMarginRatio": "0.1", - "cum": "15875.0" + "cum": "4275.0" } }, { "tier": 6.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "30875.0" + "cum": "7400.0" } }, { "tier": 7.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17825.0" } }, { "tier": 8.0, "symbol": "GLM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392675.0" + } + }, + { + "tier": 9.0, + "symbol": "GLM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "374625.0" + "cum": "2267675.0" } } ], @@ -27689,15 +34466,15 @@ "symbol": "GMT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "50000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -27705,102 +34482,153 @@ "tier": 2.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "6", - "notionalCap": "150000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "500.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "150000", - "maintMarginRatio": "0.05", - "cum": "4250.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "34250.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "74250.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "324250.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "GMT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "GMT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "GMT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GMT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1324250.0" + "cum": "2284650.0" } } ], @@ -27811,14 +34639,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -27827,15 +34655,15 @@ "symbol": "GMX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -27843,85 +34671,119 @@ "tier": 3.0, "symbol": "GMX/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 480000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "480000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "GMX/USDT:USDT", "currency": "USDT", - "minNotional": 480000.0, - "maxNotional": 1280000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1280000", - "notionalFloor": "480000", - "maintMarginRatio": "0.1", - "cum": "24650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "GMX/USDT:USDT", "currency": "USDT", - "minNotional": 1280000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "1280000", - "maintMarginRatio": "0.125", - "cum": "56650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "GMX/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 4800000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "4800000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.25", - "cum": "256650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "GMX/USDT:USDT", "currency": "USDT", - "minNotional": 4800000.0, - "maxNotional": 8000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "GMX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "GMX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4800000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1456650.0" + "cum": "2267225.0" } } ], @@ -27931,13 +34793,13 @@ "symbol": "GOAT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -27947,136 +34809,153 @@ "tier": 2.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 80000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "400000", - "notionalFloor": "80000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "450.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "800000", - "notionalFloor": "400000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "2450.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 3000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "800000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "22450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "172450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "5000000", - "notionalFloor": "4000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "272450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 5500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5500000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "897450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "GOAT/USDT:USDT", "currency": "USDT", - "minNotional": 5500000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GOAT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2272450.0" + "cum": "2284650.0" } } ], @@ -28103,13 +34982,13 @@ "symbol": "GPS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "25.0" @@ -28119,85 +34998,102 @@ "tier": 3.0, "symbol": "GPS/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "GPS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "GPS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "GPS/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "GPS/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "GPS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "152770.0" } } ], @@ -28207,592 +35103,6 @@ "symbol": "GRASS/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "150000", - "notionalFloor": "30000", - "maintMarginRatio": "0.02", - "cum": "200.0" - } - }, - { - "tier": 4.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.025", - "cum": "950.0" - } - }, - { - "tier": 5.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" - } - }, - { - "tier": 6.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.1", - "cum": "83450.0" - } - }, - { - "tier": 7.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "158450.0" - } - }, - { - "tier": 8.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "3500000", - "maintMarginRatio": "0.25", - "cum": "595950.0" - } - }, - { - "tier": 9.0, - "symbol": "GRASS/USDT:USDT", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.5", - "cum": "1595950.0" - } - } - ], - "GRIFFAIN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "GRIFFAIN/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "GRT/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, - "info": { - "bracket": "1", - "initialLeverage": "50", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "50000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1300.0" - } - }, - { - "tier": 4.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "21300.0" - } - }, - { - "tier": 5.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "46300.0" - } - }, - { - "tier": 6.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "296300.0" - } - }, - { - "tier": 7.0, - "symbol": "GRT/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.5", - "cum": "1796300.0" - } - } - ], - "GTC/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "GTC/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "GUN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "GUN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, @@ -28807,7 +35117,7 @@ }, { "tier": 2.0, - "symbol": "GUN/USDT:USDT", + "symbol": "GRASS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -28824,16 +35134,16 @@ }, { "tier": 3.0, - "symbol": "GUN/USDT:USDT", + "symbol": "GRASS/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -28841,104 +35151,1068 @@ }, { "tier": 4.0, - "symbol": "GUN/USDT:USDT", + "symbol": "GRASS/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GRASS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "GRIFFAIN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "GRIFFAIN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "GRT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "GRT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "GTC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "GTC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "GUN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "GUN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 2000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "2000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "GUN/USDT:USDT", + "currency": "USDT", + "minNotional": 2000.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "2000", + "maintMarginRatio": "0.015", + "cum": "10.0" + } + }, + { + "tier": 3.0, + "symbol": "GUN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 13000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "13000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "35.0" + } + }, + { + "tier": 4.0, + "symbol": "GUN/USDT:USDT", + "currency": "USDT", + "minNotional": 13000.0, + "maxNotional": 32000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "32000", + "notionalFloor": "13000", + "maintMarginRatio": "0.025", + "cum": "100.0" } }, { "tier": 5.0, "symbol": "GUN/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 32000.0, + "maxNotional": 80000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "80000", + "notionalFloor": "32000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "900.0" } }, { "tier": 6.0, "symbol": "GUN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 80000.0, + "maxNotional": 166000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "166000", + "notionalFloor": "80000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "4900.0" } }, { "tier": 7.0, "symbol": "GUN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 166000.0, + "maxNotional": 395000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "395000", + "notionalFloor": "166000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "9050.0" } }, { "tier": 8.0, "symbol": "GUN/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 395000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "395000", + "maintMarginRatio": "0.1667", + "cum": "25521.5" } }, { "tier": 9.0, "symbol": "GUN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "400371.5" + } + }, + { + "tier": 10.0, + "symbol": "GUN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2275371.5" + } + } + ], + "H/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "H/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" + } + } + ], + "HAEDAL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "HAEDAL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -29259,14 +36533,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -29276,14 +36550,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -29292,15 +36566,15 @@ "symbol": "HEI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -29308,102 +36582,102 @@ "tier": 4.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "HEI/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -29414,14 +36688,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -29430,15 +36704,15 @@ "symbol": "HFT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -29446,85 +36720,119 @@ "tier": 3.0, "symbol": "HFT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "HFT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HFT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HFT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HFT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "HFT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "HFT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2267225.0" } } ], @@ -29535,14 +36843,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -29551,101 +36859,118 @@ "symbol": "HIFI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "HIFI/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "675.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "HIFI/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "10675.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "HIFI/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23175.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "HIFI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "HIFI/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "HIFI/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "152770.0" } } ], @@ -29656,14 +36981,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -29672,15 +36997,15 @@ "symbol": "HIGH/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -29688,85 +37013,119 @@ "tier": 3.0, "symbol": "HIGH/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "HIGH/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "20650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HIGH/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "45650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HIGH/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "295650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HIGH/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "HIGH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "HIGH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1795650.0" + "cum": "2267225.0" } } ], @@ -29777,14 +37136,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -29793,135 +37152,118 @@ "symbol": "HIPPO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "HIPPO/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" - } - }, - { - "tier": 9.0, - "symbol": "HIPPO/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959505.0" + "cum": "2262825.0" } } ], @@ -29932,14 +37274,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -29949,14 +37291,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 9.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "9", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -29965,15 +37307,15 @@ "symbol": "HIVE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -29981,102 +37323,102 @@ "tier": 4.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 1600000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "1600000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -30086,15 +37428,15 @@ "symbol": "HMSTR/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -30102,136 +37444,308 @@ "tier": 2.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "HMSTR/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267225.0" + } + } + ], + "HOME/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "HOME/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -30242,14 +37756,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -30258,84 +37772,118 @@ "symbol": "HOOK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "HOOK/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "50000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "1275.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "HOOK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "11275.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "HOOK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23775.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "HOOK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "HOOK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "HOOK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "398775.0" + "cum": "2262825.0" } } ], @@ -30346,14 +37894,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -30363,14 +37911,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -30379,15 +37927,15 @@ "symbol": "HOT/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -30395,102 +37943,790 @@ "tier": 4.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "HOT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" + } + } + ], + "HUMA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "HUMA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "HYPE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 7500.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "7500", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "15000", + "notionalFloor": "7500", + "maintMarginRatio": "0.015", + "cum": "37.5" + } + }, + { + "tier": 3.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 15000.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "75000", + "notionalFloor": "15000", + "maintMarginRatio": "0.02", + "cum": "112.5" + } + }, + { + "tier": 4.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 75000.0, + "maxNotional": 200000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "200000", + "notionalFloor": "75000", + "maintMarginRatio": "0.025", + "cum": "487.5" + } + }, + { + "tier": 5.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 200000.0, + "maxNotional": 350000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "350000", + "notionalFloor": "200000", + "maintMarginRatio": "0.0333", + "cum": "2147.5" + } + }, + { + "tier": 6.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 350000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "750000", + "notionalFloor": "350000", + "maintMarginRatio": "0.05", + "cum": "7992.5" + } + }, + { + "tier": 7.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 3000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "3000000", + "notionalFloor": "750000", + "maintMarginRatio": "0.1", + "cum": "45492.5" + } + }, + { + "tier": 8.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 3000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "4500000", + "notionalFloor": "3000000", + "maintMarginRatio": "0.125", + "cum": "120492.5" + } + }, + { + "tier": 9.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.1667", + "cum": "308142.5" + } + }, + { + "tier": 10.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.25", + "cum": "932892.5" + } + }, + { + "tier": 11.0, + "symbol": "HYPE/USDT:USDT", + "currency": "USDT", + "minNotional": 12000000.0, + "maxNotional": 18000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "18000000", + "notionalFloor": "12000000", + "maintMarginRatio": "0.5", + "cum": "3932892.5" + } + } + ], + "HYPER/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "HYPER/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "ICNT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ICNT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -30500,13 +38736,13 @@ "symbol": "ICP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -30516,136 +38752,170 @@ "tier": 2.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "20000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "100000", - "notionalFloor": "20000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "ICP/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "ICP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ICP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1918150.0" + "cum": "2347727.5" } } ], @@ -30672,13 +38942,13 @@ "symbol": "ICX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -30688,7 +38958,7 @@ "tier": 3.0, "symbol": "ICX/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -30696,9 +38966,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -30706,84 +38976,101 @@ "symbol": "ICX/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ICX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ICX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ICX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ICX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ICX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -30794,14 +39081,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -30811,14 +39098,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -30827,15 +39114,15 @@ "symbol": "ID/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -30843,102 +39130,102 @@ "tier": 4.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ID/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], @@ -31063,6 +39350,144 @@ } } ], + "IDOL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "IDOL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], "ILV/USDT:USDT": [ { "tier": 1.0, @@ -31086,101 +39511,135 @@ "symbol": "ILV/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ILV/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ILV/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ILV/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ILV/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ILV/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ILV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ILV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -31191,6 +39650,178 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "IMX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "IN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "IN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -31204,104 +39835,310 @@ }, { "tier": 2.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1300.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "31300.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "71300.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "321300.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, - "symbol": "IMX/USDT:USDT", + "symbol": "IN/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, + "minNotional": 250000.0, "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "IN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "IN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1321300.0" + "cum": "2267225.0" + } + } + ], + "INIT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "INIT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -31466,13 +40303,13 @@ "symbol": "IO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -31482,136 +40319,153 @@ "tier": 2.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "IO/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "IO/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "IO/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -31638,101 +40492,135 @@ "symbol": "IOST/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "IOST/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "IOST/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "IOST/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "IOST/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "IOST/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "IOST/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "IOST/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2267225.0" } } ], @@ -31742,13 +40630,13 @@ "symbol": "IOTA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -31758,136 +40646,153 @@ "tier": 2.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "IOTA/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "IOTA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1168150.0" + "cum": "2284650.0" } } ], @@ -31914,13 +40819,13 @@ "symbol": "IOTX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -31930,7 +40835,7 @@ "tier": 3.0, "symbol": "IOTX/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -31938,9 +40843,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -31948,84 +40853,101 @@ "symbol": "IOTX/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "IOTX/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "IOTX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "IOTX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "IOTX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "IOTX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -32035,15 +40957,15 @@ "symbol": "IP/USDC:USDC", "currency": "USDC", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -32051,119 +40973,153 @@ "tier": 2.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "50.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "200.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1700.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16700.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31700.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125450.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "IP/USDC:USDC", "currency": "USDC", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "IP/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "IP/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500450.0" + "cum": "2284650.0" } } ], @@ -32173,15 +41129,15 @@ "symbol": "IP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -32189,119 +41145,153 @@ "tier": 2.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "50.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "200.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1700.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16700.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31700.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125450.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "IP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "IP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500450.0" + "cum": "2284650.0" } } ], @@ -32312,14 +41302,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -32328,15 +41318,15 @@ "symbol": "JASMY/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 9.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "9", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -32344,102 +41334,102 @@ "tier": 3.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "80000", - "notionalFloor": "25000", - "maintMarginRatio": "0.025", - "cum": "150.0" + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "800000", - "notionalFloor": "80000", - "maintMarginRatio": "0.05", - "cum": "2150.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "42150.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "82150.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "7", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.25", - "cum": "332150.0" + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "JASMY/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "152770.0" } } ], @@ -32451,10 +41441,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.02", @@ -32466,13 +41456,13 @@ "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "25.0" @@ -32482,85 +41472,102 @@ "tier": 3.0, "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "25000", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "300000", - "notionalFloor": "200000", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 400000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "400000", - "notionalFloor": "300000", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "18150.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.25", - "cum": "68150.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "JELLYJELLY/USDT:USDT", "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "JELLYJELLY/USDT:USDT", + "currency": "USDT", "minNotional": 500000.0, - "maxNotional": 600000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "600000", + "notionalCap": "800000", "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "193150.0" + "cum": "152770.0" } } ], @@ -32571,14 +41578,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -32588,14 +41595,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -32604,15 +41611,15 @@ "symbol": "JOE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -32620,102 +41627,257 @@ "tier": 4.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "JOE/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" + } + } + ], + "JST/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "JST/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -32725,13 +41887,13 @@ "symbol": "JTO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -32741,136 +41903,153 @@ "tier": 2.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "30000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "150000", - "notionalFloor": "30000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "300000", - "notionalFloor": "150000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1500000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "JTO/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "JTO/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -32880,13 +42059,13 @@ "symbol": "JUP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -32896,136 +42075,170 @@ "tier": 2.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "60000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "3000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "16850.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "6000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "166850.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "7500000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.125", - "cum": "316850.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 15000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "15000000", - "notionalFloor": "7500000", - "maintMarginRatio": "0.25", - "cum": "1254350.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "JUP/USDT:USDT", "currency": "USDT", - "minNotional": 15000000.0, - "maxNotional": 30000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "JUP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "JUP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "15000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "5004350.0" + "cum": "2347727.5" } } ], @@ -33069,13 +42282,13 @@ "symbol": "KAIA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -33085,102 +42298,119 @@ "tier": 4.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "KAIA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "KAIA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -33192,10 +42422,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -33209,10 +42439,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -33224,13 +42454,13 @@ "symbol": "KAITO/USDC:USDC", "currency": "USDC", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -33240,102 +42470,119 @@ "tier": 4.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "KAITO/USDC:USDC", "currency": "USDC", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "KAITO/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -33379,13 +42626,13 @@ "symbol": "KAITO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -33395,102 +42642,119 @@ "tier": 4.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "KAITO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "KAITO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -33502,299 +42766,6 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" - } - }, - { - "tier": 5.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" - } - }, - { - "tier": 6.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" - } - }, - { - "tier": 7.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" - } - }, - { - "tier": 8.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" - } - }, - { - "tier": 9.0, - "symbol": "KAS/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.5", - "cum": "834075.0" - } - } - ], - "KAVA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, - "info": { - "bracket": "1", - "initialLeverage": "50", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" - } - }, - { - "tier": 4.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" - } - }, - { - "tier": 5.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" - } - }, - { - "tier": 6.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" - } - }, - { - "tier": 7.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" - } - }, - { - "tier": 8.0, - "symbol": "KAVA/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "333250.0" - } - } - ], - "KDA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "KDA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", @@ -33807,7 +42778,7 @@ }, { "tier": 2.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -33824,16 +42795,16 @@ }, { "tier": 3.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -33841,60 +42812,60 @@ }, { "tier": 4.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "20000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "175.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1175.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "11175.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "KDA/USDT:USDT", + "symbol": "KAS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -33902,43 +42873,542 @@ "bracket": "7", "initialLeverage": "4", "notionalCap": "500000", - "notionalFloor": "400000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "21175.0" + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "KAS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "KAS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "KAS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "KAVA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "KAVA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "KDA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "KDA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "KDA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "83675.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "KDA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2267225.0" + } + } + ], + "KERNEL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "KERNEL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -34191,14 +43661,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -34208,14 +43678,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -34224,15 +43694,15 @@ "symbol": "KMNO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -34240,102 +43710,102 @@ "tier": 4.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "KMNO/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "375475.0" + "cum": "2267225.0" } } ], @@ -34362,13 +43832,13 @@ "symbol": "KNC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -34378,7 +43848,7 @@ "tier": 3.0, "symbol": "KNC/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -34386,9 +43856,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -34396,84 +43866,101 @@ "symbol": "KNC/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "KNC/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "KNC/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "KNC/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "KNC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "KNC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -34484,14 +43971,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, + "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "1", "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -34501,14 +43988,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -34517,118 +44004,101 @@ "symbol": "KOMA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "KOMA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "KOMA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "KOMA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "KOMA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { "tier": 8.0, "symbol": "KOMA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "KOMA/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "152770.0" } } ], @@ -34655,13 +44125,13 @@ "symbol": "KSM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -34671,7 +44141,7 @@ "tier": 3.0, "symbol": "KSM/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -34679,9 +44149,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -34689,84 +44159,273 @@ "symbol": "KSM/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "KSM/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "KSM/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "KSM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "KSM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "KSM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" + } + } + ], + "LA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "LA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -34778,10 +44437,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -34795,10 +44454,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -34810,13 +44469,13 @@ "symbol": "LAYER/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -34826,102 +44485,119 @@ "tier": 4.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "LAYER/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "LAYER/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -35067,33 +44743,50 @@ "symbol": "LDO/USDT:USDT", "currency": "USDT", "minNotional": 5000000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "9", - "initialLeverage": "2", - "notionalCap": "12000000", + "initialLeverage": "3", + "notionalCap": "7500000", "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "836670.0" + "maintMarginRatio": "0.1667", + "cum": "420170.0" } }, { "tier": 10.0, "symbol": "LDO/USDT:USDT", "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.25", + "cum": "1044920.0" + } + }, + { + "tier": 11.0, + "symbol": "LDO/USDT:USDT", + "currency": "USDT", "minNotional": 12000000.0, "maxNotional": 20000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "11", "initialLeverage": "1", "notionalCap": "20000000", "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "3836670.0" + "cum": "4044920.0" } } ], @@ -35103,15 +44796,15 @@ "symbol": "LEVER/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, + "maxNotional": 200.0, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "1", "initialLeverage": "20", - "notionalCap": "5000", + "notionalCap": "200", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "0.0" } }, @@ -35119,102 +44812,102 @@ "tier": 2.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "minNotional": 200.0, + "maxNotional": 500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" + "initialLeverage": "10", + "notionalCap": "500", + "notionalFloor": "200", + "maintMarginRatio": "0.05", + "cum": "5.0" } }, { "tier": 3.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 500.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "500", + "maintMarginRatio": "0.1", + "cum": "30.0" } }, { "tier": 4.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "1280.0" } }, { "tier": 5.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "5450.0" } }, { "tier": 6.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "6", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.25", - "cum": "148150.0" + "cum": "26275.0" } }, { "tier": 7.0, "symbol": "LEVER/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "7", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "151275.0" } } ], @@ -35674,10 +45367,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -35689,13 +45382,13 @@ "symbol": "LISTA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "15000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -35705,102 +45398,119 @@ "tier": 3.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, + "minNotional": 15000.0, + "maxNotional": 33333.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "50000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "33333", + "notionalFloor": "15000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "100.0" } }, { "tier": 4.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 500000.0, + "minNotional": 33333.0, + "maxNotional": 83333.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "50000", + "initialLeverage": "10", + "notionalCap": "83333", + "notionalFloor": "33333", "maintMarginRatio": "0.05", - "cum": "1400.0" + "cum": "933.325" } }, { "tier": 5.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 83333.0, + "maxNotional": 166666.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "166666", + "notionalFloor": "83333", "maintMarginRatio": "0.1", - "cum": "26400.0" + "cum": "5099.975" } }, { "tier": 6.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 166666.0, + "maxNotional": 333333.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "333333", + "notionalFloor": "166666", "maintMarginRatio": "0.125", - "cum": "51400.0" + "cum": "9266.625" } }, { "tier": 7.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 333333.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "207650.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "333333", + "maintMarginRatio": "0.1667", + "cum": "23166.6111" } }, { "tier": 8.0, "symbol": "LISTA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "398016.6111" + } + }, + { + "tier": 9.0, + "symbol": "LISTA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "832650.0" + "cum": "2273016.6111" } } ], @@ -35949,14 +45659,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 40.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "40", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -35966,14 +45676,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -35982,84 +45692,84 @@ "symbol": "LOKA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "LOKA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "LOKA/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "LOKA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "LOKA/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", + "initialLeverage": "2", "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { @@ -36067,33 +45777,16 @@ "symbol": "LOKA/USDT:USDT", "currency": "USDT", "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "LOKA/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "152770.0" } } ], @@ -36209,10 +45902,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -36224,13 +45917,13 @@ "symbol": "LPT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "16000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -36240,119 +45933,136 @@ "tier": 3.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "16000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "105.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "LPT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "LPT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2284650.0" } } ], @@ -36363,14 +46073,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -36379,15 +46089,15 @@ "symbol": "LQTY/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -36395,85 +46105,119 @@ "tier": 3.0, "symbol": "LQTY/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "LQTY/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "30650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "LQTY/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "70650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "LQTY/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "320650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "LQTY/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "LQTY/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "LQTY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1820650.0" + "cum": "2267225.0" } } ], @@ -36500,84 +46244,135 @@ "symbol": "LRC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "LRC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "LRC/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "LRC/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11925.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "LRC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "LRC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "LRC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "LRC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "386925.0" + "cum": "2267225.0" } } ], @@ -36604,101 +46399,135 @@ "symbol": "LSK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "LSK/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "LSK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "LSK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "LSK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "LSK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "LSK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "LSK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -37053,14 +46882,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -37070,14 +46899,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -37086,15 +46915,15 @@ "symbol": "LUMIA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -37102,102 +46931,102 @@ "tier": 4.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "LUMIA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -37208,14 +47037,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -37225,14 +47054,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -37241,15 +47070,15 @@ "symbol": "LUNA2/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -37257,102 +47086,257 @@ "tier": 4.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "LUNA2/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" + } + } + ], + "M/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "M/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -37364,868 +47348,6 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" - } - }, - { - "tier": 5.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" - } - }, - { - "tier": 6.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" - } - }, - { - "tier": 7.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" - } - }, - { - "tier": 8.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" - } - }, - { - "tier": 9.0, - "symbol": "MAGIC/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.5", - "cum": "834075.0" - } - } - ], - "MANA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.0065, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.0065", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.0075, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.0075", - "cum": "5.0" - } - }, - { - "tier": 3.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "50000", - "notionalFloor": "25000", - "maintMarginRatio": "0.01", - "cum": "67.5" - } - }, - { - "tier": 4.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "150000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "817.5" - } - }, - { - "tier": 5.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "150000", - "maintMarginRatio": "0.05", - "cum": "4567.5" - } - }, - { - "tier": 6.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.1", - "cum": "17067.5" - } - }, - { - "tier": 7.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "29567.5" - } - }, - { - "tier": 8.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "154567.5" - } - }, - { - "tier": 9.0, - "symbol": "MANA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.5", - "cum": "1404567.5" - } - } - ], - "MANTA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "3", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "300.0" - } - }, - { - "tier": 4.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2800.0" - } - }, - { - "tier": 5.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "52800.0" - } - }, - { - "tier": 6.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "102800.0" - } - }, - { - "tier": 7.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "415300.0" - } - }, - { - "tier": 8.0, - "symbol": "MANTA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.5", - "cum": "1665300.0" - } - } - ], - "MASK/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 900000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "3", - "initialLeverage": "6", - "notionalCap": "900000", - "notionalFloor": "25000", - "maintMarginRatio": "0.025", - "cum": "175.0" - } - }, - { - "tier": 4.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 900000.0, - "maxNotional": 1800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1800000", - "notionalFloor": "900000", - "maintMarginRatio": "0.05", - "cum": "22675.0" - } - }, - { - "tier": 5.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 1800000.0, - "maxNotional": 4800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "4800000", - "notionalFloor": "1800000", - "maintMarginRatio": "0.1", - "cum": "112675.0" - } - }, - { - "tier": 6.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 4800000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "6000000", - "notionalFloor": "4800000", - "maintMarginRatio": "0.125", - "cum": "232675.0" - } - }, - { - "tier": 7.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 18000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "18000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.25", - "cum": "982675.0" - } - }, - { - "tier": 8.0, - "symbol": "MASK/USDT:USDT", - "currency": "USDT", - "minNotional": 18000000.0, - "maxNotional": 30000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "18000000", - "maintMarginRatio": "0.5", - "cum": "5482675.0" - } - } - ], - "MAV/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" - } - }, - { - "tier": 5.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" - } - }, - { - "tier": 6.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" - } - }, - { - "tier": 7.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" - } - }, - { - "tier": 8.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" - } - }, - { - "tier": 9.0, - "symbol": "MAV/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.5", - "cum": "959075.0" - } - } - ], - "MAVIA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" - } - }, - { - "tier": 7.0, - "symbol": "MAVIA/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "491900.0" - } - } - ], - "MBOX/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MBOX/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", @@ -38238,7 +47360,7 @@ }, { "tier": 2.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -38255,16 +47377,16 @@ }, { "tier": 3.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -38272,60 +47394,60 @@ }, { "tier": 4.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "20000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "175.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1175.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "11175.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "MBOX/USDT:USDT", + "symbol": "MAGIC/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -38333,43 +47455,990 @@ "bracket": "7", "initialLeverage": "4", "notionalCap": "500000", - "notionalFloor": "400000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "21175.0" + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "MAGIC/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "MAGIC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MAGIC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "MANA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MANA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "MANTA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MANTA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "MASK/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 500.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "500", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 500.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "500", + "maintMarginRatio": "0.015", + "cum": "2.5" + } + }, + { + "tier": 3.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "15000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "27.5" + } + }, + { + "tier": 4.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 15000.0, + "maxNotional": 30000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "30000", + "notionalFloor": "15000", + "maintMarginRatio": "0.025", + "cum": "102.5" + } + }, + { + "tier": 5.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 30000.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "75000", + "notionalFloor": "30000", + "maintMarginRatio": "0.05", + "cum": "852.5" + } + }, + { + "tier": 6.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 75000.0, + "maxNotional": 150000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "150000", + "notionalFloor": "75000", + "maintMarginRatio": "0.1", + "cum": "4602.5" + } + }, + { + "tier": 7.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 150000.0, + "maxNotional": 300000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "300000", + "notionalFloor": "150000", + "maintMarginRatio": "0.125", + "cum": "8352.5" + } + }, + { + "tier": 8.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 300000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "300000", + "maintMarginRatio": "0.1667", + "cum": "20862.5" + } + }, + { + "tier": 9.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "395712.5" + } + }, + { + "tier": 10.0, + "symbol": "MASK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2270712.5" + } + } + ], + "MAV/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MAV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "MAVIA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "MAVIA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "MBOX/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "MBOX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "MBOX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "MBOX/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2262825.0" } } ], @@ -38500,15 +48569,15 @@ "symbol": "ME/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -38516,136 +48585,136 @@ "tier": 2.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "150000", - "notionalFloor": "30000", - "maintMarginRatio": "0.02", - "cum": "200.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.025", - "cum": "950.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.1", - "cum": "83450.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3100000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "3100000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "158450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 3100000.0, - "maxNotional": 3300000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3300000", - "notionalFloor": "3100000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "545950.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ME/USDT:USDT", "currency": "USDT", - "minNotional": 3300000.0, - "maxNotional": 3500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3300000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1370950.0" + "cum": "2267225.0" } } ], @@ -38656,14 +48725,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -38672,15 +48741,15 @@ "symbol": "MELANIA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -38688,85 +48757,136 @@ "tier": 3.0, "symbol": "MELANIA/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MELANIA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MELANIA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MELANIA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MELANIA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "MELANIA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "MELANIA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MELANIA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2284650.0" } } ], @@ -38778,10 +48898,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -38793,13 +48913,13 @@ "symbol": "MEME/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -38809,119 +48929,412 @@ "tier": 3.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "105.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "MEME/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MEME/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "MEMEFI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 2000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "1", + "initialLeverage": "20", + "notionalCap": "2000", + "notionalFloor": "0", + "maintMarginRatio": "0.025", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 2000.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "2", + "initialLeverage": "10", + "notionalCap": "5000", + "notionalFloor": "2000", + "maintMarginRatio": "0.05", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "3", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "5000", + "maintMarginRatio": "0.1", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "4", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "1550.0" + } + }, + { + "tier": 5.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "5", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "5720.0" + } + }, + { + "tier": 6.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "6", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "26545.0" + } + }, + { + "tier": 7.0, + "symbol": "MEMEFI/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "7", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "151545.0" + } + } + ], + "MERL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2267225.0" } } ], @@ -38948,101 +49361,135 @@ "symbol": "METIS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "METIS/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "METIS/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "METIS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "METIS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "METIS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "METIS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "METIS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -39052,161 +49499,6 @@ "symbol": "MEW/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.02", - "cum": "350.0" - } - }, - { - "tier": 4.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.025", - "cum": "1850.0" - } - }, - { - "tier": 5.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "700000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "16850.0" - } - }, - { - "tier": 6.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "800000", - "notionalFloor": "700000", - "maintMarginRatio": "0.1", - "cum": "51850.0" - } - }, - { - "tier": 7.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 900000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "900000", - "notionalFloor": "800000", - "maintMarginRatio": "0.125", - "cum": "71850.0" - } - }, - { - "tier": 8.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 900000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "900000", - "maintMarginRatio": "0.25", - "cum": "184350.0" - } - }, - { - "tier": 9.0, - "symbol": "MEW/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "559350.0" - } - } - ], - "MINA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "MINA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, @@ -39221,16 +49513,171 @@ }, { "tier": 2.0, - "symbol": "MINA/USDT:USDT", + "symbol": "MEW/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MEW/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "MILK/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "50000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -39238,87 +49685,276 @@ }, { "tier": 3.0, - "symbol": "MINA/USDT:USDT", + "symbol": "MILK/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "50000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", "cum": "1300.0" } }, + { + "tier": 5.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "MILK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "MINA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, { "tier": 4.0, "symbol": "MINA/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "21300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MINA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "46300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MINA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "296300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MINA/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MINA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1796300.0" + "cum": "2284650.0" } } ], @@ -39517,118 +50153,118 @@ "symbol": "MLN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "30000", - "maintMarginRatio": "0.05", - "cum": "875.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15875.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "30875.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "7", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "124625.0" + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "MLN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "2262825.0" } } ], @@ -39638,13 +50274,13 @@ "symbol": "MOCA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -39654,136 +50290,153 @@ "tier": 2.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "MOCA/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 5100000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MOCA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5100000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -39793,13 +50446,13 @@ "symbol": "MOODENG/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -39809,136 +50462,153 @@ "tier": 2.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 80000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "400000", - "notionalFloor": "80000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "450.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "800000", - "notionalFloor": "400000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "2450.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 4000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "800000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "22450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "222450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "334950.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 5500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5500000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "959950.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 5500000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MOODENG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2334950.0" + "cum": "2284650.0" } } ], @@ -39950,10 +50620,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -39967,10 +50637,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -39982,13 +50652,13 @@ "symbol": "MORPHO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -39998,102 +50668,119 @@ "tier": 4.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "MORPHO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MORPHO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -40103,13 +50790,13 @@ "symbol": "MOVE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -40119,136 +50806,153 @@ "tier": 2.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "30000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "150000", - "notionalFloor": "30000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "300000", - "notionalFloor": "150000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1500000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "MOVE/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "MOVE/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -40275,101 +50979,135 @@ "symbol": "MOVR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "MOVR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MOVR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "MOVR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "MOVR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "MOVR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MOVR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MOVR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -40380,14 +51118,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -40396,15 +51134,15 @@ "symbol": "MTL/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -40412,85 +51150,119 @@ "tier": 3.0, "symbol": "MTL/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "MTL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "30650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "MTL/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "70650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "MTL/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "320650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "MTL/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MTL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "MTL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1820650.0" + "cum": "2267225.0" } } ], @@ -40500,15 +51272,15 @@ "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 3000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", + "initialLeverage": "75", + "notionalCap": "3000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -40516,102 +51288,153 @@ "tier": 2.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 3000.0, + "maxNotional": 6000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" + "initialLeverage": "50", + "notionalCap": "6000", + "notionalFloor": "3000", + "maintMarginRatio": "0.015", + "cum": "15.0" } }, { "tier": 3.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 6000.0, + "maxNotional": 17000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "25", + "notionalCap": "17000", + "notionalFloor": "6000", + "maintMarginRatio": "0.02", + "cum": "45.0" } }, { "tier": 4.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 17000.0, + "maxNotional": 38000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "20", + "notionalCap": "38000", + "notionalFloor": "17000", + "maintMarginRatio": "0.025", + "cum": "130.0" } }, { "tier": 5.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 38000.0, + "maxNotional": 95000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "10", + "notionalCap": "95000", + "notionalFloor": "38000", + "maintMarginRatio": "0.05", + "cum": "1080.0" } }, { "tier": 6.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 95000.0, + "maxNotional": 194000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "5", + "notionalCap": "194000", + "notionalFloor": "95000", + "maintMarginRatio": "0.1", + "cum": "5830.0" } }, { "tier": 7.0, "symbol": "MUBARAK/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 194000.0, + "maxNotional": 430000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "430000", + "notionalFloor": "194000", + "maintMarginRatio": "0.125", + "cum": "10680.0" + } + }, + { + "tier": 8.0, + "symbol": "MUBARAK/USDT:USDT", + "currency": "USDT", + "minNotional": 430000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "430000", + "maintMarginRatio": "0.1667", + "cum": "28611.0" + } + }, + { + "tier": 9.0, + "symbol": "MUBARAK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "403461.0" + } + }, + { + "tier": 10.0, + "symbol": "MUBARAK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2278461.0" } } ], @@ -40622,14 +51445,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -40639,15 +51462,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -40655,118 +51478,411 @@ "symbol": "MYRO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "50000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "MYRO/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "MYRO/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "MYRO/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "MYRO/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.125", - "cum": "47825.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "MYRO/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "MYX/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "MYX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "172825.0" + "cum": "392225.0" } }, { "tier": 9.0, - "symbol": "MYRO/USDT:USDT", + "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "547825.0" + "cum": "2267225.0" + } + } + ], + "NAORIS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "NAORIS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -41069,730 +52185,6 @@ "symbol": "NEIRO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "20000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, - "info": { - "bracket": "2", - "initialLeverage": "8", - "notionalCap": "160000", - "notionalFloor": "20000", - "maintMarginRatio": "0.015", - "cum": "100.0" - } - }, - { - "tier": 3.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.02", - "cum": "900.0" - } - }, - { - "tier": 4.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.025", - "cum": "4900.0" - } - }, - { - "tier": 5.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.05", - "cum": "44900.0" - } - }, - { - "tier": 6.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "194900.0" - } - }, - { - "tier": 7.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 7000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "7000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.125", - "cum": "319900.0" - } - }, - { - "tier": 8.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 7000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "8000000", - "notionalFloor": "7000000", - "maintMarginRatio": "0.25", - "cum": "1194900.0" - } - }, - { - "tier": 9.0, - "symbol": "NEIRO/USDT:USDT", - "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 9000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "9000000", - "notionalFloor": "8000000", - "maintMarginRatio": "0.5", - "cum": "3194900.0" - } - } - ], - "NEIROETH/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 15.0, - "info": { - "bracket": "1", - "initialLeverage": "15", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 12.0, - "info": { - "bracket": "2", - "initialLeverage": "12", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 8.0, - "info": { - "bracket": "4", - "initialLeverage": "8", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" - } - }, - { - "tier": 5.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, - "info": { - "bracket": "5", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" - } - }, - { - "tier": 6.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" - } - }, - { - "tier": 7.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" - } - }, - { - "tier": 8.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 700000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "700000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "1000000", - "notionalFloor": "700000", - "maintMarginRatio": "0.5", - "cum": "258675.0" - } - } - ], - "NEO/USDC:USDC": [ - { - "tier": 1.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.006, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.006", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "50000", - "notionalFloor": "5000", - "maintMarginRatio": "0.01", - "cum": "20.0" - } - }, - { - "tier": 3.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "770.0" - } - }, - { - "tier": 4.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 100000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "3270.0" - } - }, - { - "tier": 5.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "18270.0" - } - }, - { - "tier": 6.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "33270.0" - } - }, - { - "tier": 7.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "127020.0" - } - }, - { - "tier": 8.0, - "symbol": "NEO/USDC:USDC", - "currency": "USDC", - "minNotional": 1500000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "2500000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "502020.0" - } - } - ], - "NEO/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.006, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.006", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "50000", - "notionalFloor": "5000", - "maintMarginRatio": "0.01", - "cum": "20.0" - } - }, - { - "tier": 3.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "250000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "770.0" - } - }, - { - "tier": 4.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.05", - "cum": "7020.0" - } - }, - { - "tier": 5.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "32020.0" - } - }, - { - "tier": 6.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "57020.0" - } - }, - { - "tier": 7.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "2000000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "213270.0" - } - }, - { - "tier": 8.0, - "symbol": "NEO/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.5", - "cum": "713270.0" - } - } - ], - "NFP/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "3", - "initialLeverage": "6", - "notionalCap": "50000", - "notionalFloor": "25000", - "maintMarginRatio": "0.025", - "cum": "150.0" - } - }, - { - "tier": 4.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1400.0" - } - }, - { - "tier": 5.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "26400.0" - } - }, - { - "tier": 6.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "51400.0" - } - }, - { - "tier": 7.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "207650.0" - } - }, - { - "tier": 8.0, - "symbol": "NFP/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.5", - "cum": "832650.0" - } - } - ], - "NIL/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "NIL/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, @@ -41807,7 +52199,7 @@ }, { "tier": 2.0, - "symbol": "NIL/USDT:USDT", + "symbol": "NEIRO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -41824,16 +52216,16 @@ }, { "tier": 3.0, - "symbol": "NIL/USDT:USDT", + "symbol": "NEIRO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -41841,104 +52233,1085 @@ }, { "tier": 4.0, - "symbol": "NIL/USDT:USDT", + "symbol": "NEIRO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NEIRO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "NEIROETH/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "NEIROETH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "NEO/USDC:USDC": [ + { + "tier": 1.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NEO/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "NEO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NEO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "NEWT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NEWT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "NFP/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "15000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 15000.0, + "maxNotional": 32500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "32500", + "notionalFloor": "15000", + "maintMarginRatio": "0.05", + "cum": "425.0" + } + }, + { + "tier": 4.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 32500.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "75000", + "notionalFloor": "32500", + "maintMarginRatio": "0.1", + "cum": "2050.0" + } + }, + { + "tier": 5.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 75000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "75000", + "maintMarginRatio": "0.125", + "cum": "3925.0" + } + }, + { + "tier": 6.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" + } + }, + { + "tier": 7.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" + } + }, + { + "tier": 8.0, + "symbol": "NFP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2264200.0" + } + } + ], + "NIL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NIL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NIL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NIL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NIL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "NIL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "NIL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "NIL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "NIL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "NIL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -41950,10 +53323,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.02", @@ -41965,13 +53338,13 @@ "symbol": "NKN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "25.0" @@ -41981,68 +53354,102 @@ "tier": 3.0, "symbol": "NKN/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "200000", - "notionalFloor": "50000", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "1275.0" + "cum": "275.0" } }, { "tier": 4.0, "symbol": "NKN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "11275.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "NKN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23775.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "NKN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "NKN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "NKN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "398775.0" + "cum": "152770.0" } } ], @@ -42053,14 +53460,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -42069,15 +53476,15 @@ "symbol": "NMR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -42085,85 +53492,119 @@ "tier": 3.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "NMR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "NMR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2267225.0" } } ], @@ -42173,13 +53614,13 @@ "symbol": "NOT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -42189,136 +53630,153 @@ "tier": 2.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "600000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "16850.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "2000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "116850.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "191850.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "691850.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "NOT/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NOT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1941850.0" + "cum": "2284650.0" } } ], @@ -42345,101 +53803,135 @@ "symbol": "NTRN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "NTRN/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "NTRN/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "NTRN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "NTRN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "NTRN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "NTRN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "NTRN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -42598,6 +54090,316 @@ } } ], + "NXPC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "NXPC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "OBOL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "OBOL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], "OCEAN/USDT:USDT": [ { "tier": 1.0, @@ -42702,6 +54504,161 @@ } } ], + "OG/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1325.0" + } + }, + { + "tier": 5.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7575.0" + } + }, + { + "tier": 6.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13825.0" + } + }, + { + "tier": 7.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34675.0" + } + }, + { + "tier": 8.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409525.0" + } + }, + { + "tier": 9.0, + "symbol": "OG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284525.0" + } + } + ], "OGN/USDT:USDT": [ { "tier": 1.0, @@ -42725,13 +54682,13 @@ "symbol": "OGN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -42741,7 +54698,7 @@ "tier": 3.0, "symbol": "OGN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -42749,9 +54706,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -42759,84 +54716,239 @@ "symbol": "OGN/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "OGN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "OGN/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "OGN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "OGN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "OGN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "OL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "OL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2262825.0" } } ], @@ -42846,15 +54958,15 @@ "symbol": "OM/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "5", - "notionalCap": "400000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.05", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -42862,68 +54974,153 @@ "tier": 2.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "4", - "notionalCap": "1500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "20000.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 1800000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "3", - "notionalCap": "1800000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.125", - "cum": "57500.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 1800000.0, - "maxNotional": 1900000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "2", - "notionalCap": "1900000", - "notionalFloor": "1800000", - "maintMarginRatio": "0.25", - "cum": "282500.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 1900000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "OM/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "OM/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "OM/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "OM/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "OM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "5", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1900000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "757500.0" + "cum": "2284650.0" } } ], @@ -43055,14 +55252,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -43071,15 +55268,15 @@ "symbol": "OMNI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -43087,102 +55284,136 @@ "tier": 3.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "30000", - "maintMarginRatio": "0.05", - "cum": "875.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15875.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "30875.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "OMNI/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "OMNI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "OMNI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "2284650.0" } } ], @@ -43192,13 +55423,13 @@ "symbol": "ONDO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -43208,136 +55439,170 @@ "tier": 2.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 80000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "80000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "400000", - "notionalFloor": "80000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "450.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "800000", - "notionalFloor": "400000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "2450.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "4000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.05", - "cum": "22450.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "8000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.1", - "cum": "222450.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "10000000", - "notionalFloor": "8000000", - "maintMarginRatio": "0.125", - "cum": "422450.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "20000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.25", - "cum": "1672450.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 20000000.0, - "maxNotional": 40000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "ONDO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "ONDO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "40000000", - "notionalFloor": "20000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "6672450.0" + "cum": "2347727.5" } } ], @@ -43348,14 +55613,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -43365,14 +55630,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -43381,15 +55646,15 @@ "symbol": "ONE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -43397,102 +55662,102 @@ "tier": 4.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ONE/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" } } ], @@ -43519,101 +55784,135 @@ "symbol": "ONG/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ONG/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ONG/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ONG/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ONG/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ONG/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ONG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ONG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -43625,10 +55924,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -43640,101 +55939,135 @@ "symbol": "ONT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ONT/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1300.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ONT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "31300.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ONT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1200000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "56300.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ONT/USDT:USDT", "currency": "USDT", - "minNotional": 1200000.0, - "maxNotional": 1300000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1300000", - "notionalFloor": "1200000", - "maintMarginRatio": "0.25", - "cum": "206300.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ONT/USDT:USDT", "currency": "USDT", - "minNotional": 1300000.0, - "maxNotional": 1500000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ONT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ONT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1300000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "531300.0" + "cum": "2267225.0" } } ], @@ -44072,14 +56405,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -44089,14 +56422,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -44105,15 +56438,15 @@ "symbol": "ORCA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 18.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "18", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -44121,102 +56454,102 @@ "tier": 4.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "15", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "ORCA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -44227,14 +56560,14 @@ "currency": "USDC", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.0065, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.0065", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -44243,152 +56576,152 @@ "symbol": "ORDI/USDC:USDC", "currency": "USDC", "minNotional": 5000.0, - "maxNotional": 75000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "75000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.01", - "cum": "17.5" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 75000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "150000", - "notionalFloor": "75000", - "maintMarginRatio": "0.015", - "cum": "392.5" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.02", - "cum": "1142.5" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "300000", - "maintMarginRatio": "0.025", - "cum": "2642.5" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "27642.5" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 3000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "6000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "177642.5" + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "8", "initialLeverage": "3", - "notionalCap": "10000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.125", - "cum": "327642.5" + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "9", "initialLeverage": "2", - "notionalCap": "20000000", - "notionalFloor": "10000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "1577642.5" + "cum": "409650.0" } }, { "tier": 10.0, "symbol": "ORDI/USDC:USDC", "currency": "USDC", - "minNotional": 20000000.0, - "maxNotional": 30000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "10", "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "20000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "6577642.5" + "cum": "2284650.0" } } ], @@ -44398,15 +56731,15 @@ "symbol": "ORDI/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.0065, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.0065", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -44414,153 +56747,153 @@ "tier": 2.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "10000", - "maintMarginRatio": "0.01", - "cum": "35.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "150000", - "notionalFloor": "80000", - "maintMarginRatio": "0.015", - "cum": "435.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "400000", - "notionalFloor": "150000", - "maintMarginRatio": "0.02", - "cum": "1185.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.025", - "cum": "3185.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "28185.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "8000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.1", - "cum": "228185.0" + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "8", "initialLeverage": "3", - "notionalCap": "10000000", - "notionalFloor": "8000000", - "maintMarginRatio": "0.125", - "cum": "428185.0" + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 20000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "9", "initialLeverage": "2", - "notionalCap": "20000000", - "notionalFloor": "10000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "1678185.0" + "cum": "409650.0" } }, { "tier": 10.0, "symbol": "ORDI/USDT:USDT", "currency": "USDT", - "minNotional": 20000000.0, - "maxNotional": 40000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "10", "initialLeverage": "1", - "notionalCap": "40000000", - "notionalFloor": "20000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "6678185.0" + "cum": "2284650.0" } } ], @@ -44571,14 +56904,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -44587,15 +56920,15 @@ "symbol": "OXT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -44603,85 +56936,119 @@ "tier": 3.0, "symbol": "OXT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "OXT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "OXT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "OXT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "OXT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "OXT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "OXT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2267225.0" } } ], @@ -44725,13 +57092,13 @@ "symbol": "PARTI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -44741,102 +57108,119 @@ "tier": 4.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "PARTI/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "PARTI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -44846,6 +57230,195 @@ "symbol": "PAXG/USDT:USDT", "currency": "USDT", "minNotional": 0.0, + "maxNotional": 7500.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "7500", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "15000", + "notionalFloor": "7500", + "maintMarginRatio": "0.015", + "cum": "37.5" + } + }, + { + "tier": 3.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 15000.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "75000", + "notionalFloor": "15000", + "maintMarginRatio": "0.02", + "cum": "112.5" + } + }, + { + "tier": 4.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 75000.0, + "maxNotional": 200000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "200000", + "notionalFloor": "75000", + "maintMarginRatio": "0.025", + "cum": "487.5" + } + }, + { + "tier": 5.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 200000.0, + "maxNotional": 350000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "350000", + "notionalFloor": "200000", + "maintMarginRatio": "0.0333", + "cum": "2147.5" + } + }, + { + "tier": 6.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 350000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "750000", + "notionalFloor": "350000", + "maintMarginRatio": "0.05", + "cum": "7992.5" + } + }, + { + "tier": 7.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 3000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "3000000", + "notionalFloor": "750000", + "maintMarginRatio": "0.1", + "cum": "45492.5" + } + }, + { + "tier": 8.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 3000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "4500000", + "notionalFloor": "3000000", + "maintMarginRatio": "0.125", + "cum": "120492.5" + } + }, + { + "tier": 9.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.1667", + "cum": "308142.5" + } + }, + { + "tier": 10.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.25", + "cum": "932892.5" + } + }, + { + "tier": 11.0, + "symbol": "PAXG/USDT:USDT", + "currency": "USDT", + "minNotional": 12000000.0, + "maxNotional": 18000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "18000000", + "notionalFloor": "12000000", + "maintMarginRatio": "0.5", + "cum": "3932892.5" + } + } + ], + "PENDLE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PENDLE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, @@ -44860,7 +57433,7 @@ }, { "tier": 2.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -44877,16 +57450,16 @@ }, { "tier": 3.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -44894,120 +57467,154 @@ }, { "tier": 4.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "325.0" } }, { "tier": 5.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 250000.0, "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", "minNotional": 750000.0, "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "4", "notionalCap": "1500000", "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, - "symbol": "PAXG/USDT:USDT", + "symbol": "PENDLE/USDT:USDT", "currency": "USDT", "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "PENDLE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "PENDLE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2347727.5" } } ], - "PENDLE/USDT:USDT": [ + "PENGU/USDC:USDC": [ { "tier": 1.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -45015,138 +57622,155 @@ }, { "tier": 2.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "20000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "100000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, - "symbol": "PENDLE/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "PENGU/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -45156,13 +57780,13 @@ "symbol": "PENGU/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 7500.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "7500", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -45172,136 +57796,170 @@ "tier": 2.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 7500.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "15000", + "notionalFloor": "7500", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "37.5" } }, { "tier": 3.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 15000.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "75000", + "notionalFloor": "15000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "112.5" } }, { "tier": 4.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 75000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "200000", + "notionalFloor": "75000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "487.5" } }, { "tier": 5.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 200000.0, + "maxNotional": 350000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "16850.0" + "initialLeverage": "15", + "notionalCap": "350000", + "notionalFloor": "200000", + "maintMarginRatio": "0.0333", + "cum": "2147.5" } }, { "tier": 6.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 350000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "6000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "166850.0" + "initialLeverage": "10", + "notionalCap": "750000", + "notionalFloor": "350000", + "maintMarginRatio": "0.05", + "cum": "7992.5" } }, { "tier": 7.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 750000.0, + "maxNotional": 3000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "7500000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.125", - "cum": "316850.0" + "initialLeverage": "5", + "notionalCap": "3000000", + "notionalFloor": "750000", + "maintMarginRatio": "0.1", + "cum": "45492.5" } }, { "tier": 8.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 15000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 3000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "15000000", - "notionalFloor": "7500000", - "maintMarginRatio": "0.25", - "cum": "1254350.0" + "initialLeverage": "4", + "notionalCap": "4500000", + "notionalFloor": "3000000", + "maintMarginRatio": "0.125", + "cum": "120492.5" } }, { "tier": 9.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 15000000.0, - "maxNotional": 30000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.1667", + "cum": "308142.5" + } + }, + { + "tier": 10.0, + "symbol": "PENGU/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.25", + "cum": "932892.5" + } + }, + { + "tier": 11.0, + "symbol": "PENGU/USDT:USDT", + "currency": "USDT", + "minNotional": 12000000.0, + "maxNotional": 18000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "15000000", + "notionalCap": "18000000", + "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "5004350.0" + "cum": "3932892.5" } } ], @@ -45311,13 +57969,13 @@ "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 500.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "500", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -45327,136 +57985,153 @@ "tier": 2.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, + "minNotional": 500.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "40000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "500", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "2.5" } }, { "tier": 3.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "200000", - "notionalFloor": "40000", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.02", - "cum": "250.0" + "cum": "27.5" } }, { "tier": 4.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "400000", - "notionalFloor": "200000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "1250.0" + "cum": "77.5" } }, { "tier": 5.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1500000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "400000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "11250.0" + "cum": "702.5" } }, { "tier": 6.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "86250.0" + "cum": "3827.5" } }, { "tier": 7.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "136250.0" + "cum": "6952.5" } }, { "tier": 8.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "448750.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17377.5" } }, { "tier": 9.0, "symbol": "PEOPLE/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392227.5" + } + }, + { + "tier": 10.0, + "symbol": "PEOPLE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1198750.0" + "cum": "2267227.5" } } ], @@ -45467,6 +58142,144 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "PERP/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], + "PHA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -45480,16 +58293,171 @@ }, { "tier": 2.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PHA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "PHB/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PHB/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PHB/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "15000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -45497,94 +58465,559 @@ }, { "tier": 3.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHB/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 15000.0, + "maxNotional": 32500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "32500", + "notionalFloor": "15000", "maintMarginRatio": "0.05", - "cum": "675.0" + "cum": "425.0" } }, { "tier": 4.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHB/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "75000", + "notionalFloor": "32500", "maintMarginRatio": "0.1", - "cum": "10675.0" + "cum": "2050.0" } }, { "tier": 5.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHB/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "75000", "maintMarginRatio": "0.125", - "cum": "23175.0" + "cum": "3925.0" } }, { "tier": 6.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHB/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, - "symbol": "PERP/USDT:USDT", + "symbol": "PHB/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3005000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" + } + }, + { + "tier": 8.0, + "symbol": "PHB/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3005000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2264200.0" } } ], - "PHA/USDT:USDT": [ + "PIPPIN/USDT:USDT": [ { "tier": 1.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "PIPPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "PIXEL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PIXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "PLAY/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PLAY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "PLUME/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PLUME/USDT:USDT", "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, @@ -45601,7 +59034,7 @@ }, { "tier": 2.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -45618,16 +59051,16 @@ }, { "tier": 3.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -45635,605 +59068,121 @@ }, { "tier": 4.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "PHA/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "PHA/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "PHA/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "PHA/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "PHB/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "PHB/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "PHB/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "PHB/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "PHB/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, + "minNotional": 125000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { - "bracket": "4", + "bracket": "6", "initialLeverage": "5", "notionalCap": "250000", - "notionalFloor": "100000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "5650.0" + "cum": "7700.0" } }, { - "tier": 5.0, - "symbol": "PHB/USDT:USDT", + "tier": 7.0, + "symbol": "PLUME/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, - "info": { - "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11900.0" - } - }, - { - "tier": 6.0, - "symbol": "PHB/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "6", - "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "386900.0" - } - } - ], - "PIPPIN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "3", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "4", + "bracket": "7", "initialLeverage": "4", "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "5", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" - } - }, - { - "tier": 7.0, - "symbol": "PIPPIN/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "491900.0" - } - } - ], - "PIXEL/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" - } - }, - { - "tier": 4.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" - } - }, - { - "tier": 5.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" - } - }, - { - "tier": 6.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" - } - }, - { - "tier": 7.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, - "symbol": "PIXEL/USDT:USDT", + "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, - "symbol": "PIXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.5", - "cum": "1334505.0" - } - } - ], - "PLUME/USDT:USDT": [ - { - "tier": 1.0, "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "PLUME/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "PLUME/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "PLUME/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "PLUME/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "PLUME/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "116900.0" + "cum": "409650.0" } }, { - "tier": 7.0, + "tier": 10.0, "symbol": "PLUME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2284650.0" } } ], @@ -46245,10 +59194,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -46262,10 +59211,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -46277,13 +59226,13 @@ "symbol": "PNUT/USDC:USDC", "currency": "USDC", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -46293,102 +59242,119 @@ "tier": 4.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "PNUT/USDC:USDC", "currency": "USDC", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "PNUT/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -46398,13 +59364,13 @@ "symbol": "PNUT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 15000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "15000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -46414,136 +59380,153 @@ "tier": 2.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 15000.0, - "maxNotional": 120000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "120000", - "notionalFloor": "15000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "75.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 120000.0, - "maxNotional": 600000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "600000", - "notionalFloor": "120000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "675.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1200000", - "notionalFloor": "600000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "3675.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 1200000.0, - "maxNotional": 1800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1800000", - "notionalFloor": "1200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "33675.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 1800000.0, - "maxNotional": 2500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "1800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "123675.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "186175.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.25", - "cum": "561175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "PNUT/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "PNUT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1436175.0" + "cum": "2284650.0" } } ], @@ -46553,13 +59536,13 @@ "symbol": "POL/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -46569,136 +59552,170 @@ "tier": 2.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "60000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "3000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "16850.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "166850.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3500000", - "maintMarginRatio": "0.125", - "cum": "254350.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "754350.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "POL/USDT:USDT", "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "POL/USDT:USDT", + "currency": "USDT", "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "POL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1879350.0" + "cum": "2347727.5" } } ], @@ -46710,10 +59727,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 25.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -46725,13 +59742,13 @@ "symbol": "POLYX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -46741,102 +59758,119 @@ "tier": 3.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "25000", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "80000", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "2150.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "42150.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "82150.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "332150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "POLYX/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "POLYX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "2267225.0" } } ], @@ -46847,316 +59881,6 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "POPCAT/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.02", - "cum": "550.0" - } - }, - { - "tier": 4.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.025", - "cum": "3050.0" - } - }, - { - "tier": 5.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "28050.0" - } - }, - { - "tier": 6.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "178050.0" - } - }, - { - "tier": 7.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "6000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.125", - "cum": "303050.0" - } - }, - { - "tier": 8.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.25", - "cum": "1053050.0" - } - }, - { - "tier": 9.0, - "symbol": "POPCAT/USDT:USDT", - "currency": "USDT", - "minNotional": 7000000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "7000000", - "maintMarginRatio": "0.5", - "cum": "2803050.0" - } - } - ], - "PORTAL/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "PORTAL/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -47170,16 +59894,343 @@ }, { "tier": 2.0, - "symbol": "PORTAL/USDT:USDT", + "symbol": "PONKE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PONKE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "POPCAT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "POPCAT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "PORT3/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -47187,87 +60238,242 @@ }, { "tier": 3.0, - "symbol": "PORTAL/USDT:USDT", + "symbol": "PORT3/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "675.0" + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "PORT3/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "PORTAL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PORTAL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PORTAL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PORTAL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "PORTAL/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.1", - "cum": "5675.0" + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "PORTAL/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "10675.0" + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "PORTAL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "PORTAL/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "PORTAL/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "152770.0" } } ], @@ -47294,101 +60500,135 @@ "symbol": "POWR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "POWR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "POWR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -47399,6 +60639,299 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PROM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "PROMPT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "PROMPT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "PROVE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PROVE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -47412,7 +60945,7 @@ }, { "tier": 2.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -47429,16 +60962,16 @@ }, { "tier": 3.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -47446,104 +60979,741 @@ }, { "tier": 4.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "325.0" } }, { "tier": 5.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 250000.0, "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PROVE/USDT:USDT", "currency": "USDT", "minNotional": 750000.0, "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "PROVE/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "PROVE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "PROVE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" + } + } + ], + "PUFFER/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PUFFER/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, - "symbol": "PROM/USDT:USDT", + "symbol": "PUFFER/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" + } + } + ], + "PUMP/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "20000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 200000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "200000", + "notionalFloor": "20000", + "maintMarginRatio": "0.015", + "cum": "100.0" + } + }, + { + "tier": 3.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 200000.0, + "maxNotional": 1000000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "1000000", + "notionalFloor": "200000", + "maintMarginRatio": "0.02", + "cum": "1100.0" + } + }, + { + "tier": 4.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 1000000.0, + "maxNotional": 2000000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "2000000", + "notionalFloor": "1000000", + "maintMarginRatio": "0.025", + "cum": "6100.0" + } + }, + { + "tier": 5.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 2000000.0, + "maxNotional": 5000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "5000000", + "notionalFloor": "2000000", + "maintMarginRatio": "0.05", + "cum": "56100.0" + } + }, + { + "tier": 6.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "7500000", + "notionalFloor": "5000000", + "maintMarginRatio": "0.1", + "cum": "306100.0" + } + }, + { + "tier": 7.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.125", + "cum": "493600.0" + } + }, + { + "tier": 8.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 10000000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "12500000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.25", + "cum": "1743600.0" + } + }, + { + "tier": 9.0, + "symbol": "PUMP/USDT:USDT", + "currency": "USDT", + "minNotional": 12500000.0, + "maxNotional": 15000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "15000000", + "notionalFloor": "12500000", + "maintMarginRatio": "0.5", + "cum": "4868600.0" + } + } + ], + "PUMPBTC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "PUMPBTC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "PUNDIX/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "PUNDIX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -47553,13 +61723,13 @@ "symbol": "PYTH/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -47569,136 +61739,153 @@ "tier": 2.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "30000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "150000", - "notionalFloor": "30000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "300000", - "notionalFloor": "150000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1500000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "PYTH/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "PYTH/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -47742,13 +61929,13 @@ "symbol": "QNT/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "50000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -47758,102 +61945,119 @@ "tier": 4.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "500000", - "notionalFloor": "100000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "QNT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "QNT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2284650.0" } } ], @@ -47880,101 +62084,135 @@ "symbol": "QTUM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "QTUM/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "QTUM/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "QTUM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "QTUM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "QTUM/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "QTUM/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "QTUM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2267225.0" } } ], @@ -47985,14 +62223,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -48002,15 +62240,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -48019,15 +62257,15 @@ "currency": "USDT", "minNotional": 10000.0, "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { @@ -48035,101 +62273,84 @@ "symbol": "QUICK/USDT:USDT", "currency": "USDT", "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "40000", + "initialLeverage": "5", + "notionalCap": "50000", "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "QUICK/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "QUICK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "QUICK/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "QUICK/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "QUICK/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2262825.0" } } ], @@ -48260,15 +62481,15 @@ "symbol": "RARE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -48276,136 +62497,136 @@ "tier": 2.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "150000", - "notionalFloor": "30000", - "maintMarginRatio": "0.02", - "cum": "200.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.025", - "cum": "950.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "33450.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "700000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "48450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 800000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "800000", - "notionalFloor": "700000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "135950.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "RARE/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 900000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "900000", - "notionalFloor": "800000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "335950.0" + "cum": "2267225.0" } } ], @@ -48553,13 +62774,13 @@ "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -48569,102 +62790,119 @@ "tier": 4.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "RAYSOL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RAYSOL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -48674,15 +62912,15 @@ "symbol": "RDNT/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -48690,16 +62928,16 @@ "tier": 2.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", "cum": "50.0" } }, @@ -48707,119 +62945,102 @@ "tier": 3.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "RDNT/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" - } - }, - { - "tier": 9.0, - "symbol": "RDNT/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1918150.0" + "cum": "2262825.0" } } ], @@ -48830,14 +63051,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -48847,14 +63068,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -48863,15 +63084,15 @@ "symbol": "RED/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -48879,102 +63100,102 @@ "tier": 4.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "RED/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -49106,14 +63327,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, + "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "1", "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -49123,14 +63344,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -49139,84 +63360,84 @@ "symbol": "REI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "20000", + "initialLeverage": "10", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "REI/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "40000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "175.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "REI/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.05", - "cum": "1175.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "REI/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "11175.0" + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "REI/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", + "initialLeverage": "2", "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "21175.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" } }, { @@ -49224,33 +63445,16 @@ "symbol": "REI/USDT:USDT", "currency": "USDT", "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83675.0" - } - }, - { - "tier": 9.0, - "symbol": "REI/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "800000", + "notionalFloor": "500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "152770.0" } } ], @@ -49381,13 +63585,13 @@ "symbol": "RENDER/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -49397,119 +63601,119 @@ "tier": 2.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "40000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "250.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1250.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "2000000", - "notionalFloor": "400000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "11250.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "3500000", - "notionalFloor": "2000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "111250.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "198750.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "RENDER/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, + "minNotional": 500000.0, "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "3", "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.25", - "cum": "698750.0" + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { @@ -49517,16 +63721,188 @@ "symbol": "RENDER/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RENDER/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "RESOLV/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "RESOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1823750.0" + "cum": "2267225.0" } } ], @@ -49553,13 +63929,13 @@ "symbol": "REZ/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -49569,102 +63945,119 @@ "tier": 3.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 30000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "3", "initialLeverage": "20", - "notionalCap": "30000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "30000", + "notionalCap": "62500", + "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "875.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "15875.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "30875.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "124625.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "REZ/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "REZ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "499625.0" + "cum": "2267225.0" } } ], @@ -49691,101 +64084,135 @@ "symbol": "RIF/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "RIF/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "RIF/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -49796,127 +64223,6 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15650.0" - } - }, - { - "tier": 5.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "28150.0" - } - }, - { - "tier": 6.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 700000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "700000", - "notionalFloor": "600000", - "maintMarginRatio": "0.25", - "cum": "103150.0" - } - }, - { - "tier": 7.0, - "symbol": "RLC/USDT:USDT", - "currency": "USDT", - "minNotional": 700000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "800000", - "notionalFloor": "700000", - "maintMarginRatio": "0.5", - "cum": "278150.0" - } - } - ], - "RONIN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -49930,266 +64236,145 @@ }, { "tier": 2.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" - } - }, - { - "tier": 4.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" - } - }, - { - "tier": 5.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" - } - }, - { - "tier": 6.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" - } - }, - { - "tier": 7.0, - "symbol": "RONIN/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "323175.0" - } - } - ], - "ROSE/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ROSE/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, { "tier": 3.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, { "tier": 4.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, - "symbol": "ROSE/USDT:USDT", + "symbol": "RLC/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], - "RPL/USDT:USDT": [ + "RONIN/USDT:USDT": [ { "tier": 1.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, @@ -50206,7 +64391,7 @@ }, { "tier": 2.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -50223,16 +64408,16 @@ }, { "tier": 3.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -50240,60 +64425,60 @@ }, { "tier": 4.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 40000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "40000", - "notionalFloor": "20000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "175.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1175.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "11175.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "RPL/USDT:USDT", + "symbol": "RONIN/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, + "minNotional": 250000.0, "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -50301,43 +64486,387 @@ "bracket": "7", "initialLeverage": "4", "notionalCap": "500000", - "notionalFloor": "400000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "21175.0" + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "RONIN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "RONIN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RONIN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "ROSE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ROSE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "RPL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "RPL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "RPL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "83675.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "RPL/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333675.0" + "cum": "2267225.0" } } ], @@ -50349,10 +64878,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -50366,10 +64895,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -50381,13 +64910,13 @@ "symbol": "RSR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -50397,102 +64926,119 @@ "tier": 4.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "RSR/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RSR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2284650.0" } } ], @@ -50502,13 +65048,13 @@ "symbol": "RUNE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "10", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -50518,136 +65064,153 @@ "tier": 2.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 9.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "9", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 7.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2200000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2200000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "133450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 2200000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "2200000", - "maintMarginRatio": "0.25", - "cum": "408450.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "RUNE/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RUNE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1033450.0" + "cum": "2284650.0" } } ], @@ -50658,14 +65221,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -50674,15 +65237,15 @@ "symbol": "RVN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -50690,17 +65253,17 @@ "tier": 3.0, "symbol": "RVN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { @@ -50708,84 +65271,118 @@ "symbol": "RVN/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", + "initialLeverage": "20", + "notionalCap": "50000", "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "RVN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "RVN/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "RVN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "RVN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "RVN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "RVN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2284650.0" } } ], @@ -50829,13 +65426,13 @@ "symbol": "S/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -50845,68 +65442,68 @@ "tier": 4.0, "symbol": "S/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "S/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "S/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "S/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, + "minNotional": 250000.0, "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { @@ -50915,15 +65512,15 @@ "currency": "USDT", "minNotional": 750000.0, "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", + "initialLeverage": "4", "notionalCap": "1500000", "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { @@ -50931,16 +65528,50 @@ "symbol": "S/USDT:USDT", "currency": "USDT", "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "S/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "S/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2347727.5" } } ], @@ -50951,6 +65582,161 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SAFE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "SAGA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SAGA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -50964,7 +65750,7 @@ }, { "tier": 2.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -50981,16 +65767,16 @@ }, { "tier": 3.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -50998,120 +65784,137 @@ }, { "tier": 4.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, - "symbol": "SAFE/USDT:USDT", + "symbol": "SAGA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SAGA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], - "SAGA/USDT:USDT": [ + "SAHARA/USDT:USDT": [ { "tier": 1.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -51119,138 +65922,172 @@ }, { "tier": 2.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "325.0" } }, { "tier": 5.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.1", - "cum": "83450.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "133450.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "445950.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, - "symbol": "SAGA/USDT:USDT", + "symbol": "SAHARA/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "SAHARA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "SAHARA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1195950.0" + "cum": "2347727.5" } } ], @@ -51260,15 +66097,15 @@ "symbol": "SAND/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.006, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "25000", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.006", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -51276,153 +66113,153 @@ "tier": 2.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.01, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "50000", - "notionalFloor": "25000", - "maintMarginRatio": "0.01", - "cum": "100.0" + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 40.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "40", - "notionalCap": "80000", - "notionalFloor": "50000", - "maintMarginRatio": "0.015", - "cum": "350.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "25", - "notionalCap": "300000", - "notionalFloor": "80000", - "maintMarginRatio": "0.02", - "cum": "750.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "20", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.025", - "cum": "2250.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "10", - "notionalCap": "3000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "17250.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "167250.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "4", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "267250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "9", "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "5000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "892250.0" + "cum": "409650.0" } }, { "tier": 10.0, "symbol": "SAND/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 7000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "10", "initialLeverage": "1", - "notionalCap": "7000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2392250.0" + "cum": "2284650.0" } } ], @@ -51433,14 +66270,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -51449,135 +66286,273 @@ "symbol": "SANTOS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "10000", + "initialLeverage": "20", + "notionalCap": "15000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, + "minNotional": 15000.0, + "maxNotional": 32500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "notionalCap": "32500", + "notionalFloor": "15000", + "maintMarginRatio": "0.05", + "cum": "425.0" } }, { "tier": 4.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 32500.0, + "maxNotional": 75000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "75000", + "notionalFloor": "32500", + "maintMarginRatio": "0.1", + "cum": "2050.0" } }, { "tier": 5.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 75000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "75000", + "maintMarginRatio": "0.125", + "cum": "3925.0" } }, { "tier": 6.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "14350.0" } }, { "tier": 7.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "389200.0" } }, { "tier": 8.0, "symbol": "SANTOS/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2264200.0" + } + } + ], + "SAPIEN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SAPIEN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, - "symbol": "SANTOS/USDT:USDT", + "symbol": "SAPIEN/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -51692,14 +66667,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -51708,15 +66683,15 @@ "symbol": "SCR/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "16000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -51724,119 +66699,119 @@ "tier": 3.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "334505.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "SCR/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2267225.0" } } ], @@ -51847,6 +66822,144 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "SCRT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], + "SEI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SEI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -51860,7 +66973,7 @@ }, { "tier": 2.0, - "symbol": "SCRT/USDT:USDT", + "symbol": "SEI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -51877,16 +66990,16 @@ }, { "tier": 3.0, - "symbol": "SCRT/USDT:USDT", + "symbol": "SEI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -51894,259 +67007,138 @@ }, { "tier": 4.0, - "symbol": "SCRT/USDT:USDT", + "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "325.0" } }, { "tier": 5.0, - "symbol": "SCRT/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "SCRT/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "SCRT/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "SCRT/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "SCRT/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "SEI/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "SEI/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "SEI/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, - "info": { - "bracket": "2", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.02", - "cum": "550.0" - } - }, - { - "tier": 4.0, - "symbol": "SEI/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.025", - "cum": "3050.0" - } - }, - { - "tier": 5.0, - "symbol": "SEI/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "5000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.05", - "cum": "28050.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.1", - "cum": "278050.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 11000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "11000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.125", - "cum": "528050.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 11000000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "12000000", - "notionalFloor": "11000000", - "maintMarginRatio": "0.25", - "cum": "1903050.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 12000000.0, - "maxNotional": 13000000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "SEI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "SEI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "13000000", - "notionalFloor": "12000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "4903050.0" + "cum": "2347727.5" } } ], @@ -52157,14 +67149,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -52173,15 +67165,15 @@ "symbol": "SFP/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 15000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "15000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -52189,68 +67181,119 @@ "tier": 3.0, "symbol": "SFP/USDT:USDT", "currency": "USDT", - "minNotional": 15000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "15000", - "maintMarginRatio": "0.05", - "cum": "400.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SFP/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5400.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SFP/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SFP/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 8000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SFP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SFP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SFP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1136650.0" + "cum": "2267225.0" } } ], @@ -52261,14 +67304,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -52277,229 +67320,142 @@ "symbol": "SHELL/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "SHELL/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "SHELL/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "SHELL/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "SHELL/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" - } - }, - { - "tier": 7.0, - "symbol": "SHELL/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "491900.0" - } - } - ], - "SIREN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "SIREN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "SIREN/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, { "tier": 3.0, - "symbol": "SIREN/USDT:USDT", + "symbol": "SHELL/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, - "symbol": "SIREN/USDT:USDT", + "symbol": "SHELL/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, - "symbol": "SIREN/USDT:USDT", + "symbol": "SHELL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, - "symbol": "SIREN/USDT:USDT", + "symbol": "SHELL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, - "symbol": "SIREN/USDT:USDT", + "symbol": "SHELL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SHELL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SHELL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2267225.0" } } ], - "SKL/USDT:USDT": [ + "SIGN/USDT:USDT": [ { "tier": 1.0, - "symbol": "SKL/USDT:USDT", + "symbol": "SIGN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, @@ -52516,7 +67472,7 @@ }, { "tier": 2.0, - "symbol": "SKL/USDT:USDT", + "symbol": "SIGN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -52533,16 +67489,16 @@ }, { "tier": 3.0, - "symbol": "SKL/USDT:USDT", + "symbol": "SIGN/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -52550,104 +67506,724 @@ }, { "tier": 4.0, - "symbol": "SKL/USDT:USDT", + "symbol": "SIGN/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SIGN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "SIREN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SIREN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "SKATE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 40.0, + "info": { + "bracket": "1", + "initialLeverage": "40", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "SKATE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], + "SKL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SKL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SKL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SKL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SKL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SKL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SKL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SKL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SKL/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "156725.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "SKL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "531725.0" + "cum": "2267225.0" + } + } + ], + "SKYAI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1325.0" + } + }, + { + "tier": 5.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7575.0" + } + }, + { + "tier": 6.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13825.0" + } + }, + { + "tier": 7.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34675.0" + } + }, + { + "tier": 8.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409525.0" + } + }, + { + "tier": 9.0, + "symbol": "SKYAI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284525.0" } } ], @@ -52658,14 +68234,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -52675,14 +68251,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -52691,15 +68267,15 @@ "symbol": "SLERF/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -52707,102 +68283,102 @@ "tier": 4.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "SLERF/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "375475.0" + "cum": "2267225.0" } } ], @@ -52813,14 +68389,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 21.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "21", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -52829,101 +68405,152 @@ "symbol": "SLP/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "SLP/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SLP/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SLP/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SLP/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SLP/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "SLP/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "SLP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SLP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2284650.0" } } ], @@ -53055,14 +68682,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -53071,101 +68698,152 @@ "symbol": "SNX/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "SNX/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1300.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SNX/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "21300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SNX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "46300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SNX/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "296300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SNX/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "SNX/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "SNX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SNX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1796300.0" + "cum": "2284650.0" } } ], @@ -53364,13 +69042,13 @@ "symbol": "SOL/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.005, "maxLeverage": 100.0, "info": { "bracket": "1", "initialLeverage": "100", - "notionalCap": "20000", + "notionalCap": "50000", "notionalFloor": "0", "maintMarginRatio": "0.005", "cum": "0.0" @@ -53380,41 +69058,41 @@ "tier": 2.0, "symbol": "SOL/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 50000.0, + "maxNotional": 400000.0, "maintenanceMarginRate": 0.0065, "maxLeverage": 75.0, "info": { "bracket": "2", "initialLeverage": "75", - "notionalCap": "100000", - "notionalFloor": "20000", + "notionalCap": "400000", + "notionalFloor": "50000", "maintMarginRatio": "0.0065", - "cum": "30.0" + "cum": "75.0" } }, { "tier": 3.0, "symbol": "SOL/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 800000.0, + "minNotional": 400000.0, + "maxNotional": 1000000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 50.0, "info": { "bracket": "3", "initialLeverage": "50", - "notionalCap": "800000", - "notionalFloor": "100000", + "notionalCap": "1000000", + "notionalFloor": "400000", "maintMarginRatio": "0.01", - "cum": "380.0" + "cum": "1475.0" } }, { "tier": 4.0, "symbol": "SOL/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, + "minNotional": 1000000.0, "maxNotional": 4000000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, @@ -53422,9 +69100,9 @@ "bracket": "4", "initialLeverage": "25", "notionalCap": "4000000", - "notionalFloor": "800000", + "notionalFloor": "1000000", "maintMarginRatio": "0.02", - "cum": "8380.0" + "cum": "11475.0" } }, { @@ -53441,7 +69119,7 @@ "notionalCap": "8000000", "notionalFloor": "4000000", "maintMarginRatio": "0.025", - "cum": "28380.0" + "cum": "31475.0" } }, { @@ -53458,7 +69136,7 @@ "notionalCap": "40000000", "notionalFloor": "8000000", "maintMarginRatio": "0.05", - "cum": "228380.0" + "cum": "231475.0" } }, { @@ -53475,7 +69153,7 @@ "notionalCap": "80000000", "notionalFloor": "40000000", "maintMarginRatio": "0.1", - "cum": "2228380.0" + "cum": "2231475.0" } }, { @@ -53492,7 +69170,7 @@ "notionalCap": "100000000", "notionalFloor": "80000000", "maintMarginRatio": "0.125", - "cum": "4228380.0" + "cum": "4231475.0" } }, { @@ -53509,7 +69187,7 @@ "notionalCap": "200000000", "notionalFloor": "100000000", "maintMarginRatio": "0.25", - "cum": "16728380.0" + "cum": "16731475.0" } }, { @@ -53526,7 +69204,7 @@ "notionalCap": "400000000", "notionalFloor": "200000000", "maintMarginRatio": "0.5", - "cum": "66728380.0" + "cum": "66731475.0" } } ], @@ -53570,13 +69248,13 @@ "symbol": "SOLV/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -53586,102 +69264,119 @@ "tier": 4.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "SOLV/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SOLV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -53692,6 +69387,161 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SONIC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "SOON/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SOON/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -53705,7 +69555,7 @@ }, { "tier": 2.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -53722,16 +69572,16 @@ }, { "tier": 3.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -53739,104 +69589,293 @@ }, { "tier": 4.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, - "symbol": "SONIC/USDT:USDT", + "symbol": "SOON/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SOON/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" + } + } + ], + "SOPH/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SOPH/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -53848,10 +69887,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -53863,13 +69902,13 @@ "symbol": "SPELL/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -53879,17 +69918,17 @@ "tier": 3.0, "symbol": "SPELL/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", + "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -53897,84 +69936,290 @@ "symbol": "SPELL/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "8", - "notionalCap": "200000", + "initialLeverage": "10", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SPELL/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SPELL/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SPELL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SPELL/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SPELL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "1500000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" + } + } + ], + "SPK/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "SPK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" } } ], @@ -53986,10 +70231,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -54003,10 +70248,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -54018,13 +70263,13 @@ "symbol": "SPX/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -54034,102 +70279,274 @@ "tier": 4.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "SPX/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SPX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "SQD/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SQD/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -54141,10 +70558,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -54158,10 +70575,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -54173,13 +70590,13 @@ "symbol": "SSV/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -54189,102 +70606,119 @@ "tier": 4.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "SSV/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SSV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2284650.0" } } ], @@ -54296,10 +70730,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -54311,101 +70745,135 @@ "symbol": "STEEM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "STEEM/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "STEEM/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "STEEM/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "STEEM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "STEEM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "STEEM/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "STEEM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -54416,14 +70884,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -54432,15 +70900,15 @@ "symbol": "STG/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -54448,85 +70916,119 @@ "tier": 3.0, "symbol": "STG/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "STG/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "STG/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "STG/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "STG/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "STG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "STG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2267225.0" } } ], @@ -54617,6 +71119,144 @@ } } ], + "STO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "STO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], "STORJ/USDT:USDT": [ { "tier": 1.0, @@ -54624,14 +71264,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 21.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "21", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -54640,15 +71280,15 @@ "symbol": "STORJ/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -54656,85 +71296,119 @@ "tier": 3.0, "symbol": "STORJ/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "STORJ/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "15650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "STORJ/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "800000", - "maintMarginRatio": "0.125", - "cum": "35650.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "STORJ/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "160650.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "STORJ/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "STORJ/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "STORJ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "910650.0" + "cum": "2267225.0" } } ], @@ -54969,13 +71643,13 @@ "symbol": "STRK/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "10000", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -54985,136 +71659,153 @@ "tier": 2.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "20000", - "notionalFloor": "10000", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "100000", - "notionalFloor": "20000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "STRK/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "STRK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -55124,13 +71815,13 @@ "symbol": "STX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -55140,136 +71831,170 @@ "tier": 2.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "3000000", - "notionalFloor": "600000", - "maintMarginRatio": "0.05", - "cum": "16850.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "4000000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.1", - "cum": "166850.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "4500000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "266850.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "4500000", - "maintMarginRatio": "0.25", - "cum": "829350.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "STX/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 5500000.0, + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "STX/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "STX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "5500000", - "notionalFloor": "5000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2079350.0" + "cum": "2347727.5" } } ], @@ -55573,14 +72298,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -55589,15 +72314,15 @@ "symbol": "SUN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxNotional": 15000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "25", + "notionalCap": "15000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -55605,119 +72330,119 @@ "tier": 3.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 15000.0, + "maxNotional": 30000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "20", + "notionalCap": "30000", + "notionalFloor": "15000", + "maintMarginRatio": "0.025", + "cum": "100.0" } }, { "tier": 4.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 30000.0, + "maxNotional": 80000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "10", + "notionalCap": "80000", + "notionalFloor": "30000", + "maintMarginRatio": "0.05", + "cum": "850.0" } }, { "tier": 5.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 80000.0, + "maxNotional": 150000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "notionalCap": "150000", + "notionalFloor": "80000", + "maintMarginRatio": "0.1", + "cum": "4850.0" } }, { "tier": 6.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 150000.0, + "maxNotional": 300000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "notionalCap": "300000", + "notionalFloor": "150000", + "maintMarginRatio": "0.125", + "cum": "8600.0" } }, { "tier": 7.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 300000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "notionalCap": "4500000", + "notionalFloor": "300000", + "maintMarginRatio": "0.1667", + "cum": "21110.0" } }, { "tier": 8.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "334505.0" + "cum": "395960.0" } }, { "tier": 9.0, "symbol": "SUN/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2270960.0" } } ], @@ -55761,13 +72486,13 @@ "symbol": "SUPER/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -55777,102 +72502,119 @@ "tier": 4.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "1725.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "16725.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "SUPER/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "SUPER/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2284650.0" } } ], @@ -55883,6 +72625,195 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "SUSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" + } + } + ], + "SWARMS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SWARMS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { @@ -55896,16 +72827,16 @@ }, { "tier": 2.0, - "symbol": "SUSHI/USDT:USDT", + "symbol": "SWARMS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "50000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -55913,242 +72844,104 @@ }, { "tier": 3.0, - "symbol": "SUSHI/USDT:USDT", + "symbol": "SWARMS/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "50000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "SWARMS/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", "cum": "1300.0" } }, - { - "tier": 4.0, - "symbol": "SUSHI/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "31300.0" - } - }, { "tier": 5.0, - "symbol": "SUSHI/USDT:USDT", + "symbol": "SWARMS/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "71300.0" + "cum": "2550.0" } }, { "tier": 6.0, - "symbol": "SUSHI/USDT:USDT", + "symbol": "SWARMS/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "SWARMS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "6", + "bracket": "7", "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "321300.0" - } - }, - { - "tier": 7.0, - "symbol": "SUSHI/USDT:USDT", - "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", - "maintMarginRatio": "0.5", - "cum": "1821300.0" - } - } - ], - "SWARMS/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" - } - }, - { - "tier": 4.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "SWARMS/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "SWARMS/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2262825.0" } } ], @@ -56159,14 +72952,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, + "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "1", "initialLeverage": "25", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -56176,14 +72969,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, + "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "25.0" } }, @@ -56192,118 +72985,101 @@ "symbol": "SWELL/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "275.0" } }, { "tier": 4.0, "symbol": "SWELL/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" } }, { "tier": 5.0, "symbol": "SWELL/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" } }, { "tier": 6.0, "symbol": "SWELL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "500000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" } }, { "tier": 7.0, "symbol": "SWELL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 500000.0, + "maxNotional": 1000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "1000000", + "notionalFloor": "500000", + "maintMarginRatio": "0.25", + "cum": "48595.0" } }, { "tier": 8.0, "symbol": "SWELL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "SWELL/USDT:USDT", - "currency": "USDT", "minNotional": 1000000.0, - "maxNotional": 1500000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "1500000", + "notionalCap": "2000000", "notionalFloor": "1000000", "maintMarginRatio": "0.5", - "cum": "375475.0" + "cum": "298595.0" } } ], @@ -56313,15 +73089,15 @@ "symbol": "SXP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -56329,136 +73105,291 @@ "tier": 2.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", - "maintMarginRatio": "0.02", - "cum": "150.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.025", - "cum": "650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", - "maintMarginRatio": "0.05", - "cum": "5650.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55650.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105650.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 6000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "418150.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "SXP/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1918150.0" + "cum": "2267225.0" + } + } + ], + "SXT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1325.0" + } + }, + { + "tier": 5.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7575.0" + } + }, + { + "tier": 6.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13825.0" + } + }, + { + "tier": 7.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34675.0" + } + }, + { + "tier": 8.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409525.0" + } + }, + { + "tier": 9.0, + "symbol": "SXT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284525.0" } } ], @@ -56485,118 +73416,290 @@ "symbol": "SYN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "7", "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "83250.0" + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "SYN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2262825.0" + } + } + ], + "SYRUP/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 500.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "500", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 500.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "500", + "maintMarginRatio": "0.015", + "cum": "2.5" + } + }, + { + "tier": 3.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "27.5" + } + }, + { + "tier": 4.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "77.5" + } + }, + { + "tier": 5.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "702.5" + } + }, + { + "tier": 6.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3827.5" + } + }, + { + "tier": 7.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6952.5" + } + }, + { + "tier": 8.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17377.5" + } + }, + { + "tier": 9.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392227.5" + } + }, + { + "tier": 10.0, + "symbol": "SYRUP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267227.5" } } ], @@ -56623,13 +73726,13 @@ "symbol": "SYS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -56639,7 +73742,7 @@ "tier": 3.0, "symbol": "SYS/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -56647,9 +73750,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -56657,84 +73760,101 @@ "symbol": "SYS/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "SYS/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "SYS/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "SYS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "SYS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "SYS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2267225.0" } } ], @@ -56761,13 +73881,13 @@ "symbol": "T/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 20000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "2", "initialLeverage": "25", - "notionalCap": "20000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.02", "cum": "25.0" @@ -56777,7 +73897,7 @@ "tier": 3.0, "symbol": "T/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, + "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, @@ -56785,9 +73905,9 @@ "bracket": "3", "initialLeverage": "20", "notionalCap": "25000", - "notionalFloor": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "125.0" + "cum": "75.0" } }, { @@ -56795,84 +73915,842 @@ "symbol": "T/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 200000.0, + "maxNotional": 62500.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "4", "initialLeverage": "10", - "notionalCap": "200000", + "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "750.0" + "cum": "700.0" } }, { "tier": 5.0, "symbol": "T/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "200000", + "notionalCap": "125000", + "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "10750.0" + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "T/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "400000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "20750.0" + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "T/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "T/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "T/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "TA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "TA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "TAC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "TAC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "333250.0" + "cum": "2262825.0" + } + } + ], + "TAG/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "TAG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "TAIKO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "TAIKO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "TANSSI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "TANSSI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -57037,15 +74915,15 @@ "symbol": "THE/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -57053,136 +74931,136 @@ "tier": 2.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "40000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.02", - "cum": "250.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.025", - "cum": "1250.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.05", - "cum": "11250.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "3500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111250.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "4000000", - "notionalFloor": "3500000", - "maintMarginRatio": "0.125", - "cum": "198750.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 4500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "698750.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "THE/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "4500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1823750.0" + "cum": "2267225.0" } } ], @@ -57192,15 +75070,15 @@ "symbol": "THETA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", - "notionalCap": "50000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -57208,119 +75086,170 @@ "tier": 2.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "250000", - "notionalFloor": "50000", - "maintMarginRatio": "0.02", - "cum": "250.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.05", - "cum": "7750.0" + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "57750.0" + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" } }, { "tier": 5.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.125", - "cum": "95250.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.1665, - "maxLeverage": 3.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1665", - "cum": "178250.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "387000.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "THETA/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "THETA/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "THETA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "THETA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1137000.0" + "cum": "2347727.5" } } ], @@ -57624,14 +75553,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -57640,101 +75569,118 @@ "symbol": "TLM/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "TLM/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TLM/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TLM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "TLM/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "TLM/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "TLM/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898150.0" + "cum": "2262825.0" } } ], @@ -57745,14 +75691,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -57762,14 +75708,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -57778,15 +75724,15 @@ "symbol": "TNSR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -57794,102 +75740,102 @@ "tier": 4.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2267225.0" } } ], @@ -57901,10 +75847,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.015", @@ -57916,13 +75862,13 @@ "symbol": "TOKEN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -57932,85 +75878,102 @@ "tier": 3.0, "symbol": "TOKEN/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "675.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TOKEN/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "5675.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TOKEN/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "5", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "10675.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "TOKEN/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "TOKEN/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "TOKEN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2262825.0" } } ], @@ -58169,6 +76132,178 @@ } } ], + "TOWNS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "TOWNS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], "TRB/USDT:USDT": [ { "tier": 1.0, @@ -58176,14 +76311,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -58192,15 +76327,15 @@ "symbol": "TRB/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 8.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "50000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -58208,102 +76343,325 @@ "tier": 3.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "275.0" + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "400000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2775.0" + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" } }, { "tier": 5.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "22775.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "47775.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "297775.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "TRB/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "TRB/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "TRB/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "TRB/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "4500000", - "notionalFloor": "4000000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1297775.0" + "cum": "2347727.5" + } + } + ], + "TREE/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "TREE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -58469,14 +76827,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -58486,14 +76844,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -58502,15 +76860,15 @@ "symbol": "TRU/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -58518,102 +76876,102 @@ "tier": 4.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "TRU/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], @@ -58778,13 +77136,13 @@ "symbol": "TRUMP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -58794,17 +77152,17 @@ "tier": 2.0, "symbol": "TRUMP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, + "minNotional": 5000.0, "maxNotional": 20000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "20000", - "notionalFloor": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { @@ -58814,14 +77172,14 @@ "minNotional": 20000.0, "maxNotional": 100000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "100000", "notionalFloor": "20000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "125.0" } }, { @@ -58831,14 +77189,14 @@ "minNotional": 100000.0, "maxNotional": 200000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", + "initialLeverage": "20", "notionalCap": "200000", "notionalFloor": "100000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "625.0" } }, { @@ -58848,14 +77206,14 @@ "minNotional": 200000.0, "maxNotional": 1000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", + "initialLeverage": "10", "notionalCap": "1000000", "notionalFloor": "200000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "5625.0" } }, { @@ -58872,7 +77230,7 @@ "notionalCap": "2000000", "notionalFloor": "1000000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "55625.0" } }, { @@ -58889,7 +77247,7 @@ "notionalCap": "2500000", "notionalFloor": "2000000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "105625.0" } }, { @@ -58897,33 +77255,50 @@ "symbol": "TRUMP/USDT:USDT", "currency": "USDT", "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "maxNotional": 3750000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", + "initialLeverage": "3", + "notionalCap": "3750000", "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "maintMarginRatio": "0.1667", + "cum": "209875.0" } }, { "tier": 9.0, "symbol": "TRUMP/USDT:USDT", "currency": "USDT", + "minNotional": 3750000.0, + "maxNotional": 5000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "5000000", + "notionalFloor": "3750000", + "maintMarginRatio": "0.25", + "cum": "522250.0" + } + }, + { + "tier": 10.0, + "symbol": "TRUMP/USDT:USDT", + "currency": "USDT", "minNotional": 5000000.0, "maxNotional": 6000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", "notionalCap": "6000000", "notionalFloor": "5000000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "1772250.0" } } ], @@ -59106,14 +77481,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -59123,15 +77498,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "8", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -59139,118 +77514,101 @@ "symbol": "TST/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "30000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "TST/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2262825.0" } } ], @@ -59260,13 +77618,13 @@ "symbol": "TURBO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -59276,136 +77634,153 @@ "tier": 2.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 60000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "300000", - "notionalFloor": "60000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "350.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 450000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "450000", - "notionalFloor": "300000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1850.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 450000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "450000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "13100.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "38100.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "53100.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "146850.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "TURBO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "TURBO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "521850.0" + "cum": "2284650.0" } } ], @@ -59416,14 +77791,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "10", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -59432,101 +77807,118 @@ "symbol": "TUT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 8.0, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "8", - "notionalCap": "25000", + "initialLeverage": "20", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", - "cum": "25.0" + "cum": "50.0" } }, { "tier": 3.0, "symbol": "TUT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "25000", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "650.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TUT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "10650.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TUT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "500000", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "23150.0" + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "TUT/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "TUT/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "TUT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2262825.0" } } ], @@ -59553,101 +77945,135 @@ "symbol": "TWT/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "TWT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "TWT/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "TWT/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "TWT/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "TWT/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "TWT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "TWT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -59658,14 +78084,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -59675,14 +78101,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -59691,15 +78117,15 @@ "symbol": "UMA/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -59707,102 +78133,102 @@ "tier": 4.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "UMA/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], @@ -59910,6 +78336,178 @@ } } ], + "UNI/USDC:USDC": [ + { + "tier": 1.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 0.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.006, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "10000", + "notionalFloor": "0", + "maintMarginRatio": "0.006", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.01", + "cum": "40.0" + } + }, + { + "tier": 3.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 40.0, + "info": { + "bracket": "3", + "initialLeverage": "40", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.015", + "cum": "290.0" + } + }, + { + "tier": 4.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 100000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "4", + "initialLeverage": "25", + "notionalCap": "500000", + "notionalFloor": "100000", + "maintMarginRatio": "0.02", + "cum": "790.0" + } + }, + { + "tier": 5.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 500000.0, + "maxNotional": 1000000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "5", + "initialLeverage": "20", + "notionalCap": "1000000", + "notionalFloor": "500000", + "maintMarginRatio": "0.025", + "cum": "3290.0" + } + }, + { + "tier": 6.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 1000000.0, + "maxNotional": 5000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "5000000", + "notionalFloor": "1000000", + "maintMarginRatio": "0.05", + "cum": "28290.0" + } + }, + { + "tier": 7.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 5000000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "10000000", + "notionalFloor": "5000000", + "maintMarginRatio": "0.1", + "cum": "278290.0" + } + }, + { + "tier": 8.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 10000000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "12500000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.125", + "cum": "528290.0" + } + }, + { + "tier": 9.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 12500000.0, + "maxNotional": 25000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "25000000", + "notionalFloor": "12500000", + "maintMarginRatio": "0.25", + "cum": "2090790.0" + } + }, + { + "tier": 10.0, + "symbol": "UNI/USDC:USDC", + "currency": "USDC", + "minNotional": 25000000.0, + "maxNotional": 50000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "50000000", + "notionalFloor": "25000000", + "maintMarginRatio": "0.5", + "cum": "8340790.0" + } + } + ], "UNI/USDT:USDT": [ { "tier": 1.0, @@ -60220,6 +78818,161 @@ } } ], + "USELESS/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "USELESS/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], "USTC/USDT:USDT": [ { "tier": 1.0, @@ -60243,101 +78996,135 @@ "symbol": "USTC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "USTC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "USTC/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "USTC/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "USTC/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "USTC/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "USTC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "USTC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -60347,13 +79134,13 @@ "symbol": "USUAL/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -60363,136 +79150,153 @@ "tier": 2.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "USUAL/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "USUAL/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 8500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "8500000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -60503,14 +79307,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -60519,15 +79323,15 @@ "symbol": "UXLINK/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "16000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -60535,119 +79339,119 @@ "tier": 3.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", - "maintMarginRatio": "0.025", - "cum": "505.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.05", - "cum": "4505.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "44505.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "84505.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "334505.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "UXLINK/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2267225.0" } } ], @@ -60657,13 +79461,13 @@ "symbol": "VANA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -60673,136 +79477,153 @@ "tier": 2.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "VANA/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "VANA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1168150.0" + "cum": "2284650.0" } } ], @@ -60829,101 +79650,135 @@ "symbol": "VANRY/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "VANRY/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "VANRY/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "VANRY/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.125", - "cum": "10675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "VANRY/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "73175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "VANRY/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "VANRY/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "VANRY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "323175.0" + "cum": "2267225.0" } } ], @@ -60934,14 +79789,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 75.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "75", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -60951,14 +79806,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "50", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -60967,15 +79822,15 @@ "symbol": "VELODROME/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "25", - "notionalCap": "30000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -60983,102 +79838,240 @@ "tier": 4.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "VELODROME/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" + } + } + ], + "VELVET/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "50.0" + } + }, + { + "tier": 3.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "20000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" + } + }, + { + "tier": 5.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "VELVET/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" } } ], @@ -61261,14 +80254,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -61278,15 +80271,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -61294,118 +80287,101 @@ "symbol": "VIC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.02, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "30000", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "VIC/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "VIC/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { "tier": 6.0, "symbol": "VIC/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" } }, { "tier": 7.0, "symbol": "VIC/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" } }, { "tier": 8.0, "symbol": "VIC/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "VIC/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2262825.0" } } ], @@ -61520,420 +80496,6 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "1", - "initialLeverage": "25", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.02", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, - "info": { - "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" - } - }, - { - "tier": 4.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" - } - }, - { - "tier": 5.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" - } - }, - { - "tier": 6.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" - } - }, - { - "tier": 7.0, - "symbol": "VINE/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "491900.0" - } - } - ], - "VIRTUAL/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 40000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "40000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 40000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "200000", - "notionalFloor": "40000", - "maintMarginRatio": "0.02", - "cum": "250.0" - } - }, - { - "tier": 4.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.025", - "cum": "1250.0" - } - }, - { - "tier": 5.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.05", - "cum": "11250.0" - } - }, - { - "tier": 6.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.1", - "cum": "111250.0" - } - }, - { - "tier": 7.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "5000000", - "notionalFloor": "4000000", - "maintMarginRatio": "0.125", - "cum": "211250.0" - } - }, - { - "tier": 8.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "10000000", - "notionalFloor": "5000000", - "maintMarginRatio": "0.25", - "cum": "836250.0" - } - }, - { - "tier": 9.0, - "symbol": "VIRTUAL/USDT:USDT", - "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 11000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "11000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.5", - "cum": "3336250.0" - } - } - ], - "VOXEL/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "25000", - "notionalFloor": "20000", - "maintMarginRatio": "0.025", - "cum": "125.0" - } - }, - { - "tier": 4.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "750.0" - } - }, - { - "tier": 5.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "400000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10750.0" - } - }, - { - "tier": 6.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "6", - "initialLeverage": "3", - "notionalCap": "500000", - "notionalFloor": "400000", - "maintMarginRatio": "0.125", - "cum": "20750.0" - } - }, - { - "tier": 7.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "7", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.25", - "cum": "83250.0" - } - }, - { - "tier": 8.0, - "symbol": "VOXEL/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "8", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.5", - "cum": "333250.0" - } - } - ], - "VTHO/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "VTHO/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { @@ -61947,7 +80509,7 @@ }, { "tier": 2.0, - "symbol": "VTHO/USDT:USDT", + "symbol": "VINE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, @@ -61964,16 +80526,16 @@ }, { "tier": 3.0, - "symbol": "VTHO/USDT:USDT", + "symbol": "VINE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "30000", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -61981,104 +80543,603 @@ }, { "tier": 4.0, - "symbol": "VTHO/USDT:USDT", + "symbol": "VINE/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "60000", - "notionalFloor": "30000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "225.0" + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "VINE/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "VIRTUAL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" + } + }, + { + "tier": 5.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, + "info": { + "bracket": "5", + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" + } + }, + { + "tier": 6.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "6", + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" + } + }, + { + "tier": 7.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "7", + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" + } + }, + { + "tier": 8.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "VIRTUAL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "11", + "initialLeverage": "1", + "notionalCap": "12000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2347727.5" + } + } + ], + "VOXEL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "VOXEL/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], + "VTHO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "VTHO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "VTHO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "VTHO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "VTHO/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "VTHO/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "VTHO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "VTHO/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "VTHO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "125475.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "VTHO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "500475.0" + "cum": "2267225.0" } } ], @@ -62089,14 +81150,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -62105,15 +81166,15 @@ "symbol": "VVV/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -62121,85 +81182,119 @@ "tier": 3.0, "symbol": "VVV/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "VVV/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "VVV/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "VVV/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "VVV/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "VVV/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "VVV/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2267225.0" } } ], @@ -62209,13 +81304,13 @@ "symbol": "W/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -62225,136 +81320,153 @@ "tier": 2.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "W/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "W/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2284650.0" } } ], @@ -62365,14 +81477,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -62381,15 +81493,15 @@ "symbol": "WAL/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -62397,85 +81509,136 @@ "tier": 3.0, "symbol": "WAL/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "650.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "WAL/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10650.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "WAL/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23150.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "WAL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "116900.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "WAL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "WAL/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "WAL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "WAL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "491900.0" + "cum": "2284650.0" } } ], @@ -62623,101 +81786,307 @@ "symbol": "WAXP/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "WAXP/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "150000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "WAXP/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.1", - "cum": "8175.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "WAXP/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "300000", - "maintMarginRatio": "0.125", - "cum": "15675.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "WAXP/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "109425.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "WAXP/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "WAXP/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "WAXP/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "484425.0" + "cum": "2267225.0" + } + } + ], + "WCT/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 2000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "2000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 2000.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "2000", + "maintMarginRatio": "0.015", + "cum": "10.0" + } + }, + { + "tier": 3.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "20000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "35.0" + } + }, + { + "tier": 4.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 37500.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "37500", + "notionalFloor": "20000", + "maintMarginRatio": "0.025", + "cum": "135.0" + } + }, + { + "tier": 5.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 37500.0, + "maxNotional": 90000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "90000", + "notionalFloor": "37500", + "maintMarginRatio": "0.05", + "cum": "1072.5" + } + }, + { + "tier": 6.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 90000.0, + "maxNotional": 200000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "200000", + "notionalFloor": "90000", + "maintMarginRatio": "0.1", + "cum": "5572.5" + } + }, + { + "tier": 7.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 200000.0, + "maxNotional": 375000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "375000", + "notionalFloor": "200000", + "maintMarginRatio": "0.125", + "cum": "10572.5" + } + }, + { + "tier": 8.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 375000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "375000", + "maintMarginRatio": "0.1667", + "cum": "26210.0" + } + }, + { + "tier": 9.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "401060.0" + } + }, + { + "tier": 10.0, + "symbol": "WCT/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2276060.0" } } ], @@ -62867,10 +82236,10 @@ "minNotional": 0.0, "maxNotional": 20000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "20000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -62884,10 +82253,10 @@ "minNotional": 20000.0, "maxNotional": 200000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "200000", "notionalFloor": "20000", "maintMarginRatio": "0.015", @@ -62901,10 +82270,10 @@ "minNotional": 200000.0, "maxNotional": 1000000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", + "initialLeverage": "25", "notionalCap": "1000000", "notionalFloor": "200000", "maintMarginRatio": "0.02", @@ -62918,10 +82287,10 @@ "minNotional": 1000000.0, "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", + "initialLeverage": "20", "notionalCap": "2000000", "notionalFloor": "1000000", "maintMarginRatio": "0.025", @@ -62935,10 +82304,10 @@ "minNotional": 2000000.0, "maxNotional": 5000000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "8", + "initialLeverage": "10", "notionalCap": "5000000", "notionalFloor": "2000000", "maintMarginRatio": "0.05", @@ -63021,14 +82390,14 @@ "currency": "USDC", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.006, + "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.006", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -63037,135 +82406,152 @@ "symbol": "WLD/USDC:USDC", "currency": "USDC", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.01, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "25000", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.01", - "cum": "20.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 25000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "150000", - "notionalFloor": "25000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "270.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "300000", - "notionalFloor": "150000", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "1020.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 300000.0, - "maxNotional": 3000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "3000000", - "notionalFloor": "300000", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8520.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 3000000.0, - "maxNotional": 6000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "6000000", - "notionalFloor": "3000000", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "158520.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 6000000.0, - "maxNotional": 7500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "7500000", - "notionalFloor": "6000000", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "308520.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 7500000.0, - "maxNotional": 15000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "15000000", - "notionalFloor": "7500000", - "maintMarginRatio": "0.25", - "cum": "1246020.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "WLD/USDC:USDC", "currency": "USDC", - "minNotional": 15000000.0, - "maxNotional": 30000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "WLD/USDC:USDC", + "currency": "USDC", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "30000000", - "notionalFloor": "15000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "4996020.0" + "cum": "2284650.0" } } ], @@ -63176,14 +82562,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.006, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.006", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -63192,152 +82578,152 @@ "symbol": "WLD/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 60000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "60000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.01", - "cum": "20.0" + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "160000", - "notionalFloor": "60000", - "maintMarginRatio": "0.015", - "cum": "320.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "7", - "notionalCap": "800000", - "notionalFloor": "160000", - "maintMarginRatio": "0.02", - "cum": "1120.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "6", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.025", - "cum": "5120.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 8000000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "8000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.05", - "cum": "45120.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 8000000.0, - "maxNotional": 10000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "10000000", - "notionalFloor": "8000000", - "maintMarginRatio": "0.1", - "cum": "445120.0" + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 10000000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "8", "initialLeverage": "3", - "notionalCap": "12000000", - "notionalFloor": "10000000", - "maintMarginRatio": "0.125", - "cum": "695120.0" + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 12000000.0, - "maxNotional": 14000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "9", "initialLeverage": "2", - "notionalCap": "14000000", - "notionalFloor": "12000000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "2195120.0" + "cum": "409650.0" } }, { "tier": 10.0, "symbol": "WLD/USDT:USDT", "currency": "USDT", - "minNotional": 14000000.0, - "maxNotional": 16000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "10", "initialLeverage": "1", - "notionalCap": "16000000", - "notionalFloor": "14000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "5695120.0" + "cum": "2284650.0" } } ], @@ -63364,84 +82750,135 @@ "symbol": "WOO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "WOO/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "8", - "notionalCap": "100000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "WOO/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "100000", - "maintMarginRatio": "0.1", - "cum": "5675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "WOO/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "11925.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "WOO/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 5000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "WOO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "WOO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "WOO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "1000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "386925.0" + "cum": "2267225.0" } } ], @@ -63452,14 +82889,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -63468,15 +82905,15 @@ "symbol": "XAI/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -63484,102 +82921,308 @@ "tier": 3.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "6", - "notionalCap": "80000", - "notionalFloor": "25000", - "maintMarginRatio": "0.025", - "cum": "150.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 800000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "80000", - "maintMarginRatio": "0.05", - "cum": "2150.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", - "maintMarginRatio": "0.1", - "cum": "42150.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "82150.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "332150.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "XAI/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "XAI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "XAI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1332150.0" + "cum": "2284650.0" + } + } + ], + "XCN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "XCN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" } } ], @@ -63865,15 +83508,15 @@ "symbol": "XMR/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -63881,119 +83524,308 @@ "tier": 2.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 15.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "150000", - "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "100.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.03, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "250000", - "notionalFloor": "150000", - "maintMarginRatio": "0.03", - "cum": "850.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "8", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.05", - "cum": "5850.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55850.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "105850.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.25", - "cum": "480850.0" + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "XMR/USDT:USDT", "currency": "USDT", - "minNotional": 3500000.0, - "maxNotional": 4000000.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "XMR/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "XMR/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "4000000", - "notionalFloor": "3500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1355850.0" + "cum": "2284650.0" + } + } + ], + "XNY/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "XNY/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -64175,13 +84007,13 @@ "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 40000.0, "maintenanceMarginRate": 0.005, - "maxLeverage": 75.0, + "maxLeverage": 100.0, "info": { "bracket": "1", - "initialLeverage": "75", - "notionalCap": "10000", + "initialLeverage": "100", + "notionalCap": "40000", "notionalFloor": "0", "maintMarginRatio": "0.005", "cum": "0.0" @@ -64191,72 +84023,89 @@ "tier": 2.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.0065, - "maxLeverage": 50.0, + "minNotional": 40000.0, + "maxNotional": 80000.0, + "maintenanceMarginRate": 0.006, + "maxLeverage": 75.0, "info": { "bracket": "2", - "initialLeverage": "50", - "notionalCap": "20000", - "notionalFloor": "10000", - "maintMarginRatio": "0.0065", - "cum": "15.0" + "initialLeverage": "75", + "notionalCap": "80000", + "notionalFloor": "40000", + "maintMarginRatio": "0.006", + "cum": "40.0" } }, { "tier": 3.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 160000.0, + "minNotional": 80000.0, + "maxNotional": 150000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 40.0, + "maxLeverage": 50.0, "info": { "bracket": "3", - "initialLeverage": "40", - "notionalCap": "160000", - "notionalFloor": "20000", + "initialLeverage": "50", + "notionalCap": "150000", + "notionalFloor": "80000", "maintMarginRatio": "0.01", - "cum": "85.0" + "cum": "360.0" } }, { "tier": 4.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "minNotional": 150000.0, + "maxNotional": 400000.0, + "maintenanceMarginRate": 0.0125, + "maxLeverage": 40.0, "info": { "bracket": "4", - "initialLeverage": "25", - "notionalCap": "1000000", - "notionalFloor": "160000", - "maintMarginRatio": "0.02", - "cum": "1685.0" + "initialLeverage": "40", + "notionalCap": "400000", + "notionalFloor": "150000", + "maintMarginRatio": "0.0125", + "cum": "735.0" } }, { "tier": 5.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", + "minNotional": 400000.0, + "maxNotional": 1000000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "5", + "initialLeverage": "25", + "notionalCap": "1000000", + "notionalFloor": "400000", + "maintMarginRatio": "0.02", + "cum": "3735.0" + } + }, + { + "tier": 6.0, + "symbol": "XRP/USDT:USDT", + "currency": "USDT", "minNotional": 1000000.0, "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { - "bracket": "5", + "bracket": "6", "initialLeverage": "20", "notionalCap": "2000000", "notionalFloor": "1000000", "maintMarginRatio": "0.025", - "cum": "6685.0" + "cum": "8735.0" } }, { - "tier": 6.0, + "tier": 7.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 2000000.0, @@ -64264,16 +84113,16 @@ "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { - "bracket": "6", + "bracket": "7", "initialLeverage": "10", "notionalCap": "10000000", "notionalFloor": "2000000", "maintMarginRatio": "0.05", - "cum": "56685.0" + "cum": "58735.0" } }, { - "tier": 7.0, + "tier": 8.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 10000000.0, @@ -64281,16 +84130,16 @@ "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "5", "notionalCap": "20000000", "notionalFloor": "10000000", "maintMarginRatio": "0.1", - "cum": "556685.0" + "cum": "558735.0" } }, { - "tier": 8.0, + "tier": 9.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 20000000.0, @@ -64298,16 +84147,16 @@ "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "4", "notionalCap": "25000000", "notionalFloor": "20000000", "maintMarginRatio": "0.125", - "cum": "1056685.0" + "cum": "1058735.0" } }, { - "tier": 9.0, + "tier": 10.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 25000000.0, @@ -64315,16 +84164,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "2", "notionalCap": "50000000", "notionalFloor": "25000000", "maintMarginRatio": "0.25", - "cum": "4181685.0" + "cum": "4183735.0" } }, { - "tier": 10.0, + "tier": 11.0, "symbol": "XRP/USDT:USDT", "currency": "USDT", "minNotional": 50000000.0, @@ -64332,12 +84181,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "11", "initialLeverage": "1", "notionalCap": "100000000", "notionalFloor": "50000000", "maintMarginRatio": "0.5", - "cum": "16681685.0" + "cum": "16683735.0" } } ], @@ -64347,15 +84196,15 @@ "symbol": "XTZ/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -64363,119 +84212,170 @@ "tier": 2.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "150000", - "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "100.0" + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.03, - "maxLeverage": 15.0, + "minNotional": 10000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "250000", - "notionalFloor": "150000", - "maintMarginRatio": "0.03", - "cum": "850.0" + "initialLeverage": "25", + "notionalCap": "50000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "1000000", - "notionalFloor": "250000", - "maintMarginRatio": "0.05", - "cum": "5850.0" + "initialLeverage": "20", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.025", + "cum": "325.0" } }, { "tier": 5.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.1", - "cum": "55850.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 175000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.125", - "cum": "93350.0" + "initialLeverage": "10", + "notionalCap": "250000", + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { "tier": 7.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 250000.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "343350.0" + "initialLeverage": "5", + "notionalCap": "750000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "XTZ/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "8", + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" + } + }, + { + "tier": 9.0, + "symbol": "XTZ/USDT:USDT", + "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "XTZ/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "10", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "472727.5" + } + }, + { + "tier": 11.0, + "symbol": "XTZ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "11", "initialLeverage": "1", - "notionalCap": "3000000", - "notionalFloor": "2500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "968350.0" + "cum": "2347727.5" } } ], @@ -64485,15 +84385,15 @@ "symbol": "XVG/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "50", + "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -64501,85 +84401,136 @@ "tier": 2.0, "symbol": "XVG/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "625.0" + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "XVG/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10625.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "XVG/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23125.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "XVG/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 62500.0, + "maxNotional": 120000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148125.0" + "initialLeverage": "5", + "notionalCap": "120000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "XVG/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 120000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "120000", + "maintMarginRatio": "0.125", + "cum": "6825.0" + } + }, + { + "tier": 7.0, + "symbol": "XVG/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17250.0" + } + }, + { + "tier": 8.0, + "symbol": "XVG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392100.0" + } + }, + { + "tier": 9.0, + "symbol": "XVG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "6", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898125.0" + "cum": "2267100.0" } } ], @@ -64590,14 +84541,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.01", + "maintMarginRatio": "0.015", "cum": "0.0" } }, @@ -64607,14 +84558,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "10", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "25.0" } }, @@ -64623,15 +84574,15 @@ "symbol": "XVS/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "50000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.025", "cum": "75.0" } }, @@ -64639,109 +84590,109 @@ "tier": 4.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "325.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.05, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "5", "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", - "maintMarginRatio": "0.05", - "cum": "2825.0" + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "6", "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1", - "cum": "27825.0" + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, - "maintenanceMarginRate": 0.125, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "7", "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "52825.0" + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" } }, { "tier": 8.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 3000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "8", "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1250000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "209075.0" + "cum": "392225.0" } }, { "tier": 9.0, "symbol": "XVS/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "959075.0" + "cum": "2267225.0" } } ], - "YFI/USDT:USDT": [ + "YALA/USDT:USDT": [ { "tier": 1.0, - "symbol": "YFI/USDT:USDT", + "symbol": "YALA/USDT:USDT", "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, @@ -64758,104 +84709,310 @@ }, { "tier": 2.0, - "symbol": "YFI/USDT:USDT", + "symbol": "YALA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { - "bracket": "2", + "bracket": "3", "initialLeverage": "20", - "notionalCap": "50000", - "notionalFloor": "5000", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "50.0" + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "YALA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "YFI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "YFI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "YFI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "YFI/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 400000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "400000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1300.0" + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "YFI/USDT:USDT", "currency": "USDT", - "minNotional": 400000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "400000", - "maintMarginRatio": "0.1", - "cum": "21300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "YFI/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.125", - "cum": "46300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "YFI/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "296300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "YFI/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "YFI/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "YFI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "YFI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1796300.0" + "cum": "2284650.0" } } ], @@ -64882,101 +85039,135 @@ "symbol": "YGG/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { "tier": 3.0, "symbol": "YGG/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 200000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "200000", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "675.0" + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "YGG/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "200000", - "maintMarginRatio": "0.1", - "cum": "10675.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "YGG/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "23175.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "YGG/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "148175.0" + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" } }, { "tier": 7.0, "symbol": "YGG/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 5000000.0, + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "YGG/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "YGG/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "3000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "898175.0" + "cum": "2267225.0" } } ], @@ -64986,288 +85177,12 @@ "symbol": "ZEC/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "1", - "initialLeverage": "10", - "notionalCap": "50000", - "notionalFloor": "0", - "maintMarginRatio": "0.015", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 8.0, - "info": { - "bracket": "2", - "initialLeverage": "8", - "notionalCap": "150000", - "notionalFloor": "50000", - "maintMarginRatio": "0.025", - "cum": "500.0" - } - }, - { - "tier": 3.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 6.0, - "info": { - "bracket": "3", - "initialLeverage": "6", - "notionalCap": "250000", - "notionalFloor": "150000", - "maintMarginRatio": "0.05", - "cum": "4250.0" - } - }, - { - "tier": 4.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "4", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.1", - "cum": "16750.0" - } - }, - { - "tier": 5.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "5", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", - "maintMarginRatio": "0.125", - "cum": "29250.0" - } - }, - { - "tier": 6.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "6", - "initialLeverage": "2", - "notionalCap": "2000000", - "notionalFloor": "1000000", - "maintMarginRatio": "0.25", - "cum": "154250.0" - } - }, - { - "tier": 7.0, - "symbol": "ZEC/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "7", - "initialLeverage": "1", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.5", - "cum": "654250.0" - } - } - ], - "ZEN/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, - "info": { - "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", - "maintMarginRatio": "0.015", - "cum": "50.0" - } - }, - { - "tier": 3.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, - "info": { - "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", - "maintMarginRatio": "0.02", - "cum": "200.0" - } - }, - { - "tier": 4.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, - "info": { - "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", - "maintMarginRatio": "0.025", - "cum": "950.0" - } - }, - { - "tier": 5.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", - "maintMarginRatio": "0.05", - "cum": "8450.0" - } - }, - { - "tier": 6.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.1", - "cum": "83450.0" - } - }, - { - "tier": 7.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.125", - "cum": "133450.0" - } - }, - { - "tier": 8.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "3000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "445950.0" - } - }, - { - "tier": 9.0, - "symbol": "ZEN/USDT:USDT", - "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3500000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "3500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.5", - "cum": "1195950.0" - } - } - ], - "ZEREBRO/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 25.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "25", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -65276,15 +85191,15 @@ }, { "tier": 2.0, - "symbol": "ZEREBRO/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 20.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -65293,16 +85208,16 @@ }, { "tier": 3.0, - "symbol": "ZEREBRO/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 15.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "15", - "notionalCap": "30000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -65310,266 +85225,128 @@ }, { "tier": 4.0, - "symbol": "ZEREBRO/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 60000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 10.0, - "info": { - "bracket": "4", - "initialLeverage": "10", - "notionalCap": "60000", - "notionalFloor": "30000", - "maintMarginRatio": "0.025", - "cum": "225.0" - } - }, - { - "tier": 5.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 60000.0, - "maxNotional": 300000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 8.0, - "info": { - "bracket": "5", - "initialLeverage": "8", - "notionalCap": "300000", - "notionalFloor": "60000", - "maintMarginRatio": "0.05", - "cum": "1725.0" - } - }, - { - "tier": 6.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "6", - "initialLeverage": "5", - "notionalCap": "600000", - "notionalFloor": "300000", - "maintMarginRatio": "0.1", - "cum": "16725.0" - } - }, - { - "tier": 7.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "7", - "initialLeverage": "4", - "notionalCap": "750000", - "notionalFloor": "600000", - "maintMarginRatio": "0.125", - "cum": "31725.0" - } - }, - { - "tier": 8.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "8", - "initialLeverage": "2", - "notionalCap": "1500000", - "notionalFloor": "750000", - "maintMarginRatio": "0.25", - "cum": "125475.0" - } - }, - { - "tier": 9.0, - "symbol": "ZEREBRO/USDT:USDT", - "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.5, - "maxLeverage": 1.0, - "info": { - "bracket": "9", - "initialLeverage": "1", - "notionalCap": "2000000", - "notionalFloor": "1500000", - "maintMarginRatio": "0.5", - "cum": "500475.0" - } - } - ], - "ZETA/USDT:USDT": [ - { - "tier": 1.0, - "symbol": "ZETA/USDT:USDT", - "currency": "USDT", - "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.01, "maxLeverage": 20.0, - "info": { - "bracket": "1", - "initialLeverage": "20", - "notionalCap": "5000", - "notionalFloor": "0", - "maintMarginRatio": "0.01", - "cum": "0.0" - } - }, - { - "tier": 2.0, - "symbol": "ZETA/USDT:USDT", - "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 16000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, - "info": { - "bracket": "2", - "initialLeverage": "15", - "notionalCap": "16000", - "notionalFloor": "5000", - "maintMarginRatio": "0.015", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "ZETA/USDT:USDT", - "currency": "USDT", - "minNotional": 16000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, - "info": { - "bracket": "3", - "initialLeverage": "10", - "notionalCap": "80000", - "notionalFloor": "16000", - "maintMarginRatio": "0.02", - "cum": "105.0" - } - }, - { - "tier": 4.0, - "symbol": "ZETA/USDT:USDT", - "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 160000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "160000", - "notionalFloor": "80000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "505.0" + "cum": "200.0" } }, { "tier": 5.0, - "symbol": "ZETA/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 160000.0, - "maxNotional": 800000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "800000", - "notionalFloor": "160000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "4505.0" + "cum": "1450.0" } }, { "tier": 6.0, - "symbol": "ZETA/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 800000.0, - "maxNotional": 1600000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1600000", - "notionalFloor": "800000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "44505.0" + "cum": "7700.0" } }, { "tier": 7.0, - "symbol": "ZETA/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2000000", - "notionalFloor": "1600000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "84505.0" + "cum": "13950.0" } }, { "tier": 8.0, - "symbol": "ZETA/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 4000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "4000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "334505.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, - "symbol": "ZETA/USDT:USDT", + "symbol": "ZEC/USDT:USDT", "currency": "USDT", - "minNotional": 4000000.0, - "maxNotional": 8000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZEC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "8000000", - "notionalFloor": "4000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1334505.0" + "cum": "2284650.0" } } ], - "ZIL/USDT:USDT": [ + "ZEN/USDT:USDT": [ { "tier": 1.0, - "symbol": "ZIL/USDT:USDT", + "symbol": "ZEN/USDT:USDT", "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, @@ -65586,16 +85363,171 @@ }, { "tier": 2.0, - "symbol": "ZIL/USDT:USDT", + "symbol": "ZEN/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 50000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ZEN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "ZEREBRO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "50000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -65603,87 +85535,431 @@ }, { "tier": 3.0, - "symbol": "ZIL/USDT:USDT", + "symbol": "ZEREBRO/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 600000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "600000", - "notionalFloor": "50000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", + "cum": "300.0" + } + }, + { + "tier": 4.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", "cum": "1300.0" } }, + { + "tier": 5.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" + } + }, + { + "tier": 6.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "12975.0" + } + }, + { + "tier": 7.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "387825.0" + } + }, + { + "tier": 8.0, + "symbol": "ZEREBRO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2262825.0" + } + } + ], + "ZETA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ZETA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], + "ZIL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, { "tier": 4.0, "symbol": "ZIL/USDT:USDT", "currency": "USDT", - "minNotional": 600000.0, - "maxNotional": 1600000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "1600000", - "notionalFloor": "600000", - "maintMarginRatio": "0.1", - "cum": "31300.0" + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ZIL/USDT:USDT", "currency": "USDT", - "minNotional": 1600000.0, - "maxNotional": 2000000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1600000", - "maintMarginRatio": "0.125", - "cum": "71300.0" + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ZIL/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 6000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "2", - "notionalCap": "6000000", - "notionalFloor": "2000000", - "maintMarginRatio": "0.25", - "cum": "321300.0" + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ZIL/USDT:USDT", "currency": "USDT", - "minNotional": 6000000.0, - "maxNotional": 10000000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZIL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "7", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "6000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1821300.0" + "cum": "2284650.0" } } ], @@ -65693,13 +85969,13 @@ "symbol": "ZK/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -65709,136 +85985,635 @@ "tier": 2.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 20000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", - "notionalCap": "20000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 100000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "100000", - "notionalFloor": "20000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "150.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 200000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "200000", - "notionalFloor": "100000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "650.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 1000000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1000000", - "notionalFloor": "200000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "5650.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 2000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "2000000", - "notionalFloor": "1000000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "55650.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 2000000.0, - "maxNotional": 2500000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "2500000", - "notionalFloor": "2000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "105650.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "5000000", - "notionalFloor": "2500000", - "maintMarginRatio": "0.25", - "cum": "418150.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ZK/USDT:USDT", "currency": "USDT", - "minNotional": 5000000.0, - "maxNotional": 10000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZK/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "ZKJ/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ZKJ/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "9", "initialLeverage": "1", - "notionalCap": "10000000", - "notionalFloor": "5000000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "1668150.0" + "cum": "2267225.0" + } + } + ], + "ZORA/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZORA/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], + "ZRC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "ZRC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" } } ], @@ -65848,13 +86623,13 @@ "symbol": "ZRO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", - "notionalCap": "10000", + "initialLeverage": "75", + "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -65864,136 +86639,153 @@ "tier": 2.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 30000.0, + "minNotional": 5000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 10.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "10", - "notionalCap": "30000", - "notionalFloor": "10000", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", "maintMarginRatio": "0.015", - "cum": "50.0" + "cum": "25.0" } }, { "tier": 3.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 150000.0, + "minNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 7.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "7", - "notionalCap": "150000", - "notionalFloor": "30000", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", "maintMarginRatio": "0.02", - "cum": "200.0" + "cum": "75.0" } }, { "tier": 4.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, - "maxNotional": 300000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "300000", - "notionalFloor": "150000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "950.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 300000.0, - "maxNotional": 1500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "1500000", - "notionalFloor": "300000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "8450.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 3000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "3000000", - "notionalFloor": "1500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "83450.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 3750000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "3750000", - "notionalFloor": "3000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "158450.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", - "minNotional": 3750000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "3750000", - "maintMarginRatio": "0.25", - "cum": "627200.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ZRO/USDT:USDT", "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZRO/USDT:USDT", + "currency": "USDT", "minNotional": 7500000.0, - "maxNotional": 15000000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "15000000", + "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2502200.0" + "cum": "2284650.0" } } ], @@ -66005,10 +86797,10 @@ "minNotional": 0.0, "maxNotional": 5000.0, "maintenanceMarginRate": 0.01, - "maxLeverage": 20.0, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "20", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", "maintMarginRatio": "0.01", @@ -66022,10 +86814,10 @@ "minNotional": 5000.0, "maxNotional": 10000.0, "maintenanceMarginRate": 0.015, - "maxLeverage": 15.0, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "15", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.015", @@ -66037,13 +86829,13 @@ "symbol": "ZRX/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.02, - "maxLeverage": 10.0, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "50000", + "initialLeverage": "25", + "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -66053,102 +86845,119 @@ "tier": 4.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.025, - "maxLeverage": 6.0, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "6", - "notionalCap": "100000", - "notionalFloor": "50000", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "200.0" } }, { "tier": 5.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 500000.0, + "minNotional": 50000.0, + "maxNotional": 125000.0, "maintenanceMarginRate": 0.05, - "maxLeverage": 5.0, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "500000", - "notionalFloor": "100000", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.05", - "cum": "2825.0" + "cum": "1450.0" } }, { "tier": 6.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 1000000.0, + "minNotional": 125000.0, + "maxNotional": 250000.0, "maintenanceMarginRate": 0.1, - "maxLeverage": 4.0, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", - "notionalCap": "1000000", - "notionalFloor": "500000", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", "maintMarginRatio": "0.1", - "cum": "27825.0" + "cum": "7700.0" } }, { "tier": 7.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 1000000.0, - "maxNotional": 1250000.0, + "minNotional": 250000.0, + "maxNotional": 500000.0, "maintenanceMarginRate": 0.125, - "maxLeverage": 3.0, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "1250000", - "notionalFloor": "1000000", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.125", - "cum": "52825.0" + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 1250000.0, - "maxNotional": 2500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "8", - "initialLeverage": "2", - "notionalCap": "2500000", - "notionalFloor": "1250000", - "maintMarginRatio": "0.25", - "cum": "209075.0" + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" } }, { "tier": 9.0, "symbol": "ZRX/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, - "maxNotional": 5000000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZRX/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", - "notionalCap": "5000000", - "notionalFloor": "2500000", + "notionalCap": "12500000", + "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "834075.0" + "cum": "2284650.0" } } ] diff --git a/freqtrade/exchange/bitget.py b/freqtrade/exchange/bitget.py new file mode 100644 index 000000000..b6b347c34 --- /dev/null +++ b/freqtrade/exchange/bitget.py @@ -0,0 +1,128 @@ +import logging +from datetime import timedelta + +import ccxt + +from freqtrade.enums import CandleType +from freqtrade.exceptions import ( + DDosProtection, + OperationalException, + RetryableOrderError, + TemporaryError, +) +from freqtrade.exchange import Exchange +from freqtrade.exchange.common import API_RETRY_COUNT, retrier +from freqtrade.exchange.exchange_types import CcxtOrder, FtHas +from freqtrade.util.datetime_helpers import dt_now, dt_ts + + +logger = logging.getLogger(__name__) + + +class Bitget(Exchange): + """ + Bitget exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + _ft_has: FtHas = { + "stoploss_on_exchange": True, + "stop_price_param": "stopPrice", + "stop_price_prop": "stopPrice", + "stoploss_order_types": {"limit": "limit", "market": "market"}, + "ohlcv_candle_limit": 200, # 200 for historical candles, 1000 for recent ones. + "order_time_in_force": ["GTC", "FOK", "IOC", "PO"], + } + _ft_has_futures: FtHas = { + "mark_ohlcv_timeframe": "4h", + } + + def ohlcv_candle_limit( + self, timeframe: str, candle_type: CandleType, since_ms: int | None = None + ) -> int: + """ + Exchange ohlcv candle limit + bitget has the following behaviour: + * 1000 candles for up-to-date data + * 200 candles for historic data (prior to a certain date) + :param timeframe: Timeframe to check + :param candle_type: Candle-type + :param since_ms: Starting timestamp + :return: Candle limit as integer + """ + timeframe_map = self._api.options["fetchOHLCV"]["maxRecentDaysPerTimeframe"] + days = timeframe_map.get(timeframe, 30) + + if candle_type in (CandleType.FUTURES, CandleType.SPOT, CandleType.MARK) and ( + not since_ms or dt_ts(dt_now() - timedelta(days=days)) < since_ms + ): + return 1000 + + return super().ohlcv_candle_limit(timeframe, candle_type, since_ms) + + def _convert_stop_order(self, pair: str, order_id: str, order: CcxtOrder) -> CcxtOrder: + if order.get("status", "open") == "closed": + # Use orderID as cliendOrderId filter to fetch the regular followup order. + # Could be done with "fetch_order" - but clientOid as filter doesn't seem to work + # https://www.bitget.com/api-doc/spot/trade/Get-Order-Info + + for method in ( + self._api.fetch_canceled_and_closed_orders, + self._api.fetch_open_orders, + ): + orders = method(pair) + orders_f = [order for order in orders if order["clientOrderId"] == order_id] + if orders_f: + order_reg = orders_f[0] + self._log_exchange_response("fetch_stoploss_order1", order_reg) + order_reg["id_stop"] = order_reg["id"] + order_reg["id"] = order_id + order_reg["type"] = "stoploss" + order_reg["status_stop"] = "triggered" + return order_reg + order = self._order_contracts_to_amount(order) + order["type"] = "stoploss" + return order + + def _fetch_stop_order_fallback(self, order_id: str, pair: str) -> CcxtOrder: + params2 = { + "stop": True, + } + for method in ( + self._api.fetch_open_orders, + self._api.fetch_canceled_and_closed_orders, + ): + try: + orders = method(pair, params=params2) + orders_f = [order for order in orders if order["id"] == order_id] + if orders_f: + order = orders_f[0] + self._log_exchange_response("get_stop_order_fallback", order) + return self._convert_stop_order(pair, order_id, order) + except (ccxt.OrderNotFound, ccxt.InvalidOrder): + pass + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e + except (ccxt.OperationFailed, ccxt.ExchangeError) as e: + raise TemporaryError( + f"Could not get order due to {e.__class__.__name__}. Message: {e}" + ) from e + except ccxt.BaseError as e: + raise OperationalException(e) from e + raise RetryableOrderError(f"StoplossOrder not found (pair: {pair} id: {order_id}).") + + @retrier(retries=API_RETRY_COUNT) + def fetch_stoploss_order( + self, order_id: str, pair: str, params: dict | None = None + ) -> CcxtOrder: + if self._config["dry_run"]: + return self.fetch_dry_run_order(order_id) + + return self._fetch_stop_order_fallback(order_id, pair) + + def cancel_stoploss_order(self, order_id: str, pair: str, params: dict | None = None) -> dict: + return self.cancel_order(order_id=order_id, pair=pair, params={"stop": True}) diff --git a/freqtrade/exchange/bitpanda.py b/freqtrade/exchange/bitpanda.py index 05c5af6ac..2f88e2fc8 100644 --- a/freqtrade/exchange/bitpanda.py +++ b/freqtrade/exchange/bitpanda.py @@ -1,7 +1,7 @@ """Bitpanda exchange subclass""" import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from freqtrade.exchange import Exchange @@ -34,5 +34,5 @@ class Bitpanda(Exchange): :param pair: Pair the order is for :param since: datetime object of the order creation time. Assumes object is in UTC. """ - params = {"to": int(datetime.now(timezone.utc).timestamp() * 1000)} + params = {"to": int(datetime.now(UTC).timestamp() * 1000)} return super().get_trades_for_order(order_id, pair, since, params) diff --git a/freqtrade/exchange/bybit.py b/freqtrade/exchange/bybit.py index 1f5c19b2a..93e62d25e 100644 --- a/freqtrade/exchange/bybit.py +++ b/freqtrade/exchange/bybit.py @@ -1,8 +1,5 @@ -"""Bybit exchange subclass""" - import logging from datetime import datetime, timedelta -from typing import Any import ccxt @@ -12,7 +9,7 @@ from freqtrade.exceptions import DDosProtection, ExchangeError, OperationalExcep from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier from freqtrade.exchange.exchange_types import CcxtOrder, FtHas -from freqtrade.util.datetime_helpers import dt_now, dt_ts +from freqtrade.misc import deep_merge_dicts logger = logging.getLogger(__name__) @@ -35,6 +32,7 @@ class Bybit(Exchange): "order_time_in_force": ["GTC", "FOK", "IOC", "PO"], "ws_enabled": True, "trades_has_history": False, # Endpoint doesn't support pagination + "fetch_orders_limit_minutes": 7 * 1440, # 7 days "exchange_has_overrides": { # Bybit spot does not support fetch_order # Unless the account is unified. @@ -49,6 +47,7 @@ class Bybit(Exchange): "funding_fee_candle_limit": 200, "stoploss_on_exchange": True, "stoploss_order_types": {"limit": "limit", "market": "market"}, + "stoploss_blocks_assets": False, # bybit response parsing fails to populate stopLossPrice "stop_price_prop": "stopPrice", "stop_price_type_field": "triggerBy", @@ -63,9 +62,9 @@ class Bybit(Exchange): } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + (TradingMode.SPOT, MarginMode.NONE), + (TradingMode.FUTURES, MarginMode.ISOLATED), # (TradingMode.FUTURES, MarginMode.CROSS), - (TradingMode.FUTURES, MarginMode.ISOLATED) ] @property @@ -75,14 +74,11 @@ class Bybit(Exchange): config = {} if self.trading_mode == TradingMode.SPOT: config.update({"options": {"defaultType": "spot"}}) - config.update(super()._ccxt_config) + elif self.trading_mode == TradingMode.FUTURES: + config.update({"options": {"defaultSettle": self._config["stake_currency"]}}) + config = deep_merge_dicts(config, super()._ccxt_config) return config - def market_is_future(self, market: dict[str, Any]) -> bool: - main = super().market_is_future(market) - # For ByBit, we'll only support USDT markets for now. - return main and market["settle"] == "USDT" - @retrier def additional_exchange_init(self) -> None: """ @@ -139,6 +135,21 @@ class Bybit(Exchange): params["position_idx"] = 0 return params + def _get_stop_params(self, side: BuySell, ordertype: str, stop_price: float) -> dict: + params = super()._get_stop_params( + side=side, + ordertype=ordertype, + stop_price=stop_price, + ) + # work around ccxt bug introduced in https://github.com/ccxt/ccxt/pull/25887 + # Where create_order ain't returning an ID any longer. + params.update( + { + "method": "privatePostV5OrderCreate", + } + ) + return params + def _order_needs_price(self, side: BuySell, ordertype: str) -> bool: # Bybit requires price for market orders - but only for classic accounts, # and only in spot mode @@ -166,18 +177,36 @@ class Bybit(Exchange): PERPETUAL: bybit: https://www.bybithelp.com/HelpCenterKnowledge/bybitHC_Article?language=en_US&id=000001067 - https://www.bybit.com/en/help-center/article/Liquidation-Price-Calculation-under-Isolated-Mode-Unified-Trading-Account#b + USDT: + https://www.bybit.com/en/help-center/article/Liquidation-Price-Calculation-under-Isolated-Mode-Unified-Trading-Account#b + USDC: + https://www.bybit.com/en/help-center/article/Liquidation-Price-Calculation-under-Isolated-Mode-Unified-Trading-Account#c - Long: + Long USDT: + Liquidation Price = ( + Entry Price - [(Initial Margin - Maintenance Margin)/Contract Quantity] + - (Extra Margin Added/Contract Quantity)) + Short USDT: + Liquidation Price = ( + Entry Price + [(Initial Margin - Maintenance Margin)/Contract Quantity] + + (Extra Margin Added/Contract Quantity)) + + Long USDC: Liquidation Price = ( - Entry Price - [(Initial Margin - Maintenance Margin)/Contract Quantity] - - (Extra Margin Added/Contract Quantity)) - Short: + Position Entry Price - [ + (Initial Margin + Extra Margin Added - Maintenance Margin) / Position Size + ] + ) + + Short USDC: Liquidation Price = ( - Entry Price + [(Initial Margin - Maintenance Margin)/Contract Quantity] - + (Extra Margin Added/Contract Quantity)) + Position Entry Price + [ + (Initial Margin + Extra Margin Added - Maintenance Margin) / Position Size + ] + ) Implementation Note: Extra margin is currently not used. + Due to this - the liquidation formula between USDT and USDC is the same. :param pair: Pair to calculate liquidation price for :param open_rate: Entry price of position @@ -234,25 +263,6 @@ class Bybit(Exchange): logger.warning(f"Could not update funding fees for {pair}.") return 0.0 - def fetch_orders( - self, pair: str, since: datetime, params: dict | None = None - ) -> list[CcxtOrder]: - """ - Fetch all orders for a pair "since" - :param pair: Pair for the query - :param since: Starting time for the query - """ - # On bybit, the distance between since and "until" can't exceed 7 days. - # we therefore need to split the query into multiple queries. - orders = [] - - while since < dt_now(): - until = since + timedelta(days=7, minutes=-1) - orders += super().fetch_orders(pair, since, params={"until": dt_ts(until)}) - since = until - - return orders - def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> CcxtOrder: if self.exchange_has("fetchOrder"): # Set acknowledged to True to avoid ccxt exception diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 617fe0d01..b13f7ae3b 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -5,7 +5,6 @@ from collections.abc import Callable from functools import wraps from typing import Any, TypeVar, cast, overload -from freqtrade.constants import ExchangeConfig from freqtrade.exceptions import DDosProtection, RetryableOrderError, TemporaryError from freqtrade.mixins import LoggingMixin @@ -47,10 +46,9 @@ BAD_EXCHANGES = { MAP_EXCHANGE_CHILDCLASS = { "binanceus": "binance", - "binanceje": "binance", "binanceusdm": "binance", "okex": "okx", - "myokx": "okx", + "okxus": "okx", "gateio": "gate", "huboi": "htx", } @@ -65,6 +63,7 @@ SUPPORTED_EXCHANGES = [ "hyperliquid", "kraken", "okx", + "myokx", ] # either the main, or replacement methods (array) is required @@ -104,20 +103,6 @@ EXCHANGE_HAS_OPTIONAL = [ ] -def remove_exchange_credentials(exchange_config: ExchangeConfig, dry_run: bool) -> None: - """ - Removes exchange keys from the configuration and specifies dry-run - Used for backtesting / hyperopt / edge and utils. - Modifies the input dict! - """ - if dry_run: - exchange_config["key"] = "" - exchange_config["apiKey"] = "" - exchange_config["secret"] = "" - exchange_config["password"] = "" - exchange_config["uid"] = "" - - def calculate_backoff(retrycount, max_retries): """ Calculate backoff diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b78d98b99..e3fbde459 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -9,7 +9,7 @@ import logging import signal from collections.abc import Coroutine, Generator from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from math import floor, isnan from threading import Lock from typing import Any, Literal, TypeGuard, TypeVar @@ -21,6 +21,7 @@ from ccxt import TICK_SIZE from dateutil import parser from pandas import DataFrame, concat +from freqtrade.configuration import remove_exchange_credentials from freqtrade.constants import ( DEFAULT_AMOUNT_RESERVE_PERCENT, DEFAULT_TRADES_COLUMNS, @@ -64,7 +65,6 @@ from freqtrade.exceptions import ( ) from freqtrade.exchange.common import ( API_FETCH_ORDER_RETRY_COUNT, - remove_exchange_credentials, retrier, retrier_async, ) @@ -131,11 +131,13 @@ class Exchange: "stop_price_param": "stopLossPrice", # Used for stoploss_on_exchange request "stop_price_prop": "stopLossPrice", # Used for stoploss_on_exchange response parsing "stoploss_order_types": {}, + "stoploss_blocks_assets": True, # By default stoploss orders block assets "order_time_in_force": ["GTC"], "ohlcv_params": {}, "ohlcv_has_history": True, # Some exchanges (Kraken) don't provide history via ohlcv "ohlcv_partial_candle": True, "ohlcv_require_since": False, + "always_require_api_keys": False, # purge API keys for Dry-run. Must default to false. # Check https://github.com/ccxt/ccxt/issues/10767 for removal of ohlcv_volume_currency "ohlcv_volume_currency": "base", # "base" or "quote" "tickers_have_quoteVolume": True, @@ -155,6 +157,7 @@ class Exchange: "ccxt_futures_name": "swap", "needs_trading_fees": False, # use fetch_trading_fees to cache fees "order_props_in_contracts": ["amount", "filled", "remaining"], + "fetch_orders_limit_minutes": None, # "fetch_orders" is not time-limited by default # Override createMarketBuyOrderRequiresPrice where ccxt has it wrong "marketOrderRequiresPrice": False, "exchange_has_overrides": {}, # Dictionary overriding ccxt's "has". @@ -166,7 +169,8 @@ class Exchange: _ft_has_futures: FtHas = {} _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + # Non-defined exchanges only support spot mode. + (TradingMode.SPOT, MarginMode.NONE), ] def __init__( @@ -195,7 +199,26 @@ class Exchange: self.loop = self._init_async_loop() self._config: Config = {} + # Leverage properties + self.trading_mode: TradingMode = TradingMode( + config.get("trading_mode", self._supported_trading_mode_margin_pairs[0][0]) + ) + self.margin_mode: MarginMode = MarginMode( + MarginMode(config.get("margin_mode")) + if config.get("margin_mode") + else self._supported_trading_mode_margin_pairs[0][1] + ) + config["trading_mode"] = self.trading_mode + config["margin_mode"] = self.margin_mode + config["candle_type_def"] = CandleType.get_default(self.trading_mode) self._config.update(config) + self.liquidation_buffer = config.get("liquidation_buffer", 0.05) + + exchange_conf: ExchangeConfig = exchange_config if exchange_config else config["exchange"] + + # Deep merge ft_has with default ft_has options + # Must be called before ft_has is used. + self.build_ft_has(exchange_conf) # Holds last candle refreshed time of each pair self._pairs_last_refresh_time: dict[PairWithTimeframe, int] = {} @@ -225,33 +248,17 @@ class Exchange: if config["dry_run"]: logger.info("Instance is running with dry_run enabled") logger.info(f"Using CCXT {ccxt.__version__}") - exchange_conf: dict[str, Any] = exchange_config if exchange_config else config["exchange"] - remove_exchange_credentials(exchange_conf, config.get("dry_run", False)) - self.log_responses = exchange_conf.get("log_responses", False) - # Leverage properties - self.trading_mode: TradingMode = config.get("trading_mode", TradingMode.SPOT) - self.margin_mode: MarginMode = ( - MarginMode(config.get("margin_mode")) if config.get("margin_mode") else MarginMode.NONE + # Don't remove exchange credentials for dry-run or if always_require_api_keys is set + remove_exchange_credentials( + exchange_conf, + not self._ft_has["always_require_api_keys"] and config.get("dry_run", False), ) - self.liquidation_buffer = config.get("liquidation_buffer", 0.05) - - # Deep merge ft_has with default ft_has options - self._ft_has = deep_merge_dicts(self._ft_has, deepcopy(self._ft_has_default)) - if self.trading_mode == TradingMode.FUTURES: - self._ft_has = deep_merge_dicts(self._ft_has_futures, self._ft_has) - if exchange_conf.get("_ft_has_params"): - self._ft_has = deep_merge_dicts(exchange_conf.get("_ft_has_params"), self._ft_has) - logger.info("Overriding exchange._ft_has with config params, result: %s", self._ft_has) + self.log_responses = exchange_conf.get("log_responses", False) # Assign this directly for easy access self._ohlcv_partial_candle = self._ft_has["ohlcv_partial_candle"] - self._max_trades_limit = self._ft_has["trades_limit"] - - self._trades_pagination = self._ft_has["trades_pagination"] - self._trades_pagination_arg = self._ft_has["trades_pagination_arg"] - # Initialize ccxt objects ccxt_config = self._ccxt_config ccxt_config = deep_merge_dicts(exchange_conf.get("ccxt_config", {}), ccxt_config) @@ -267,11 +274,11 @@ class Exchange: exchange_conf.get("ccxt_async_config", {}), ccxt_async_config ) self._api_async = self._init_ccxt(exchange_conf, False, ccxt_async_config) - self._has_watch_ohlcv = self.exchange_has("watchOHLCV") and self._ft_has["ws_enabled"] + _has_watch_ohlcv = self.exchange_has("watchOHLCV") and self._ft_has["ws_enabled"] if ( self._config["runmode"] in TRADE_MODES and exchange_conf.get("enable_ws", True) - and self._has_watch_ohlcv + and _has_watch_ohlcv ): self._ws_async = self._init_ccxt(exchange_conf, False, ccxt_async_config) self._exchange_ws = ExchangeWS(self._config, self._ws_async) @@ -287,10 +294,6 @@ class Exchange: # Initial markets load self.reload_markets(True, load_leverage_tiers=False) self.validate_config(config) - self._startup_candle_count: int = config.get("startup_candle_count", 0) - self.required_candle_call_count = self.validate_required_startup_candles( - self._startup_candle_count, config.get("timeframe", "") - ) if self.trading_mode != TradingMode.SPOT and load_leverage_tiers: self.fill_leverage_tiers() @@ -329,6 +332,12 @@ class Exchange: asyncio.set_event_loop(loop) return loop + def _set_startup_candle_count(self, config: Config) -> None: + self._startup_candle_count: int = config.get("startup_candle_count", 0) + self.required_candle_call_count = self.validate_required_startup_candles( + self._startup_candle_count, config.get("timeframe", "") + ) + def validate_config(self, config: Config) -> None: # Check if timeframe is available self.validate_timeframes(config.get("timeframe")) @@ -343,6 +352,8 @@ class Exchange: self.validate_orderflow(config["exchange"]) self.validate_freqai(config) + self._set_startup_candle_count(config) + def _init_ccxt( self, exchange_config: dict[str, Any], sync: bool, ccxt_kwargs: dict[str, Any] ) -> ccxt.Exchange: @@ -635,9 +646,9 @@ class Exchange: if self._exchange_ws: self._exchange_ws.reset_connections() - async def _api_reload_markets(self, reload: bool = False) -> dict[str, Any]: + async def _api_reload_markets(self, reload: bool = False) -> None: try: - return await self._api_async.load_markets(reload=reload, params={}) + await self._api_async.load_markets(reload=reload, params={}) except ccxt.DDoSProtection as e: raise DDosProtection(e) from e except (ccxt.OperationFailed, ccxt.ExchangeError) as e: @@ -647,15 +658,15 @@ class Exchange: except ccxt.BaseError as e: raise TemporaryError(e) from e - def _load_async_markets(self, reload: bool = False) -> dict[str, Any]: + def _load_async_markets(self, reload: bool = False) -> None: try: with self._loop_lock: markets = self.loop.run_until_complete(self._api_reload_markets(reload=reload)) if isinstance(markets, Exception): raise markets - return markets - except asyncio.TimeoutError as e: + return None + except TimeoutError as e: logger.warning("Could not load markets. Reason: %s", e) raise TemporaryError from e @@ -677,7 +688,8 @@ class Exchange: # on initial load, we retry 3 times to ensure we get the markets retries: int = 3 if force else 0 # Reload async markets, then assign them to sync api - self._markets = retrier(self._load_async_markets, retries=retries)(reload=True) + retrier(self._load_async_markets, retries=retries)(reload=True) + self._markets = self._api_async.markets self._api.set_markets(self._api_async.markets, self._api_async.currencies) # Assign options array, as it contains some temporary information from the exchange. self._api.options = self._api_async.options @@ -874,10 +886,24 @@ class Exchange: (trading_mode, margin_mode) not in self._supported_trading_mode_margin_pairs ): mm_value = margin_mode and margin_mode.value - raise OperationalException( - f"Freqtrade does not support {mm_value} {trading_mode} on {self.name}" + raise ConfigurationError( + f"Freqtrade does not support '{mm_value}' '{trading_mode}' on {self.name}." ) + def build_ft_has(self, exchange_conf: ExchangeConfig) -> None: + """ + Deep merge ft_has with default ft_has options + and with exchange_conf._ft_has_params if available. + This is called on initialization of the exchange object. + It must be called before ft_has is used. + """ + self._ft_has = deep_merge_dicts(self._ft_has, deepcopy(self._ft_has_default)) + if self.trading_mode == TradingMode.FUTURES: + self._ft_has = deep_merge_dicts(self._ft_has_futures, self._ft_has) + if exchange_conf.get("_ft_has_params"): + self._ft_has = deep_merge_dicts(exchange_conf.get("_ft_has_params"), self._ft_has) + logger.info("Overriding exchange._ft_has with config params, result: %s", self._ft_has) + def get_option(self, param: str, default: Any | None = None) -> Any: """ Get parameter value from _ft_has @@ -961,7 +987,7 @@ class Exchange: return 1 / pow(10, precision) def get_min_pair_stake_amount( - self, pair: str, price: float, stoploss: float, leverage: float | None = 1.0 + self, pair: str, price: float, stoploss: float, leverage: float = 1.0 ) -> float | None: return self._get_stake_amount_limit(pair, price, stoploss, "min", leverage) @@ -980,7 +1006,7 @@ class Exchange: price: float, stoploss: float, limit: Literal["min", "max"], - leverage: float | None = 1.0, + leverage: float = 1.0, ) -> float | None: isMin = limit == "min" @@ -989,6 +1015,8 @@ class Exchange: except KeyError: raise ValueError(f"Can't get market information for symbol {pair}") + stake_limits = [] + limits = market["limits"] if isMin: # reserve some percent defined in config (5% default) + stoploss margin_reserve: float = 1.0 + self._config.get( @@ -998,11 +1026,12 @@ class Exchange: # it should not be more than 50% stoploss_reserve = max(min(stoploss_reserve, 1.5), 1) else: + # is_max margin_reserve = 1.0 stoploss_reserve = 1.0 + if max_from_tiers := self._get_max_notional_from_tiers(pair, leverage=leverage): + stake_limits.append(max_from_tiers) - stake_limits = [] - limits = market["limits"] if limits["cost"][limit] is not None: stake_limits.append( self._contracts_to_amount(pair, limits["cost"][limit]) * stoploss_reserve @@ -1739,7 +1768,7 @@ class Exchange: return orders @retrier(retries=0) - def fetch_orders( + def _fetch_orders( self, pair: str, since: datetime, params: dict | None = None ) -> list[CcxtOrder]: """ @@ -1778,6 +1807,24 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + def fetch_orders( + self, pair: str, since: datetime, params: dict | None = None + ) -> list[CcxtOrder]: + if self._config["dry_run"]: + return [] + if (limit := self._ft_has.get("fetch_orders_limit_minutes")) is not None: + orders = [] + while since < dt_now(): + orders += self._fetch_orders(pair, since) + # Since with 1 minute overlap + since = since + timedelta(minutes=limit - 1) + # Ensure each order is unique based on order id + orders = list({order["id"]: order for order in orders}.values()) + return orders + + else: + return self._fetch_orders(pair, since, params=params) + @retrier def fetch_trading_fees(self) -> dict[str, Any]: """ @@ -2184,7 +2231,7 @@ class Exchange: _params = params if params else {} my_trades = self._api.fetch_my_trades( pair, - int((since.replace(tzinfo=timezone.utc).timestamp() - 5) * 1000), + int((since.replace(tzinfo=UTC).timestamp() - 5) * 1000), params=_params, ) matched_trades = [trade for trade in my_trades if trade["order"] == order_id] @@ -2411,6 +2458,53 @@ class Exchange: data = sorted(data, key=lambda x: x[0]) return pair, timeframe, candle_type, data, self._ohlcv_partial_candle + def _try_build_from_websocket( + self, pair: str, timeframe: str, candle_type: CandleType + ) -> Coroutine[Any, Any, OHLCVResponse] | None: + """ + Try to build a coroutine to get data from websocket. + """ + if self._can_use_websocket(self._exchange_ws, pair, timeframe, candle_type): + candle_ts = dt_ts(timeframe_to_prev_date(timeframe)) + prev_candle_ts = dt_ts(date_minus_candles(timeframe, 1)) + candles = self._exchange_ws.ohlcvs(pair, timeframe) + half_candle = int(candle_ts - (candle_ts - prev_candle_ts) * 0.5) + last_refresh_time = int( + self._exchange_ws.klines_last_refresh.get((pair, timeframe, candle_type), 0) + ) + + if ( + candles + and ( + (len(candles) > 1 and candles[-1][0] >= prev_candle_ts) + # Edgecase on reconnect, where 1 candle is available but it's the current one + or (len(candles) == 1 and candles[-1][0] < candle_ts) + ) + and last_refresh_time >= half_candle + ): + # Usable result, candle contains the previous candle. + # Also, we check if the last refresh time is no more than half the candle ago. + logger.debug(f"reuse watch result for {pair}, {timeframe}, {last_refresh_time}") + + return self._exchange_ws.get_ohlcv(pair, timeframe, candle_type, candle_ts) + logger.info( + f"Couldn't reuse watch for {pair}, {timeframe}, falling back to REST api. " + f"{candle_ts < last_refresh_time}, {candle_ts}, {last_refresh_time}, " + f"{format_ms_time(candle_ts)}, {format_ms_time(last_refresh_time)} " + ) + return None + + def _can_use_websocket( + self, exchange_ws: ExchangeWS | None, pair: str, timeframe: str, candle_type: CandleType + ) -> TypeGuard[ExchangeWS]: + """ + Check if we can use websocket for this pair. + Acts as typeguard for exchangeWs + """ + if exchange_ws and candle_type in (CandleType.SPOT, CandleType.FUTURES): + return True + return False + def _build_coroutine( self, pair: str, @@ -2420,8 +2514,8 @@ class Exchange: cache: bool, ) -> Coroutine[Any, Any, OHLCVResponse]: not_all_data = cache and self.required_candle_call_count > 1 - if cache and candle_type in (CandleType.SPOT, CandleType.FUTURES): - if self._has_watch_ohlcv and self._exchange_ws: + if cache: + if self._can_use_websocket(self._exchange_ws, pair, timeframe, candle_type): # Subscribe to websocket self._exchange_ws.schedule_ohlcv(pair, timeframe, candle_type) @@ -2429,30 +2523,9 @@ class Exchange: candle_limit = self.ohlcv_candle_limit(timeframe, candle_type) min_ts = dt_ts(date_minus_candles(timeframe, candle_limit - 5)) - if self._exchange_ws: - candle_ts = dt_ts(timeframe_to_prev_date(timeframe)) - prev_candle_ts = dt_ts(date_minus_candles(timeframe, 1)) - candles = self._exchange_ws.ohlcvs(pair, timeframe) - half_candle = int(candle_ts - (candle_ts - prev_candle_ts) * 0.5) - last_refresh_time = int( - self._exchange_ws.klines_last_refresh.get((pair, timeframe, candle_type), 0) - ) - - if ( - candles - and candles[-1][0] >= prev_candle_ts - and last_refresh_time >= half_candle - ): - # Usable result, candle contains the previous candle. - # Also, we check if the last refresh time is no more than half the candle ago. - logger.debug(f"reuse watch result for {pair}, {timeframe}, {last_refresh_time}") - - return self._exchange_ws.get_ohlcv(pair, timeframe, candle_type, candle_ts) - logger.info( - f"Couldn't reuse watch for {pair}, {timeframe}, falling back to REST api. " - f"{candle_ts < last_refresh_time}, {candle_ts}, {last_refresh_time}, " - f"{format_ms_time(candle_ts)}, {format_ms_time(last_refresh_time)} " - ) + if ws_resp := self._try_build_from_websocket(pair, timeframe, candle_type): + # We have a usable websocket response + return ws_resp # Check if 1 call can get us updated candles without hole in the data. if min_ts < self._pairs_last_refresh_time.get((pair, timeframe, candle_type), 0): @@ -2534,10 +2607,12 @@ class Exchange: if ticks and cache: idx = -2 if drop_incomplete and len(ticks) > 1 else -1 self._pairs_last_refresh_time[(pair, timeframe, c_type)] = ticks[idx][0] - # keeping parsed dataframe in cache + has_cache = cache and (pair, timeframe, c_type) in self._klines + # in case of existing cache, fill_missing happens after concatenation ohlcv_df = ohlcv_to_dataframe( - ticks, timeframe, pair=pair, fill_missing=True, drop_incomplete=drop_incomplete + ticks, timeframe, pair=pair, fill_missing=not has_cache, drop_incomplete=drop_incomplete ) + # keeping parsed dataframe in cache if cache: if (pair, timeframe, c_type) in self._klines: old = self._klines[(pair, timeframe, c_type)] @@ -2945,7 +3020,7 @@ class Exchange: returns: List of dicts containing trades, the next iteration value (new "since" or trade_id) """ try: - trades_limit = self._max_trades_limit + trades_limit = self._ft_has["trades_limit"] # fetch trades asynchronously if params: logger.debug("Fetching trades for pair %s, params: %s ", pair, params) @@ -2989,7 +3064,7 @@ class Exchange: """ if not trades: return None - if self._trades_pagination == "id": + if self._ft_has["trades_pagination"] == "id": return trades[-1].get("id") else: return trades[-1].get("timestamp") @@ -3007,7 +3082,7 @@ class Exchange: ) -> tuple[str, list[list]]: """ Asynchronously gets trade history using fetch_trades - use this when exchange uses id-based iteration (check `self._trades_pagination`) + use this when exchange uses id-based iteration (check `self._ft_has["trades_pagination"]`) :param pair: Pair to fetch trade data for :param since: Since as integer timestamp in milliseconds :param until: Until as integer timestamp in milliseconds @@ -3033,7 +3108,7 @@ class Exchange: while True: try: t, from_id_next = await self._async_fetch_trades( - pair, params={self._trades_pagination_arg: from_id} + pair, params={self._ft_has["trades_pagination_arg"]: from_id} ) if t: trades.extend(t[x]) @@ -3061,7 +3136,7 @@ class Exchange: ) -> tuple[str, list[list]]: """ Asynchronously gets trade history using fetch_trades, - when the exchange uses time-based iteration (check `self._trades_pagination`) + when the exchange uses time-based iteration (check `self._ft_has["trades_pagination"]`) :param pair: Pair to fetch trade data for :param since: Since as integer timestamp in milliseconds :param until: Until as integer timestamp in milliseconds @@ -3115,9 +3190,9 @@ class Exchange: until = ccxt.Exchange.milliseconds() logger.debug(f"Exchange milliseconds: {until}") - if self._trades_pagination == "time": + if self._ft_has["trades_pagination"] == "time": return await self._async_get_trade_history_time(pair=pair, since=since, until=until) - elif self._trades_pagination == "id": + elif self._ft_has["trades_pagination"] == "id": return await self._async_get_trade_history_id( pair=pair, since=since, until=until, from_id=from_id ) @@ -3285,7 +3360,7 @@ class Exchange: if not filename.parent.is_dir(): filename.parent.mkdir(parents=True) data = { - "updated": datetime.now(timezone.utc), + "updated": datetime.now(UTC), "data": tiers, } file_dump_json(filename, data) @@ -3307,7 +3382,7 @@ class Exchange: updated = tiers.get("updated") if updated: updated_dt = parser.parse(updated) - if updated_dt < datetime.now(timezone.utc) - cache_time: + if updated_dt < datetime.now(UTC) - cache_time: logger.info("Cached leverage tiers are outdated. Will update.") return None return tiers.get("data") @@ -3361,45 +3436,35 @@ class Exchange: pair_tiers = self._leverage_tiers[pair] if stake_amount == 0: - return self._leverage_tiers[pair][0]["maxLeverage"] # Max lev for lowest amount + return pair_tiers[0]["maxLeverage"] # Max lev for lowest amount - for tier_index in range(len(pair_tiers)): - tier = pair_tiers[tier_index] - lev = tier["maxLeverage"] + # Find the appropriate tier based on stake_amount + prior_max_lev = None + for tier in pair_tiers: + # Adjust notional by leverage to do a proper comparison + min_stake = tier["minNotional"] / (prior_max_lev or tier["maxLeverage"]) + max_stake = tier["maxNotional"] / tier["maxLeverage"] + prior_max_lev = tier["maxLeverage"] + if min_stake <= stake_amount <= max_stake: + return tier["maxLeverage"] + if stake_amount < min_stake and stake_amount <= max_stake: + # TODO: Remove this warning eventually + # Code could be simplified by removing the check for min-stake in the above + # condition, making this branch unnecessary. + logger.warning( + f"Fallback to next higher leverage tier for {pair}, stake: {stake_amount}, " + f"min_stake: {min_stake}." + ) + return tier["maxLeverage"] - if tier_index < len(pair_tiers) - 1: - next_tier = pair_tiers[tier_index + 1] - next_floor = next_tier["minNotional"] / next_tier["maxLeverage"] - if next_floor > stake_amount: # Next tier min too high for stake amount - return min((tier["maxNotional"] / stake_amount), lev) - # - # With the two leverage tiers below, - # - a stake amount of 150 would mean a max leverage of (10000 / 150) = 66.66 - # - stakes below 133.33 = max_lev of 75 - # - stakes between 133.33-200 = max_lev of 10000/stake = 50.01-74.99 - # - stakes from 200 + 1000 = max_lev of 50 - # - # { - # "min": 0, # stake = 0.0 - # "max": 10000, # max_stake@75 = 10000/75 = 133.33333333333334 - # "lev": 75, - # }, - # { - # "min": 10000, # stake = 200.0 - # "max": 50000, # max_stake@50 = 50000/50 = 1000.0 - # "lev": 50, - # } - # - - else: # if on the last tier - if stake_amount > tier["maxNotional"]: - # If stake is > than max tradeable amount - raise InvalidOrderException(f"Amount {stake_amount} too high for {pair}") - else: - return tier["maxLeverage"] + # else: # if on the last tier + if stake_amount > max_stake: + # If stake is > than max tradeable amount + raise InvalidOrderException(f"Stake amount {stake_amount} too high for {pair}") raise OperationalException( - "Looped through all tiers without finding a max leverage. Should never be reached" + f"Looped through all tiers without finding a max leverage for {pair}. " + "Should never be reached." ) elif self.trading_mode == TradingMode.MARGIN: # Search markets.limits for max lev @@ -3411,6 +3476,23 @@ class Exchange: else: return 1.0 + def _get_max_notional_from_tiers(self, pair: str, leverage: float) -> float | None: + """ + get max_notional from leverage_tiers + :param pair: The base/quote currency pair being traded + :param leverage: The leverage to be used + :return: The maximum notional value for the given leverage or None if not found + """ + if self.trading_mode != TradingMode.FUTURES: + return None + if pair not in self._leverage_tiers: + return None + pair_tiers = self._leverage_tiers[pair] + for tier in reversed(pair_tiers): + if leverage <= tier["maxLeverage"]: + return tier["maxNotional"] + return None + @retrier def _set_leverage( self, @@ -3524,7 +3606,7 @@ class Exchange: mark_price_type = CandleType.from_string(self._ft_has["mark_ohlcv_price"]) if not close_date: - close_date = datetime.now(timezone.utc) + close_date = datetime.now(UTC) since_ms = dt_ts(timeframe_to_prev_date(timeframe, open_date)) mark_comb: PairWithTimeframe = (pair, timeframe, mark_price_type) diff --git a/freqtrade/exchange/exchange_types.py b/freqtrade/exchange/exchange_types.py index fed6bff70..d31863307 100644 --- a/freqtrade/exchange/exchange_types.py +++ b/freqtrade/exchange/exchange_types.py @@ -15,6 +15,7 @@ class FtHas(TypedDict, total=False): stop_price_type_field: str stop_price_type_value_mapping: dict stoploss_order_types: dict[str, str] + stoploss_blocks_assets: bool # ohlcv ohlcv_params: dict ohlcv_candle_limit: int @@ -23,6 +24,7 @@ class FtHas(TypedDict, total=False): ohlcv_require_since: bool ohlcv_volume_currency: str ohlcv_candle_limit_per_timeframe: dict[str, int] + always_require_api_keys: bool # Tickers tickers_have_quoteVolume: bool tickers_have_percentage: bool @@ -38,6 +40,8 @@ class FtHas(TypedDict, total=False): l2_limit_range: list[int] | None l2_limit_range_required: bool l2_limit_upper: int | None + # fetch_orders + fetch_orders_limit_minutes: int | None # Futures ccxt_futures_name: str # usually swap mark_ohlcv_price: str diff --git a/freqtrade/exchange/exchange_utils.py b/freqtrade/exchange/exchange_utils.py index ad92033fb..ddb57b123 100644 --- a/freqtrade/exchange/exchange_utils.py +++ b/freqtrade/exchange/exchange_utils.py @@ -3,7 +3,7 @@ Exchange support utils """ import inspect -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from math import ceil, floor, isnan from typing import Any @@ -27,7 +27,7 @@ from freqtrade.exchange.common import ( SUPPORTED_EXCHANGES, ) from freqtrade.exchange.exchange_utils_timeframe import timeframe_to_minutes, timeframe_to_prev_date -from freqtrade.ft_types import ValidExchangesType +from freqtrade.ft_types import TradeModeType, ValidExchangesType from freqtrade.util import FtPrecise @@ -110,7 +110,7 @@ def _build_exchange_list_entry( "trade_modes": [{"trading_mode": "spot", "margin_mode": ""}], } if resolved := exchangeClasses.get(mapped_exchange_name): - supported_modes = [{"trading_mode": "spot", "margin_mode": ""}] + [ + supported_modes: list[TradeModeType] = [ {"trading_mode": tm.value, "margin_mode": mm.value} for tm, mm in resolved["class"]._supported_trading_mode_margin_pairs ] @@ -148,7 +148,7 @@ def date_minus_candles(timeframe: str, candle_count: int, date: datetime | None """ if not date: - date = datetime.now(timezone.utc) + date = datetime.now(UTC) tf_min = timeframe_to_minutes(timeframe) new_date = timeframe_to_prev_date(timeframe, date) - timedelta(minutes=tf_min * candle_count) @@ -213,9 +213,9 @@ def amount_to_precision( amount = float( decimal_to_precision( amount, - rounding_mode=TRUNCATE, - precision=precision, - counting_mode=precisionMode, + TRUNCATE, # rounding_mode + precision, # numPrecisionDigits + precisionMode, # counting_mode ) ) @@ -311,11 +311,11 @@ def price_to_precision( return float( decimal_to_precision( price, - rounding_mode=rounding_mode, - precision=int(price_precision) + rounding_mode, # rounding mode + int(price_precision) if precisionMode != TICK_SIZE - else price_precision, - counting_mode=precisionMode, + else price_precision, # numPrecisionDigits + precisionMode, # counting_mode ) ) diff --git a/freqtrade/exchange/exchange_utils_timeframe.py b/freqtrade/exchange/exchange_utils_timeframe.py index 494df58f2..1897edf3b 100644 --- a/freqtrade/exchange/exchange_utils_timeframe.py +++ b/freqtrade/exchange/exchange_utils_timeframe.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime import ccxt from ccxt import ROUND_DOWN, ROUND_UP @@ -59,7 +59,7 @@ def timeframe_to_prev_date(timeframe: str, date: datetime | None = None) -> date :returns: date of previous candle (with utc timezone) """ if not date: - date = datetime.now(timezone.utc) + date = datetime.now(UTC) new_timestamp = ccxt.Exchange.round_timeframe(timeframe, dt_ts(date), ROUND_DOWN) // 1000 return dt_from_ts(new_timestamp) @@ -73,6 +73,6 @@ def timeframe_to_next_date(timeframe: str, date: datetime | None = None) -> date :returns: date of next candle (with utc timezone) """ if not date: - date = datetime.now(timezone.utc) + date = datetime.now(UTC) new_timestamp = ccxt.Exchange.round_timeframe(timeframe, dt_ts(date), ROUND_UP) // 1000 return dt_from_ts(new_timestamp) diff --git a/freqtrade/exchange/gate.py b/freqtrade/exchange/gate.py index 49f0ee74b..2bdb2fbc8 100644 --- a/freqtrade/exchange/gate.py +++ b/freqtrade/exchange/gate.py @@ -46,6 +46,7 @@ class Gate(Exchange): "funding_fee_candle_limit": 90, "stop_price_type_field": "price_type", "l2_limit_upper": 300, + "stoploss_blocks_assets": False, "stop_price_type_value_mapping": { PriceType.LAST: 0, PriceType.MARK: 1, @@ -54,10 +55,10 @@ class Gate(Exchange): } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + (TradingMode.SPOT, MarginMode.NONE), # (TradingMode.MARGIN, MarginMode.CROSS), # (TradingMode.FUTURES, MarginMode.CROSS), - (TradingMode.FUTURES, MarginMode.ISOLATED) + (TradingMode.FUTURES, MarginMode.ISOLATED), ] @retrier @@ -69,7 +70,6 @@ class Gate(Exchange): """ try: if not self._config["dry_run"]: - # TODO: This should work with 4.4.34 and later. self._api.load_unified_status() is_unified = self._api.options.get("unifiedAccount") diff --git a/freqtrade/exchange/hyperliquid.py b/freqtrade/exchange/hyperliquid.py index b6ec23942..a880a60df 100644 --- a/freqtrade/exchange/hyperliquid.py +++ b/freqtrade/exchange/hyperliquid.py @@ -28,10 +28,12 @@ class Hyperliquid(Exchange): "stoploss_on_exchange": False, "exchange_has_overrides": {"fetchTrades": False}, "marketOrderRequiresPrice": True, + "ws_enabled": True, } _ft_has_futures: FtHas = { "stoploss_on_exchange": True, "stoploss_order_types": {"limit": "limit"}, + "stoploss_blocks_assets": False, "stop_price_prop": "stopPrice", "funding_fee_timeframe": "1h", "funding_fee_candle_limit": 500, @@ -39,7 +41,8 @@ class Hyperliquid(Exchange): } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - (TradingMode.FUTURES, MarginMode.ISOLATED) + (TradingMode.SPOT, MarginMode.NONE), + (TradingMode.FUTURES, MarginMode.ISOLATED), ] @property diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index d82725bbb..d113aedd8 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -12,7 +12,7 @@ from freqtrade.enums import MarginMode, TradingMode from freqtrade.exceptions import DDosProtection, OperationalException, TemporaryError from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier -from freqtrade.exchange.exchange_types import CcxtBalances, FtHas, Tickers +from freqtrade.exchange.exchange_types import CcxtBalances, FtHas logger = logging.getLogger(__name__) @@ -35,7 +35,7 @@ class Kraken(Exchange): } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + (TradingMode.SPOT, MarginMode.NONE), # (TradingMode.MARGIN, MarginMode.CROSS), # (TradingMode.FUTURES, MarginMode.CROSS) ] @@ -49,18 +49,6 @@ class Kraken(Exchange): return parent_check and market.get("darkpool", False) is False - def get_tickers( - self, - symbols: list[str] | None = None, - *, - cached: bool = False, - market_type: TradingMode | None = None, - ) -> Tickers: - # Only fetch tickers for current stake currency - # Otherwise the request for kraken becomes too large. - symbols = list(self.get_markets(quote_currencies=[self._config["stake_currency"]])) - return super().get_tickers(symbols=symbols, cached=cached, market_type=market_type) - def consolidate_balances(self, balances: CcxtBalances) -> CcxtBalances: """ Consolidate balances for the same currency. diff --git a/freqtrade/exchange/luno.py b/freqtrade/exchange/luno.py new file mode 100644 index 000000000..bb11c714d --- /dev/null +++ b/freqtrade/exchange/luno.py @@ -0,0 +1,24 @@ +import logging + +from freqtrade.exchange import Exchange +from freqtrade.exchange.exchange_types import FtHas + + +logger = logging.getLogger(__name__) + + +class Luno(Exchange): + """ + Luno exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + _ft_has: FtHas = { + "ohlcv_has_history": False, # Only provides the last 1000 candles + "always_require_api_keys": True, # Requires API keys to fetch candles + "trades_has_history": False, # Only the last 24h are available + } diff --git a/freqtrade/exchange/modetrade.py b/freqtrade/exchange/modetrade.py new file mode 100644 index 000000000..9c6baa9c9 --- /dev/null +++ b/freqtrade/exchange/modetrade.py @@ -0,0 +1,27 @@ +import logging + +# from freqtrade.enums import MarginMode, TradingMode +from freqtrade.exchange import Exchange +from freqtrade.exchange.exchange_types import FtHas + + +logger = logging.getLogger(__name__) + + +class Modetrade(Exchange): + """ + MOdetrade exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + _ft_has: FtHas = { + "always_require_api_keys": True, # Requires API keys to fetch candles + } + + # _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ + # (TradingMode.FUTURES, MarginMode.ISOLATED), + # ] diff --git a/freqtrade/exchange/okx.py b/freqtrade/exchange/okx.py index e9784f12e..1b881366e 100644 --- a/freqtrade/exchange/okx.py +++ b/freqtrade/exchange/okx.py @@ -44,11 +44,12 @@ class Okx(Exchange): PriceType.MARK: "index", PriceType.INDEX: "mark", }, + "stoploss_blocks_assets": False, "ws_enabled": True, } _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ - # TradingMode.SPOT always supported and not required in this list + (TradingMode.SPOT, MarginMode.NONE), # (TradingMode.MARGIN, MarginMode.CROSS), # (TradingMode.FUTURES, MarginMode.CROSS), (TradingMode.FUTURES, MarginMode.ISOLATED), @@ -286,3 +287,14 @@ class Okx(Exchange): orders_open = self._api.fetch_open_orders(pair, since=since_ms) orders.extend(orders_open) return orders + + +class MyOkx(Okx): + """ + MyOkx exchange class. + Minimal adjustment to disable futures trading for the EU subsidiary of Okx + """ + + _supported_trading_mode_margin_pairs: list[tuple[TradingMode, MarginMode]] = [ + (TradingMode.SPOT, MarginMode.NONE), + ] diff --git a/freqtrade/freqai/RL/BaseReinforcementLearningModel.py b/freqtrade/freqai/RL/BaseReinforcementLearningModel.py index 70fd2d3b2..db9fba85a 100644 --- a/freqtrade/freqai/RL/BaseReinforcementLearningModel.py +++ b/freqtrade/freqai/RL/BaseReinforcementLearningModel.py @@ -3,7 +3,7 @@ import importlib import logging from abc import abstractmethod from collections.abc import Callable -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from typing import Any @@ -239,7 +239,7 @@ class BaseReinforcementLearningModel(IFreqaiModel): pair, refresh=False, side="exit", is_short=trade.is_short ) - now = datetime.now(timezone.utc).timestamp() + now = datetime.now(UTC).timestamp() trade_duration = int((now - trade.open_date_utc.timestamp()) / self.base_tf_seconds) current_profit = trade.calc_profit_ratio(current_rate) if trade.is_short: @@ -318,13 +318,13 @@ class BaseReinforcementLearningModel(IFreqaiModel): rename_dict = { "%-raw_open": "open", "%-raw_low": "low", - "%-raw_high": " high", + "%-raw_high": "high", "%-raw_close": "close", } rename_dict_old = { f"%-{pair}raw_open_{tf}": "open", f"%-{pair}raw_low_{tf}": "low", - f"%-{pair}raw_high_{tf}": " high", + f"%-{pair}raw_high_{tf}": "high", f"%-{pair}raw_close_{tf}": "close", } diff --git a/freqtrade/freqai/data_drawer.py b/freqtrade/freqai/data_drawer.py index cf3e828bf..7886bc896 100644 --- a/freqtrade/freqai/data_drawer.py +++ b/freqtrade/freqai/data_drawer.py @@ -5,7 +5,7 @@ import re import shutil import threading import warnings -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from typing import Any, TypedDict @@ -116,7 +116,7 @@ class FreqaiDataDrawer: if metric not in self.metric_tracker[pair]: self.metric_tracker[pair][metric] = {"timestamp": [], "value": []} - timestamp = int(datetime.now(timezone.utc).timestamp()) + timestamp = int(datetime.now(UTC).timestamp()) self.metric_tracker[pair][metric]["value"].append(value) self.metric_tracker[pair][metric]["timestamp"].append(timestamp) @@ -493,7 +493,7 @@ class FreqaiDataDrawer: dk.data["data_path"] = str(dk.data_path) dk.data["model_filename"] = str(dk.model_filename) - dk.data["training_features_list"] = list(dk.data_dictionary["train_features"].columns) + dk.data["training_features_list"] = dk.training_features_list dk.data["label_list"] = dk.label_list with (save_path / f"{dk.model_filename}_{METADATA}.json").open("w") as fp: diff --git a/freqtrade/freqai/data_kitchen.py b/freqtrade/freqai/data_kitchen.py index 6cb52eb29..c39343ab2 100644 --- a/freqtrade/freqai/data_kitchen.py +++ b/freqtrade/freqai/data_kitchen.py @@ -3,7 +3,7 @@ import inspect import logging import random import shutil -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from typing import Any @@ -16,7 +16,7 @@ from pandas import DataFrame from sklearn.model_selection import train_test_split from freqtrade.configuration import TimeRange -from freqtrade.constants import DOCS_LINK, Config +from freqtrade.constants import DOCS_LINK, ORDERFLOW_ADDED_COLUMNS, Config from freqtrade.data.converter import reduce_dataframe_footprint from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_seconds @@ -341,7 +341,7 @@ class FreqaiDataKitchen: full_timerange = TimeRange.parse_timerange(tr) config_timerange = TimeRange.parse_timerange(self.config["timerange"]) if config_timerange.stopts == 0: - config_timerange.stopts = int(datetime.now(tz=timezone.utc).timestamp()) + config_timerange.stopts = int(datetime.now(tz=UTC).timestamp()) timerange_train = copy.deepcopy(full_timerange) timerange_backtest = copy.deepcopy(full_timerange) @@ -525,7 +525,7 @@ class FreqaiDataKitchen: :return: bool = If the model is expired or not. """ - time = datetime.now(tz=timezone.utc).timestamp() + time = datetime.now(tz=UTC).timestamp() elapsed_time = (time - trained_timestamp) / 3600 # hours max_time = self.freqai_config.get("expiration_hours", 0) if max_time > 0: @@ -536,7 +536,7 @@ class FreqaiDataKitchen: def check_if_new_training_required( self, trained_timestamp: int ) -> tuple[bool, TimeRange, TimeRange]: - time = datetime.now(tz=timezone.utc).timestamp() + time = datetime.now(tz=UTC).timestamp() trained_timerange = TimeRange() data_load_timerange = TimeRange() @@ -709,6 +709,11 @@ class FreqaiDataKitchen: skip_columns = [ (f"{s}_{suffix}") for s in ["date", "open", "high", "low", "close", "volume"] ] + + for s in ORDERFLOW_ADDED_COLUMNS: + if s in dataframe.columns and f"{s}_{suffix}" in dataframe.columns: + skip_columns.append(f"{s}_{suffix}") + dataframe = dataframe.drop(columns=skip_columns) return dataframe diff --git a/freqtrade/freqai/freqai_interface.py b/freqtrade/freqai/freqai_interface.py index 7b9de5ce2..b70b7c67e 100644 --- a/freqtrade/freqai/freqai_interface.py +++ b/freqtrade/freqai/freqai_interface.py @@ -3,7 +3,7 @@ import threading import time from abc import ABC, abstractmethod from collections import deque -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from typing import Any, Literal @@ -76,7 +76,7 @@ class IFreqaiModel(ABC): self.dd = FreqaiDataDrawer(Path(self.full_path), self.config) # set current candle to arbitrary historical date - self.current_candle: datetime = datetime.fromtimestamp(637887600, tz=timezone.utc) + self.current_candle: datetime = datetime.fromtimestamp(637887600, tz=UTC) self.dd.current_candle = self.current_candle self.scanning = False self.ft_params = self.freqai_info["feature_parameters"] @@ -514,12 +514,7 @@ class IFreqaiModel(ABC): current coin/bot loop """ - if "training_features_list_raw" in dk.data: - feature_list = dk.data["training_features_list_raw"] - else: - feature_list = dk.data["training_features_list"] - - if dk.training_features_list != feature_list: + if dk.training_features_list != dk.data["training_features_list"]: raise OperationalException( "Trying to access pretrained model with `identifier` " "but found different features furnished by current strategy. " @@ -763,6 +758,8 @@ class IFreqaiModel(ABC): init_model = None else: init_model = self.dd.model_dictionary[pair] + # Set "fresh" tb_logger - the one in model_dictionary has the writer closed. + init_model.tb_logger = self.tb_logger return init_model diff --git a/freqtrade/freqai/prediction_models/ReinforcementLearner.py b/freqtrade/freqai/prediction_models/ReinforcementLearner.py index 87c3450dc..ff6b2d029 100644 --- a/freqtrade/freqai/prediction_models/ReinforcementLearner.py +++ b/freqtrade/freqai/prediction_models/ReinforcementLearner.py @@ -101,7 +101,7 @@ class ReinforcementLearner(BaseReinforcementLearningModel): return model - MyRLEnv: type[BaseEnvironment] + MyRLEnv: type[BaseEnvironment] # type: ignore[assignment, unused-ignore] class MyRLEnv(Base5ActionRLEnv): # type: ignore[no-redef] """ diff --git a/freqtrade/freqai/utils.py b/freqtrade/freqai/utils.py index d2a15046d..d3aeaefe3 100644 --- a/freqtrade/freqai/utils.py +++ b/freqtrade/freqai/utils.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from typing import Any @@ -64,7 +64,7 @@ def get_required_data_timerange(config: Config) -> TimeRange: Used to compute the required data download time range for auto data-download in FreqAI """ - time = datetime.now(tz=timezone.utc).timestamp() + time = datetime.now(tz=UTC).timestamp() timeframes = config["freqai"]["feature_parameters"].get("include_timeframes") diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 63357dcd8..fed9a6533 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -5,7 +5,7 @@ Freqtrade is the main module of this bot. It contains the class Freqtrade() import logging import traceback from copy import deepcopy -from datetime import datetime, time, timedelta, timezone +from datetime import UTC, datetime, time, timedelta from math import isclose from threading import Lock from time import sleep @@ -14,11 +14,10 @@ from typing import Any from schedule import Scheduler from freqtrade import constants -from freqtrade.configuration import validate_config_consistency +from freqtrade.configuration import remove_exchange_credentials, validate_config_consistency from freqtrade.constants import BuySell, Config, EntryExecuteMode, ExchangeConfig, LongShort from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider -from freqtrade.edge import Edge from freqtrade.enums import ( ExitCheckTuple, ExitType, @@ -38,7 +37,6 @@ from freqtrade.exceptions import ( from freqtrade.exchange import ( ROUND_DOWN, ROUND_UP, - remove_exchange_credentials, timeframe_to_minutes, timeframe_to_next_date, timeframe_to_seconds, @@ -95,14 +93,16 @@ class FreqtradeBot(LoggingMixin): # Remove credentials from original exchange config to avoid accidental credential exposure remove_exchange_credentials(config["exchange"], True) + self.exchange = ExchangeResolver.load_exchange( + self.config, exchange_config=exchange_config, load_leverage_tiers=True + ) + self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) # Check config consistency here since strategies can set certain options validate_config_consistency(config) - - self.exchange = ExchangeResolver.load_exchange( - self.config, exchange_config=exchange_config, load_leverage_tiers=True - ) + # Re-validate exchange compatibility + self.exchange.validate_config(self.config) init_db(self.config["db_url"]) @@ -131,13 +131,6 @@ class FreqtradeBot(LoggingMixin): # Attach Wallets to strategy instance self.strategy.wallets = self.wallets - # Initializing Edge only if enabled - self.edge = ( - Edge(self.config, self.exchange, self.strategy) - if self.config.get("edge", {}).get("enabled", False) - else None - ) - # Init ExternalMessageConsumer if enabled self.emc = ( ExternalMessageConsumer(self.config, self.dataprovider) @@ -242,9 +235,8 @@ class FreqtradeBot(LoggingMixin): self.rpc.startup_messages(self.config, self.pairlists, self.protections) # Update older trades with precision and precision mode self.startup_backpopulate_precision() - if not self.edge: - # Adjust stoploss if it was changed - Trade.stoploss_reinitialization(self.strategy.stoploss) + # Adjust stoploss if it was changed + Trade.stoploss_reinitialization(self.strategy.stoploss) # Only update open orders on startup # This will update the database after the initial migration @@ -276,7 +268,7 @@ class FreqtradeBot(LoggingMixin): ) strategy_safe_wrapper(self.strategy.bot_loop_start, supress_error=True)( - current_time=datetime.now(timezone.utc) + current_time=datetime.now(UTC) ) with self._measure_execution: @@ -306,7 +298,7 @@ class FreqtradeBot(LoggingMixin): self._schedule.run_pending() Trade.commit() self.rpc.process_msg_queue(self.dataprovider._msg_queue) - self.last_process = datetime.now(timezone.utc) + self.last_process = datetime.now(UTC) def process_stopped(self) -> None: """ @@ -335,7 +327,7 @@ class FreqtradeBot(LoggingMixin): def _refresh_active_whitelist(self, trades: list[Trade] | None = None) -> list[str]: """ - Refresh active whitelist from pairlist or edge and extend it with + Refresh active whitelist from pairlist and extend it with pairs that have open trades. """ # Refresh whitelist @@ -343,11 +335,6 @@ class FreqtradeBot(LoggingMixin): self.pairlists.refresh_pairlist() _whitelist = self.pairlists.whitelist - # Calculating Edge positioning - if self.edge: - self.edge.calculate(_whitelist) - _whitelist = self.edge.adjust(_whitelist) - if trades: # Extend active-pair whitelist with pairs of open trades # It ensures that candle (OHLCV) data are downloaded for open trades as well @@ -436,7 +423,7 @@ class FreqtradeBot(LoggingMixin): except InvalidOrderException as e: logger.warning(f"Error updating Order {order.order_id} due to {e}.") - if order.order_date_utc - timedelta(days=5) < datetime.now(timezone.utc): + if order.order_date_utc - timedelta(days=5) < datetime.now(UTC): logger.warning( "Order is older than 5 days. Assuming order was fully cancelled." ) @@ -467,7 +454,7 @@ class FreqtradeBot(LoggingMixin): order = trade.select_order("stoploss", False) if order: logger.info( - f"Updating {trade.exit_side}-fee on trade {trade}" + f"Updating {trade.exit_side}-fee on trade {trade} " f"for order {order.order_id}." ) self.update_trade_state( @@ -485,7 +472,7 @@ class FreqtradeBot(LoggingMixin): open_order = trade.select_order(trade.entry_side, True) if order and open_order is None: logger.info( - f"Updating {trade.entry_side}-fee on trade {trade}" + f"Updating {trade.entry_side}-fee on trade {trade} " f"for order {order.order_id}." ) self.update_trade_state(trade, order.order_id, send_msg=False) @@ -701,9 +688,7 @@ class FreqtradeBot(LoggingMixin): else: self.log_once(f"Pair {pair} is currently locked.", logger.info) return False - stake_amount = self.wallets.get_trade_stake_amount( - pair, self.config["max_open_trades"], self.edge - ) + stake_amount = self.wallets.get_trade_stake_amount(pair, self.config["max_open_trades"]) bid_check_dom = self.config.get("entry_pricing", {}).get("check_depth_of_market", {}) if (bid_check_dom.get("enabled", False)) and ( @@ -760,17 +745,19 @@ class FreqtradeBot(LoggingMixin): current_exit_profit = trade.calc_profit_ratio(current_exit_rate) min_entry_stake = self.exchange.get_min_pair_stake_amount( - trade.pair, current_entry_rate, 0.0 + trade.pair, current_entry_rate, 0.0, trade.leverage ) min_exit_stake = self.exchange.get_min_pair_stake_amount( - trade.pair, current_exit_rate, self.strategy.stoploss + trade.pair, current_exit_rate, self.strategy.stoploss, trade.leverage + ) + max_entry_stake = self.exchange.get_max_pair_stake_amount( + trade.pair, current_entry_rate, trade.leverage ) - max_entry_stake = self.exchange.get_max_pair_stake_amount(trade.pair, current_entry_rate) stake_available = self.wallets.get_available_stake_amount() logger.debug(f"Calling adjust_trade_position for pair {trade.pair}") stake_amount, order_tag = self.strategy._adjust_trade_position_internal( trade=trade, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), current_rate=current_entry_rate, current_profit=current_entry_profit, min_stake=min_entry_stake, @@ -931,7 +918,7 @@ class FreqtradeBot(LoggingMixin): amount=amount, rate=enter_limit_requested, time_in_force=time_in_force, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), entry_tag=enter_tag, side=trade_side, ): @@ -1002,7 +989,7 @@ class FreqtradeBot(LoggingMixin): # Fee is applied twice because we make a LIMIT_BUY and LIMIT_SELL fee = self.exchange.get_fee(symbol=pair, taker_or_maker="maker") base_currency = self.exchange.get_pair_base_currency(pair) - open_date = datetime.now(timezone.utc) + open_date = datetime.now(UTC) funding_fees = self.exchange.get_funding_fees( pair=pair, @@ -1040,13 +1027,11 @@ class FreqtradeBot(LoggingMixin): precision_mode_price=self.exchange.precision_mode_price, contract_size=self.exchange.get_contract_size(pair), ) - stoploss = self.strategy.stoploss if not self.edge else self.edge.get_stoploss(pair) + stoploss = self.strategy.stoploss trade.adjust_stop_loss(trade.open_rate, stoploss, initial=True) else: - # This is additional entry, we reset fee_open_currency so timeout checking can work trade.is_open = True - trade.fee_open_currency = None trade.set_funding_fees(funding_fees) trade.orders.append(order_obj) @@ -1123,7 +1108,7 @@ class FreqtradeBot(LoggingMixin): )( pair=pair, trade=trade, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), proposed_rate=enter_limit_requested, entry_tag=entry_tag, side=trade_side, @@ -1141,7 +1126,7 @@ class FreqtradeBot(LoggingMixin): else: leverage = strategy_safe_wrapper(self.strategy.leverage, default_retval=1.0)( pair=pair, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), current_rate=enter_limit_requested, proposed_leverage=1.0, max_leverage=max_leverage, @@ -1168,13 +1153,13 @@ class FreqtradeBot(LoggingMixin): pair, enter_limit_requested, leverage ) - if not self.edge and trade is None: + if trade is None: stake_available = self.wallets.get_available_stake_amount() stake_amount = strategy_safe_wrapper( self.strategy.custom_stake_amount, default_retval=stake_amount )( pair=pair, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), current_rate=enter_limit_requested, proposed_stake=stake_amount, min_stake=min_stake_amount, @@ -1231,6 +1216,7 @@ class FreqtradeBot(LoggingMixin): "leverage": trade.leverage if trade.leverage else None, "direction": "Short" if trade.is_short else "Long", "limit": open_rate, # Deprecated (?) + "order_rate": open_rate, "open_rate": open_rate, "order_type": order_type or "unknown", "stake_amount": stake_amount, @@ -1239,7 +1225,7 @@ class FreqtradeBot(LoggingMixin): "quote_currency": self.exchange.get_pair_quote_currency(trade.pair), "fiat_currency": self.config.get("fiat_display_currency", None), "amount": order.safe_amount_after_fee if fill else (order.safe_amount or trade.amount), - "open_date": trade.open_date_utc or datetime.now(timezone.utc), + "open_date": trade.open_date_utc or datetime.now(UTC), "current_rate": current_rate, "sub_trade": sub_trade, } @@ -1267,6 +1253,7 @@ class FreqtradeBot(LoggingMixin): "leverage": trade.leverage, "direction": "Short" if trade.is_short else "Long", "limit": trade.open_rate, + "order_rate": trade.open_rate, "order_type": order_type, "stake_amount": trade.stake_amount, "open_rate": trade.open_rate, @@ -1297,6 +1284,7 @@ class FreqtradeBot(LoggingMixin): if ( not trade.has_open_orders and not trade.has_open_sl_orders + and trade.fee_open_currency is not None and not self.wallets.check_exit_amount(trade) ): logger.warning( @@ -1377,10 +1365,10 @@ class FreqtradeBot(LoggingMixin): exits: list[ExitCheckTuple] = self.strategy.should_exit( trade, exit_rate, - datetime.now(timezone.utc), + datetime.now(UTC), enter=enter, exit_=exit_, - force_stoploss=self.edge.get_stoploss(trade.pair) if self.edge else 0, + force_stoploss=0, ) for should_exit in exits: if should_exit.exit_flag: @@ -1474,20 +1462,17 @@ class FreqtradeBot(LoggingMixin): self.handle_protections(trade.pair, trade.trade_direction) return True - if not trade.has_open_position or not trade.is_open: + if ( + not trade.has_open_position + or not trade.is_open + or (trade.has_open_orders and self.exchange.get_option("stoploss_blocks_assets", True)) + ): # The trade can be closed already (sell-order fill confirmation came in this iteration) return False # If enter order is fulfilled but there is no stoploss, we add a stoploss on exchange if len(stoploss_orders) == 0: stop_price = trade.stoploss_or_liquidation - if self.edge: - stoploss = self.edge.get_stoploss(pair=trade.pair) - stop_price = ( - trade.open_rate * (1 - stoploss) - if trade.is_short - else trade.open_rate * (1 + stoploss) - ) if self.create_stoploss_order(trade=trade, stop_price=stop_price): # The above will return False if the placement failed and the trade was force-sold. @@ -1498,44 +1483,6 @@ class FreqtradeBot(LoggingMixin): return False - def handle_trailing_stoploss_on_exchange(self, trade: Trade, order: CcxtOrder) -> None: - """ - Check to see if stoploss on exchange should be updated - in case of trailing stoploss on exchange - :param trade: Corresponding Trade - :param order: Current on exchange stoploss order - :return: None - """ - stoploss_norm = self.exchange.price_to_precision( - trade.pair, - trade.stoploss_or_liquidation, - rounding_mode=ROUND_DOWN if trade.is_short else ROUND_UP, - ) - - if self.exchange.stoploss_adjust(stoploss_norm, order, side=trade.exit_side): - # we check if the update is necessary - update_beat = self.strategy.order_types.get("stoploss_on_exchange_interval", 60) - upd_req = datetime.now(timezone.utc) - timedelta(seconds=update_beat) - if trade.stoploss_last_update_utc and upd_req >= trade.stoploss_last_update_utc: - # cancelling the current stoploss on exchange first - logger.info( - f"Cancelling current stoploss on exchange for pair {trade.pair} " - f"(orderid:{order['id']}) in order to add another one ..." - ) - - self.cancel_stoploss_on_exchange(trade) - if not trade.is_open: - logger.warning( - f"Trade {trade} is closed, not creating trailing stoploss order." - ) - return - - # Create new stoploss order - if not self.create_stoploss_order(trade=trade, stop_price=stoploss_norm): - logger.warning( - f"Could not create trailing stoploss order for pair {trade.pair}." - ) - def manage_trade_stoploss_orders(self, trade: Trade, stoploss_orders: list[CcxtOrder]): """ Perform required actions according to existing stoploss orders of trade @@ -1577,6 +1524,44 @@ class FreqtradeBot(LoggingMixin): return + def handle_trailing_stoploss_on_exchange(self, trade: Trade, order: CcxtOrder) -> None: + """ + Check to see if stoploss on exchange should be updated + in case of trailing stoploss on exchange + :param trade: Corresponding Trade + :param order: Current on exchange stoploss order + :return: None + """ + stoploss_norm = self.exchange.price_to_precision( + trade.pair, + trade.stoploss_or_liquidation, + rounding_mode=ROUND_DOWN if trade.is_short else ROUND_UP, + ) + + if self.exchange.stoploss_adjust(stoploss_norm, order, side=trade.exit_side): + # we check if the update is necessary + update_beat = self.strategy.order_types.get("stoploss_on_exchange_interval", 60) + upd_req = datetime.now(UTC) - timedelta(seconds=update_beat) + if trade.stoploss_last_update_utc and upd_req >= trade.stoploss_last_update_utc: + # cancelling the current stoploss on exchange first + logger.info( + f"Cancelling current stoploss on exchange for pair {trade.pair} " + f"(orderid:{order['id']}) in order to add another one ..." + ) + + self.cancel_stoploss_on_exchange(trade) + if not trade.is_open: + logger.warning( + f"Trade {trade} is closed, not creating trailing stoploss order." + ) + return + + # Create new stoploss order + if not self.create_stoploss_order(trade=trade, stop_price=stoploss_norm): + logger.warning( + f"Could not create trailing stoploss order for pair {trade.pair}." + ) + def manage_open_orders(self) -> None: """ Management of open orders on exchange. Unfilled orders might be cancelled if timeout @@ -1602,9 +1587,7 @@ class FreqtradeBot(LoggingMixin): if not_closed: if fully_cancelled or ( open_order - and self.strategy.ft_check_timed_out( - trade, open_order, datetime.now(timezone.utc) - ) + and self.strategy.ft_check_timed_out(trade, open_order, datetime.now(UTC)) ): self.handle_cancel_order( order, open_order, trade, constants.CANCEL_REASON["TIMEOUT"] @@ -1702,7 +1685,7 @@ class FreqtradeBot(LoggingMixin): trade=trade, order=order_obj, pair=trade.pair, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), proposed_rate=proposed_rate, current_order_rate=order_obj.safe_placement_price, entry_tag=trade.enter_tag, @@ -2094,7 +2077,7 @@ class FreqtradeBot(LoggingMixin): )( pair=trade.pair, trade=trade, - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), proposed_rate=proposed_limit_rate, current_profit=current_profit, exit_tag=exit_reason, @@ -2125,7 +2108,7 @@ class FreqtradeBot(LoggingMixin): time_in_force=time_in_force, exit_reason=exit_reason, sell_reason=exit_reason, # sellreason -> compatibility - current_time=datetime.now(timezone.utc), + current_time=datetime.now(UTC), ) ): logger.info(f"User denied exit for {trade.pair}.") @@ -2221,7 +2204,7 @@ class FreqtradeBot(LoggingMixin): "enter_tag": trade.enter_tag, "exit_reason": trade.exit_reason, "open_date": trade.open_date_utc, - "close_date": trade.close_date_utc or datetime.now(timezone.utc), + "close_date": trade.close_date_utc or datetime.now(UTC), "stake_amount": trade.stake_amount, "stake_currency": self.config["stake_currency"], "base_currency": self.exchange.get_pair_base_currency(trade.pair), @@ -2266,6 +2249,7 @@ class FreqtradeBot(LoggingMixin): "direction": "Short" if trade.is_short else "Long", "gain": gain, "limit": profit_rate or 0, + "order_rate": profit_rate or 0, "order_type": order_type, "amount": order.safe_amount_after_fee, "open_rate": trade.open_rate, @@ -2276,7 +2260,7 @@ class FreqtradeBot(LoggingMixin): "enter_tag": trade.enter_tag, "exit_reason": trade.exit_reason, "open_date": trade.open_date, - "close_date": trade.close_date or datetime.now(timezone.utc), + "close_date": trade.close_date or datetime.now(UTC), "stake_currency": self.config["stake_currency"], "base_currency": self.exchange.get_pair_base_currency(trade.pair), "quote_currency": self.exchange.get_pair_quote_currency(trade.pair), @@ -2356,18 +2340,19 @@ class FreqtradeBot(LoggingMixin): def _update_trade_after_fill(self, trade: Trade, order: Order, send_msg: bool) -> Trade: if order.status in constants.NON_OPEN_EXCHANGE_STATES: - strategy_safe_wrapper(self.strategy.order_filled, default_retval=None)( - pair=trade.pair, trade=trade, order=order, current_time=datetime.now(timezone.utc) + strategy_safe_wrapper(self.strategy.order_filled, supress_error=True)( + pair=trade.pair, trade=trade, order=order, current_time=datetime.now(UTC) ) # If a entry order was closed, force update on stoploss on exchange if order.ft_order_side == trade.entry_side: if send_msg: + if trade.nr_of_successful_entries > 1: + # Reset fee_open_currency so fee checking can work + # Only necessary for additional entries + trade.fee_open_currency = None # Don't cancel stoploss in recovery modes immediately trade = self.cancel_stoploss_on_exchange(trade) - if not self.edge: - # TODO: should shorting/leverage be supported by Edge, - # then this will need to be fixed. - trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True) + trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True) if ( order.ft_order_side == trade.entry_side or (trade.amount > 0 and trade.is_open) @@ -2383,14 +2368,14 @@ class FreqtradeBot(LoggingMixin): stake_currency=self.config["stake_currency"], dry_run=self.config["dry_run"], ) - if self.strategy.use_custom_stoploss: - current_rate = self.exchange.get_rate( - trade.pair, side="exit", is_short=trade.is_short, refresh=True - ) - profit = trade.calc_profit_ratio(current_rate) - self.strategy.ft_stoploss_adjust( - current_rate, trade, datetime.now(timezone.utc), profit, 0, after_fill=True - ) + if self.strategy.use_custom_stoploss and trade.is_open: + current_rate = self.exchange.get_rate( + trade.pair, side="exit", is_short=trade.is_short, refresh=True + ) + profit = trade.calc_profit_ratio(current_rate) + self.strategy.ft_stoploss_adjust( + current_rate, trade, datetime.now(UTC), profit, 0, after_fill=True + ) # Updating wallets when order is closed self.wallets.update() return trade @@ -2415,7 +2400,7 @@ class FreqtradeBot(LoggingMixin): def handle_protections(self, pair: str, side: LongShort) -> None: # Lock pair for one candle to prevent immediate re-entries - self.strategy.lock_pair(pair, datetime.now(timezone.utc), reason="Auto lock", side=side) + self.strategy.lock_pair(pair, datetime.now(UTC), reason="Auto lock", side=side) prot_trig = self.protections.stop_per_pair(pair, side=side) if prot_trig: msg: RPCProtectionMsg = { @@ -2470,10 +2455,9 @@ class FreqtradeBot(LoggingMixin): return None def handle_order_fee(self, trade: Trade, order_obj: Order, order: CcxtOrder) -> None: - # Try update amount (binance-fix) + # Try update amount (binance-fix - but also applies to different exchanges) try: - fee_abs = self.get_real_amount(trade, order, order_obj) - if fee_abs is not None: + if (fee_abs := self.get_real_amount(trade, order, order_obj)) is not None: order_obj.ft_fee_base = fee_abs except DependencyException as exception: logger.warning("Could not update trade amount: %s", exception) @@ -2490,9 +2474,8 @@ class FreqtradeBot(LoggingMixin): order_amount = safe_value_fallback(order, "filled", "amount") # Only run for closed orders if ( - trade.fee_updated(order.get("side", "")) - or order["status"] == "open" - or order_obj.ft_fee_base + trade.fee_updated(order.get("side", "")) or order["status"] == "open" + # or order_obj.ft_fee_base ): return None diff --git a/freqtrade/ft_types/__init__.py b/freqtrade/ft_types/__init__.py index 1915a8549..87e2df4dd 100644 --- a/freqtrade/ft_types/__init__.py +++ b/freqtrade/ft_types/__init__.py @@ -7,4 +7,5 @@ from freqtrade.ft_types.backtest_result_type import ( BacktestResultType, get_BacktestResultType_default, ) -from freqtrade.ft_types.valid_exchanges_type import ValidExchangesType +from freqtrade.ft_types.plot_annotation_type import AnnotationType +from freqtrade.ft_types.valid_exchanges_type import TradeModeType, ValidExchangesType diff --git a/freqtrade/ft_types/plot_annotation_type.py b/freqtrade/ft_types/plot_annotation_type.py new file mode 100644 index 000000000..4da4102c4 --- /dev/null +++ b/freqtrade/ft_types/plot_annotation_type.py @@ -0,0 +1,18 @@ +from datetime import datetime +from typing import Literal, Required + +from pydantic import TypeAdapter +from typing_extensions import TypedDict + + +class AnnotationType(TypedDict, total=False): + type: Required[Literal["area"]] + start: str | datetime + end: str | datetime + y_start: float + y_end: float + color: str + label: str + + +AnnotationTypeTA = TypeAdapter(AnnotationType) diff --git a/freqtrade/loggers/__init__.py b/freqtrade/loggers/__init__.py index e39dcdd45..7b8e34878 100644 --- a/freqtrade/loggers/__init__.py +++ b/freqtrade/loggers/__init__.py @@ -58,7 +58,7 @@ def setup_logging_pre() -> None: FT_LOGGING_CONFIG = { "version": 1, # "incremental": True, - # "disable_existing_loggers": False, + "disable_existing_loggers": False, "formatters": { "basic": {"format": "%(message)s"}, "standard": { @@ -123,7 +123,7 @@ def _add_formatter(log_config: dict[str, Any], format_name: str, format_: str): def _create_log_config(config: Config) -> dict[str, Any]: # Get log_config from user config or use default - log_config = config.get("log_config", deepcopy(FT_LOGGING_CONFIG)) + log_config = deepcopy(config.get("log_config", FT_LOGGING_CONFIG)) if logfile := config.get("logfile"): s = logfile.split(":") @@ -223,7 +223,7 @@ def setup_logging(config: Config) -> None: logger.info("Enabling colorized output.") error_console._color_system = error_console._detect_color_system() - logging.info("Logfile configured") + logger.info("Logfile configured") # Set verbosity levels logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG) diff --git a/freqtrade/loggers/ft_rich_handler.py b/freqtrade/loggers/ft_rich_handler.py index dba402f17..3f80753dd 100644 --- a/freqtrade/loggers/ft_rich_handler.py +++ b/freqtrade/loggers/ft_rich_handler.py @@ -21,7 +21,9 @@ class FtRichHandler(Handler): msg = self.format(record) # Format log message log_time = Text( - datetime.fromtimestamp(record.created).strftime("%Y-%m-%d %H:%M:%S,%f")[:-3], + datetime.fromtimestamp(record.created).strftime("%Y-%m-%d %H:%M:%S,%f")[:-3] + if record.created + else "N/A", ) name = Text(record.name, style="violet") log_level = Text(record.levelname, style=f"logging.level.{record.levelname.lower()}") @@ -40,5 +42,8 @@ class FtRichHandler(Handler): except RecursionError: raise + except ImportError: + # Error when shutting down the console... + pass except Exception: self.handleError(record) diff --git a/freqtrade/main.py b/freqtrade/main.py index d4aab3468..fd142452a 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -10,8 +10,8 @@ from typing import Any # check min. python version -if sys.version_info < (3, 10): # pragma: no cover # noqa: UP036 - sys.exit("Freqtrade requires Python version >= 3.10") +if sys.version_info < (3, 11): # pragma: no cover # noqa: UP036 + sys.exit("Freqtrade requires Python version >= 3.11") from freqtrade import __version__ from freqtrade.commands import Arguments diff --git a/freqtrade/mixins/logging_mixin.py b/freqtrade/mixins/logging_mixin.py index 58399e738..91ad2c25e 100644 --- a/freqtrade/mixins/logging_mixin.py +++ b/freqtrade/mixins/logging_mixin.py @@ -20,12 +20,13 @@ class LoggingMixin: self.refresh_period = refresh_period self._log_cache: TTLCache = TTLCache(maxsize=1024, ttl=self.refresh_period) - def log_once(self, message: str, logmethod: Callable) -> None: + def log_once(self, message: str, logmethod: Callable, force_show: bool = False) -> None: """ Logs message - not more often than "refresh_period" to avoid log spamming Logs the log-message as debug as well to simplify debugging. :param message: String containing the message to be sent to the function. :param logmethod: Function that'll be called. Most likely `logger.info`. + :param force_show: If True, sends the message regardless of show_output value. :return: None. """ @@ -35,6 +36,7 @@ class LoggingMixin: # Log as debug first self.logger.debug(message) - # Call hidden function. - if self.show_output: + + # Call hidden function if show_output is True or force_show is True + if self.show_output or force_show: _log_once(message) diff --git a/freqtrade/optimize/analysis/lookahead.py b/freqtrade/optimize/analysis/lookahead.py index 70cb6913d..14949c316 100755 --- a/freqtrade/optimize/analysis/lookahead.py +++ b/freqtrade/optimize/analysis/lookahead.py @@ -70,34 +70,29 @@ class LookaheadAnalysis(BaseAnalysis): cut_df: DataFrame = cut_vars.indicators[current_pair] full_df: DataFrame = full_vars.indicators[current_pair] - # cut longer dataframe to length of the shorter - full_df_cut = full_df[(full_df.date == cut_vars.compared_dt)].reset_index(drop=True) - cut_df_cut = cut_df[(cut_df.date == cut_vars.compared_dt)].reset_index(drop=True) + # trim full_df to the same index and length as cut_df + cut_full_df = full_df.loc[cut_df.index] + compare_df = cut_full_df.compare(cut_df) - # check if dataframes are not empty - if full_df_cut.shape[0] != 0 and cut_df_cut.shape[0] != 0: - # compare dataframes - compare_df = full_df_cut.compare(cut_df_cut) + if compare_df.shape[0] > 0: + for col_name in compare_df: + col_idx = compare_df.columns.get_loc(col_name) + compare_df_row = compare_df.iloc[0] + # compare_df now comprises tuples with [1] having either 'self' or 'other' + if "other" in col_name[1]: + continue + self_value = compare_df_row.iloc[col_idx] + other_value = compare_df_row.iloc[col_idx + 1] - if compare_df.shape[0] > 0: - for col_name, values in compare_df.items(): - col_idx = compare_df.columns.get_loc(col_name) - compare_df_row = compare_df.iloc[0] - # compare_df now comprises tuples with [1] having either 'self' or 'other' - if "other" in col_name[1]: - continue - self_value = compare_df_row.iloc[col_idx] - other_value = compare_df_row.iloc[col_idx + 1] - - # output differences - if self_value != other_value: - if not self.current_analysis.false_indicators.__contains__(col_name[0]): - self.current_analysis.false_indicators.append(col_name[0]) - logger.info( - f"=> found look ahead bias in indicator " - f"{col_name[0]}. " - f"{str(self_value)} != {str(other_value)}" - ) + # output differences + if self_value != other_value: + if not self.current_analysis.false_indicators.__contains__(col_name[0]): + self.current_analysis.false_indicators.append(col_name[0]) + logger.info( + f"=> found look ahead bias in column " + f"{col_name[0]}. " + f"{str(self_value)} != {str(other_value)}" + ) def prepare_data(self, varholder: VarHolder, pairs_to_load: list[DataFrame]): if "freqai" in self.local_config and "identifier" in self.local_config["freqai"]: @@ -125,14 +120,20 @@ class LookaheadAnalysis(BaseAnalysis): backtesting = Backtesting(prepare_data_config, self.exchange) self.exchange = backtesting.exchange + self.local_config["candle_type_def"] = prepare_data_config["candle_type_def"] self._fee = backtesting.fee backtesting._set_strategy(backtesting.strategylist[0]) varholder.data, varholder.timerange = backtesting.load_bt_data() - backtesting.load_bt_data_detail() varholder.timeframe = backtesting.timeframe - varholder.indicators = backtesting.strategy.advise_all_indicators(varholder.data) + temp_indicators = backtesting.strategy.advise_all_indicators(varholder.data) + filled_indicators = dict() + for pair, dataframe in temp_indicators.items(): + filled_indicators[pair] = backtesting.strategy.ft_advise_signals( + dataframe, {"pair": pair} + ) + varholder.indicators = filled_indicators varholder.result = self.get_result(backtesting, varholder.indicators) def fill_entry_and_exit_varHolders(self, result_row): @@ -236,7 +237,7 @@ class LookaheadAnalysis(BaseAnalysis): return None if "force_exit" in result_row["exit_reason"]: logger.info( - "found force-exit in pair: {result_row['pair']}, " + f"found force-exit in pair: {result_row['pair']}, " f"timerange:{result_row['open_date']}-{result_row['close_date']}, " f"idx: {idx}, skipping this one to avoid a false-positive." ) diff --git a/freqtrade/optimize/analysis/lookahead_helpers.py b/freqtrade/optimize/analysis/lookahead_helpers.py index 631a9549f..8c5ce6cb4 100644 --- a/freqtrade/optimize/analysis/lookahead_helpers.py +++ b/freqtrade/optimize/analysis/lookahead_helpers.py @@ -153,14 +153,8 @@ class LookaheadAnalysisSubFunctions: raise OperationalException( "Targeted trade amount can't be smaller than minimum trade amount." ) - if len(config["pairs"]) > config.get("max_open_trades", 0): - logger.info( - "Max_open_trades were less than amount of pairs " - "or defined in the strategy. " - "Set max_open_trades to amount of pairs " - "just to avoid false positives." - ) - config["max_open_trades"] = len(config["pairs"]) + config["max_open_trades"] = -1 + logger.info("Forced max_open_trades to -1 (same amount as there are pairs)") min_dry_run_wallet = 1000000000 if get_dry_run_wallet(config) < min_dry_run_wallet: diff --git a/freqtrade/optimize/analysis/recursive.py b/freqtrade/optimize/analysis/recursive.py index 50d1b75d6..df10fd3c7 100644 --- a/freqtrade/optimize/analysis/recursive.py +++ b/freqtrade/optimize/analysis/recursive.py @@ -15,7 +15,6 @@ from freqtrade.loggers.set_log_levels import ( ) from freqtrade.optimize.backtesting import Backtesting from freqtrade.optimize.base_analysis import BaseAnalysis, VarHolder -from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) @@ -33,13 +32,6 @@ class RecursiveAnalysis(BaseAnalysis): super().__init__(config, strategy_obj) - strat = StrategyResolver.load_strategy(config) - self._strat_scc = strat.startup_candle_count - - if self._strat_scc not in self._startup_candle: - self._startup_candle.append(self._strat_scc) - self._startup_candle.sort() - self.partial_varHolder_array: list[VarHolder] = [] self.partial_varHolder_lookahead_array: list[VarHolder] = [] @@ -146,10 +138,17 @@ class RecursiveAnalysis(BaseAnalysis): backtesting = Backtesting(prepare_data_config, self.exchange) self.exchange = backtesting.exchange + self.local_config["candle_type_def"] = prepare_data_config["candle_type_def"] backtesting._set_strategy(backtesting.strategylist[0]) + strat = backtesting.strategy + self._strat_scc = strat.startup_candle_count + + if self._strat_scc not in self._startup_candle: + self._startup_candle.append(self._strat_scc) + self._startup_candle.sort() + varholder.data, varholder.timerange = backtesting.load_bt_data() - backtesting.load_bt_data_detail() varholder.timeframe = backtesting.timeframe varholder.indicators = backtesting.strategy.advise_all_indicators(varholder.data) diff --git a/freqtrade/optimize/analysis/recursive_helpers.py b/freqtrade/optimize/analysis/recursive_helpers.py index 1d2ccdd0b..4a1deb5bf 100644 --- a/freqtrade/optimize/analysis/recursive_helpers.py +++ b/freqtrade/optimize/analysis/recursive_helpers.py @@ -17,7 +17,7 @@ class RecursiveAnalysisSubFunctions: @staticmethod def text_table_recursive_analysis_instances(recursive_instances: list[RecursiveAnalysis]): startups = recursive_instances[0]._startup_candle - strat_scc = recursive_instances[0]._strat_scc + strat_scc = getattr(recursive_instances[0], "_strat_scc", 0) or 0 headers = ["Indicators"] for candle in startups: if candle == strat_scc: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 9326c0840..9f8759f95 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -9,14 +9,18 @@ from collections import defaultdict from copy import deepcopy from datetime import datetime, timedelta -from numpy import nan -from pandas import DataFrame +from numpy import isnan, nan +from pandas import DataFrame, Series from freqtrade import constants from freqtrade.configuration import TimeRange, validate_config_consistency from freqtrade.constants import DATETIME_PRINT_FORMAT, Config, IntOrInf, LongShort from freqtrade.data import history -from freqtrade.data.btanalysis import find_existing_backtest_stats, trade_list_to_dataframe +from freqtrade.data.btanalysis import ( + find_existing_backtest_stats, + get_tick_size_over_time, + trade_list_to_dataframe, +) from freqtrade.data.converter import trim_dataframe, trim_dataframes from freqtrade.data.dataprovider import DataProvider from freqtrade.data.metrics import combined_dataframes_with_rel_mean @@ -35,7 +39,7 @@ from freqtrade.exchange import ( price_to_precision, timeframe_to_seconds, ) -from freqtrade.exchange.exchange import Exchange +from freqtrade.exchange.exchange import TICK_SIZE, Exchange from freqtrade.ft_types import ( BacktestContentType, BacktestContentTypeIcomplete, @@ -121,9 +125,10 @@ class Backtesting: self.order_id_counter: int = 0 config["dry_run"] = True + self.price_pair_prec: dict[str, Series] = {} self.run_ids: dict[str, str] = {} self.strategylist: list[IStrategy] = [] - self.all_results: dict[str, BacktestContentType] = {} + self.all_bt_content: dict[str, BacktestContentType] = {} self.analysis_results: dict[str, dict[str, DataFrame]] = { "signals": {}, "rejected": {}, @@ -315,9 +320,15 @@ class Backtesting: ) self.progress.set_new_value(1) + self._load_bt_data_detail() + self.price_pair_prec = {} + for pair in self.pairlists.whitelist: + if pair in data: + # Load price precision logic + self.price_pair_prec[pair] = get_tick_size_over_time(data[pair]) return data, self.timerange - def load_bt_data_detail(self) -> None: + def _load_bt_data_detail(self) -> None: """ Loads backtest detail data (smaller timeframe) if necessary. """ @@ -384,6 +395,22 @@ class Backtesting: else: self.futures_data = {} + def get_pair_precision(self, pair: str, current_time: datetime) -> tuple[float | None, int]: + """ + Get pair precision at that moment in time + :param pair: Pair to get precision for + :param current_time: Time to get precision for + :return: tuple of price precision, precision_mode_price for the pair at that given time. + """ + precision_series = self.price_pair_prec.get(pair) + if precision_series is not None: + precision = precision_series.asof(current_time) + + if not isnan(precision): + # Force tick size if we define the precision + return precision, TICK_SIZE + return self.exchange.get_precision_price(pair), self.precision_mode_price + def disable_database_use(self): disable_database_use(self.timeframe) @@ -474,7 +501,12 @@ class Backtesting: return data def _get_close_rate( - self, row: tuple, trade: LocalTrade, exit_: ExitCheckTuple, trade_dur: int + self, + row: tuple, + trade: LocalTrade, + current_time: datetime, + exit_: ExitCheckTuple, + trade_dur: int, ) -> float: """ Get close rate for backtesting result @@ -487,7 +519,7 @@ class Backtesting: ): return self._get_close_rate_for_stoploss(row, trade, exit_, trade_dur) elif exit_.exit_type == (ExitType.ROI): - return self._get_close_rate_for_roi(row, trade, exit_, trade_dur) + return self._get_close_rate_for_roi(row, trade, current_time, exit_, trade_dur) else: return row[OPEN_IDX] @@ -546,12 +578,21 @@ class Backtesting: return stoploss_value def _get_close_rate_for_roi( - self, row: tuple, trade: LocalTrade, exit_: ExitCheckTuple, trade_dur: int + self, + row: tuple, + trade: LocalTrade, + current_time: datetime, + exit_: ExitCheckTuple, + trade_dur: int, ) -> float: is_short = trade.is_short or False leverage = trade.leverage or 1.0 side_1 = -1 if is_short else 1 - roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) + roi_entry, roi = self.strategy.min_roi_reached_entry( + trade, # type: ignore[arg-type] + trade_dur, + current_time, + ) if roi is not None and roi_entry is not None: if roi == -1 and roi_entry % self.timeframe_min == 0: # When force_exiting with ROI=-1, the roi time will always be equal to trade_dur. @@ -702,7 +743,7 @@ class Backtesting: if order and self._get_order_filled(order.ft_price, row): order.close_bt_order(current_date, trade) self._run_funding_fees(trade, current_date, force=True) - strategy_safe_wrapper(self.strategy.order_filled, default_retval=None)( + strategy_safe_wrapper(self.strategy.order_filled, supress_error=True)( pair=trade.pair, trade=trade, # type: ignore[arg-type] order=order, @@ -758,7 +799,7 @@ class Backtesting: amount_ = amount if amount is not None else trade.amount trade_dur = int((trade.close_date_utc - trade.open_date_utc).total_seconds() // 60) try: - close_rate = self._get_close_rate(row, trade, exit_, trade_dur) + close_rate = self._get_close_rate(row, trade, current_time, exit_, trade_dur) except ValueError: return None # call the custom exit price,with default value as previous close_rate @@ -792,7 +833,7 @@ class Backtesting: ) if rate is not None and rate != close_rate: close_rate = price_to_precision( - rate, trade.price_precision, self.precision_mode_price + rate, trade.price_precision, trade.precision_mode_price ) # We can't place orders lower than current low. # freqtrade does not support this in live, and the order would fill immediately @@ -925,6 +966,7 @@ class Backtesting: trade: LocalTrade | None, order_type: str, price_precision: float | None, + precision_mode_price: int, ) -> tuple[float, float, float, float]: if order_type == "limit": new_rate = strategy_safe_wrapper( @@ -940,9 +982,7 @@ class Backtesting: # We can't place orders higher than current high (otherwise it'd be a stop limit entry) # which freqtrade does not support in live. if new_rate is not None and new_rate != propose_rate: - propose_rate = price_to_precision( - new_rate, price_precision, self.precision_mode_price - ) + propose_rate = price_to_precision(new_rate, price_precision, precision_mode_price) if direction == "short": propose_rate = max(propose_rate, row[LOW_IDX]) else: @@ -1035,7 +1075,7 @@ class Backtesting: pos_adjust = trade is not None and requested_rate is None stake_amount_ = stake_amount or (trade.stake_amount if trade else 0.0) - precision_price = self.exchange.get_precision_price(pair) + precision_price, precision_mode_price = self.get_pair_precision(pair, current_time) propose_rate, stake_amount, leverage, min_stake_amount = self.get_valid_price_and_stake( pair, @@ -1048,6 +1088,7 @@ class Backtesting: trade, order_type, precision_price, + precision_mode_price, ) # replace proposed rate if another rate was requested @@ -1123,7 +1164,7 @@ class Backtesting: amount_precision=precision_amount, price_precision=precision_price, precision_mode=self.precision_mode, - precision_mode_price=self.precision_mode_price, + precision_mode_price=precision_mode_price, contract_size=contract_size, orders=[], ) @@ -1608,7 +1649,7 @@ class Backtesting: pair_detail = self.get_detail_data(pair, row) if pair_detail is not None: pair_detail_cache[pair] = pair_detail - row = pair_detail_cache[pair][idx] + row = pair_detail_cache[pair][idx] is_last_row = current_time_det == end_date @@ -1717,7 +1758,7 @@ class Backtesting: "backtest_end_time": int(backtest_end_time.timestamp()), } ) - self.all_results[strategy_name] = results + self.all_bt_content[strategy_name] = results if ( self.config.get("export", "none") == "signals" @@ -1767,7 +1808,6 @@ class Backtesting: data: dict[str, DataFrame] = {} data, timerange = self.load_bt_data() - self.load_bt_data_detail() logger.info("Dataload complete. Calculating indicators") self.load_prior_backtest() @@ -1780,9 +1820,13 @@ class Backtesting: min_date, max_date = self.backtest_one_strategy(strat, data, timerange) # Update old results with new ones. - if len(self.all_results) > 0: + if len(self.all_bt_content) > 0: results = generate_backtest_stats( - data, self.all_results, min_date=min_date, max_date=max_date + data, + self.all_bt_content, + min_date=min_date, + max_date=max_date, + notes=self.config.get("backtest_notes"), ) if self.results: self.results["metadata"].update(results["metadata"]) diff --git a/freqtrade/optimize/base_analysis.py b/freqtrade/optimize/base_analysis.py index a2fe53867..7e75137ec 100644 --- a/freqtrade/optimize/base_analysis.py +++ b/freqtrade/optimize/base_analysis.py @@ -1,6 +1,6 @@ import logging from copy import deepcopy -from datetime import datetime, timezone +from datetime import UTC, datetime from typing import Any from pandas import DataFrame @@ -38,7 +38,7 @@ class BaseAnalysis: @staticmethod def dt_to_timestamp(dt: datetime): - timestamp = int(dt.replace(tzinfo=timezone.utc).timestamp()) + timestamp = int(dt.replace(tzinfo=UTC).timestamp()) return timestamp def fill_full_varholder(self): @@ -48,12 +48,12 @@ class BaseAnalysis: parsed_timerange = TimeRange.parse_timerange(self.local_config["timerange"]) if parsed_timerange.startdt is None: - self.full_varHolder.from_dt = datetime.fromtimestamp(0, tz=timezone.utc) + self.full_varHolder.from_dt = datetime.fromtimestamp(0, tz=UTC) else: self.full_varHolder.from_dt = parsed_timerange.startdt if parsed_timerange.stopdt is None: - self.full_varHolder.to_dt = datetime.now(timezone.utc) + self.full_varHolder.to_dt = datetime.now(UTC) else: self.full_varHolder.to_dt = parsed_timerange.stopdt diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py deleted file mode 100644 index 65dd30efc..000000000 --- a/freqtrade/optimize/edge_cli.py +++ /dev/null @@ -1,55 +0,0 @@ -# pragma pylint: disable=missing-docstring, W0212, too-many-arguments - -""" -This module contains the edge backtesting interface -""" - -import logging - -from freqtrade import constants -from freqtrade.configuration import TimeRange, validate_config_consistency -from freqtrade.constants import Config -from freqtrade.data.dataprovider import DataProvider -from freqtrade.edge import Edge -from freqtrade.optimize.optimize_reports import generate_edge_table -from freqtrade.resolvers import ExchangeResolver, StrategyResolver - - -logger = logging.getLogger(__name__) - - -class EdgeCli: - """ - EdgeCli class, this class contains all the logic to run edge backtesting - - To run a edge backtest: - edge = EdgeCli(config) - edge.start() - """ - - def __init__(self, config: Config) -> None: - self.config = config - - # Ensure using dry-run - self.config["dry_run"] = True - self.config["stake_amount"] = constants.UNLIMITED_STAKE_AMOUNT - self.exchange = ExchangeResolver.load_exchange(self.config) - self.strategy = StrategyResolver.load_strategy(self.config) - self.strategy.dp = DataProvider(config, self.exchange) - - validate_config_consistency(self.config) - - self.edge = Edge(config, self.exchange, self.strategy) - # Set refresh_pairs to false for edge-cli (it must be true for edge) - self.edge._refresh_pairs = False - - self.edge._timerange = TimeRange.parse_timerange( - None if self.config.get("timerange") is None else str(self.config.get("timerange")) - ) - self.strategy.ft_bot_start() - - def start(self) -> None: - result = self.edge.calculate(self.config["exchange"]["pair_whitelist"]) - if result: - print("") # blank line for readability - generate_edge_table(self.edge._cached_pairs) diff --git a/freqtrade/optimize/hyperopt/hyperopt.py b/freqtrade/optimize/hyperopt/hyperopt.py index ef71860a5..9c2fa2016 100644 --- a/freqtrade/optimize/hyperopt/hyperopt.py +++ b/freqtrade/optimize/hyperopt/hyperopt.py @@ -4,6 +4,7 @@ This module contains the hyperopt logic """ +import gc import logging import random from datetime import datetime @@ -13,14 +14,15 @@ from pathlib import Path from typing import Any import rapidjson -from joblib import Parallel, cpu_count, delayed, wrap_non_picklable_objects +from joblib import Parallel, cpu_count +from optuna.trial import FrozenTrial, Trial, TrialState from freqtrade.constants import FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config from freqtrade.enums import HyperoptState from freqtrade.exceptions import OperationalException from freqtrade.misc import file_dump_json, plural from freqtrade.optimize.hyperopt.hyperopt_logger import logging_mp_handle, logging_mp_setup -from freqtrade.optimize.hyperopt.hyperopt_optimizer import HyperOptimizer +from freqtrade.optimize.hyperopt.hyperopt_optimizer import INITIAL_POINTS, HyperOptimizer from freqtrade.optimize.hyperopt.hyperopt_output import HyperoptOutput from freqtrade.optimize.hyperopt_tools import ( HyperoptStateContainer, @@ -33,12 +35,6 @@ from freqtrade.util import get_progress_tracker logger = logging.getLogger(__name__) -INITIAL_POINTS = 30 - -# Keep no more than SKOPT_MODEL_QUEUE_SIZE models -# in the skopt model queue, to optimize memory consumption -SKOPT_MODEL_QUEUE_SIZE = 10 - log_queue: Any @@ -92,7 +88,8 @@ class Hyperopt: self.hyperopt_table_header = 0 self.print_json = self.config.get("print_json", False) - self.hyperopter = HyperOptimizer(self.config) + self.hyperopter = HyperOptimizer(self.config, self.data_pickle_file) + self.count_skipped_epochs = 0 @staticmethod def get_lock_filename(config: Config) -> str: @@ -158,61 +155,62 @@ class Hyperopt: log_queue, logging.INFO if self.config["verbosity"] < 1 else logging.DEBUG ) - return self.hyperopter.generate_optimizer(*args, **kwargs) + return self.hyperopter.generate_optimizer_wrapped(*args, **kwargs) - return parallel(delayed(wrap_non_picklable_objects(optimizer_wrapper))(v) for v in asked) + return parallel(optimizer_wrapper(v) for v in asked) def _set_random_state(self, random_state: int | None) -> int: return random_state or random.randint(1, 2**16 - 1) # noqa: S311 - def get_asked_points(self, n_points: int) -> tuple[list[list[Any]], list[bool]]: + def get_optuna_asked_points(self, n_points: int, dimensions: dict) -> list[Any]: + asked: list[list[Any]] = [] + for i in range(n_points): + asked.append(self.opt.ask(dimensions)) + return asked + + def duplicate_optuna_asked_points(self, trial: Trial, asked_trials: list[FrozenTrial]) -> bool: + asked_trials_no_dups: list[FrozenTrial] = [] + trials_to_consider = trial.study.get_trials(deepcopy=False, states=[TrialState.COMPLETE]) + # Check whether we already evaluated the sampled `params`. + for t in reversed(trials_to_consider): + if trial.params == t.params: + return True + # Check whether same`params` in one batch (asked_trials). Autosampler is doing this. + for t in asked_trials: + if t.params not in asked_trials_no_dups: + asked_trials_no_dups.append(t) + if len(asked_trials_no_dups) != len(asked_trials): + return True + return False + + def get_asked_points(self, n_points: int, dimensions: dict) -> tuple[list[Any], list[bool]]: """ Enforce points returned from `self.opt.ask` have not been already evaluated Steps: 1. Try to get points using `self.opt.ask` first 2. Discard the points that have already been evaluated - 3. Retry using `self.opt.ask` up to 3 times - 4. If still some points are missing in respect to `n_points`, random sample some points - 5. Repeat until at least `n_points` points in the `asked_non_tried` list - 6. Return a list with length truncated at `n_points` + 3. Retry using `self.opt.ask` up to `n_points` times """ - - def unique_list(a_list): - new_list = [] - for item in a_list: - if item not in new_list: - new_list.append(item) - return new_list - + asked_non_tried: list[FrozenTrial] = [] + optuna_asked_trials = self.get_optuna_asked_points(n_points=n_points, dimensions=dimensions) + asked_non_tried += [ + x + for x in optuna_asked_trials + if not self.duplicate_optuna_asked_points(x, optuna_asked_trials) + ] i = 0 - asked_non_tried: list[list[Any]] = [] - is_random_non_tried: list[bool] = [] - while i < 5 and len(asked_non_tried) < n_points: - if i < 3: - self.opt.cache_ = {} - asked = unique_list(self.opt.ask(n_points=n_points * 5 if i > 0 else n_points)) - is_random = [False for _ in range(len(asked))] - else: - asked = unique_list(self.opt.space.rvs(n_samples=n_points * 5)) - is_random = [True for _ in range(len(asked))] - is_random_non_tried += [ - rand - for x, rand in zip(asked, is_random, strict=False) - if x not in self.opt.Xi and x not in asked_non_tried - ] - asked_non_tried += [ - x for x in asked if x not in self.opt.Xi and x not in asked_non_tried - ] + while i < 2 * n_points and len(asked_non_tried) < n_points: + asked_new = self.get_optuna_asked_points(n_points=1, dimensions=dimensions)[0] + if not self.duplicate_optuna_asked_points(asked_new, asked_non_tried): + asked_non_tried.append(asked_new) i += 1 + if len(asked_non_tried) < n_points: + if self.count_skipped_epochs == 0: + logger.warning("Duplicate params detected. Maybe your search space is too small?") + self.count_skipped_epochs += n_points - len(asked_non_tried) - if asked_non_tried: - return ( - asked_non_tried[: min(len(asked_non_tried), n_points)], - is_random_non_tried[: min(len(asked_non_tried), n_points)], - ) - else: - return self.opt.ask(n_points=n_points), [False for _ in range(n_points)] + return asked_non_tried, [False for _ in range(len(asked_non_tried))] def evaluate_result(self, val: dict[str, Any], current: int, is_random: bool): """ @@ -258,9 +256,7 @@ class Hyperopt: config_jobs = self.config.get("hyperopt_jobs", -1) logger.info(f"Number of parallel jobs set as: {config_jobs}") - self.opt = self.hyperopter.get_optimizer( - config_jobs, self.random_state, INITIAL_POINTS, SKOPT_MODEL_QUEUE_SIZE - ) + self.opt = self.hyperopter.get_optimizer(self.random_state) self._setup_logging_mp_workaround() try: with Parallel(n_jobs=config_jobs) as parallel: @@ -276,9 +272,11 @@ class Hyperopt: if self.analyze_per_epoch: # First analysis not in parallel mode when using --analyze-per-epoch. # This allows dataprovider to load it's informative cache. - asked, is_random = self.get_asked_points(n_points=1) - f_val0 = self.hyperopter.generate_optimizer(asked[0]) - self.opt.tell(asked, [f_val0["loss"]]) + asked, is_random = self.get_asked_points( + n_points=1, dimensions=self.hyperopter.o_dimensions + ) + f_val0 = self.hyperopter.generate_optimizer(asked[0].params) + self.opt.tell(asked[0], [f_val0["loss"]]) self.evaluate_result(f_val0, 1, is_random[0]) pbar.update(task, advance=1) start += 1 @@ -290,9 +288,18 @@ class Hyperopt: n_rest = (i + 1) * jobs - (self.total_epochs - start) current_jobs = jobs - n_rest if n_rest > 0 else jobs - asked, is_random = self.get_asked_points(n_points=current_jobs) - f_val = self.run_optimizer_parallel(parallel, asked) - self.opt.tell(asked, [v["loss"] for v in f_val]) + asked, is_random = self.get_asked_points( + n_points=current_jobs, dimensions=self.hyperopter.o_dimensions + ) + + f_val = self.run_optimizer_parallel( + parallel, + [asked1.params for asked1 in asked], + ) + + f_val_loss = [v["loss"] for v in f_val] + for o_ask, v in zip(asked, f_val_loss, strict=False): + self.opt.tell(o_ask, v) for j, val in enumerate(f_val): # Use human-friendly indexes here (starting from 1) @@ -301,10 +308,24 @@ class Hyperopt: self.evaluate_result(val, current, is_random[j]) pbar.update(task, advance=1) logging_mp_handle(log_queue) + gc.collect() + + if ( + self.hyperopter.es_epochs > 0 + and self.hyperopter.es_terminator.should_terminate(self.opt) + ): + logger.info(f"Early stopping after {(i + 1) * jobs} epochs") + break except KeyboardInterrupt: print("User interrupted..") + if self.count_skipped_epochs > 0: + logger.info( + f"{self.count_skipped_epochs} {plural(self.count_skipped_epochs, 'epoch')} " + f"skipped due to duplicate parameters." + ) + logger.info( f"{self.num_epochs_saved} {plural(self.num_epochs_saved, 'epoch')} " f"saved to '{self.results_file}'." diff --git a/freqtrade/optimize/hyperopt/hyperopt_auto.py b/freqtrade/optimize/hyperopt/hyperopt_auto.py index 1da80ec02..6fabaaf35 100644 --- a/freqtrade/optimize/hyperopt/hyperopt_auto.py +++ b/freqtrade/optimize/hyperopt/hyperopt_auto.py @@ -12,7 +12,7 @@ from freqtrade.exceptions import OperationalException with suppress(ImportError): - from skopt.space import Dimension + from freqtrade.optimize.space import Dimension from freqtrade.optimize.hyperopt.hyperopt_interface import EstimatorType, IHyperOpt diff --git a/freqtrade/optimize/hyperopt/hyperopt_interface.py b/freqtrade/optimize/hyperopt/hyperopt_interface.py index 6382d7f8d..76f8907f9 100644 --- a/freqtrade/optimize/hyperopt/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt/hyperopt_interface.py @@ -8,19 +8,18 @@ import math from abc import ABC from typing import TypeAlias -from sklearn.base import RegressorMixin -from skopt.space import Categorical, Dimension, Integer +from optuna.samplers import BaseSampler from freqtrade.constants import Config from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import round_dict -from freqtrade.optimize.space import SKDecimal +from freqtrade.optimize.space import Categorical, Dimension, Integer, SKDecimal from freqtrade.strategy import IStrategy logger = logging.getLogger(__name__) -EstimatorType: TypeAlias = RegressorMixin | str +EstimatorType: TypeAlias = BaseSampler | str class IHyperOpt(ABC): @@ -44,10 +43,11 @@ class IHyperOpt(ABC): def generate_estimator(self, dimensions: list[Dimension], **kwargs) -> EstimatorType: """ Return base_estimator. - Can be any of "GP", "RF", "ET", "GBRT" or an instance of a class - inheriting from RegressorMixin (from sklearn). + Can be any of "TPESampler", "GPSampler", "CmaEsSampler", "NSGAIISampler" + "NSGAIIISampler", "QMCSampler" or an instance of a class + inheriting from BaseSampler (from optuna.samplers). """ - return "ET" + return "NSGAIIISampler" def generate_roi_table(self, params: dict) -> dict[int, float]: """ diff --git a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py index d46859ee7..7f56dfb81 100644 --- a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py +++ b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py @@ -6,11 +6,15 @@ and will be sent to the hyperopt worker processes. import logging import sys import warnings -from datetime import datetime, timezone +from datetime import UTC, datetime +from pathlib import Path from typing import Any -from joblib import dump, load +import optuna +from joblib import delayed, dump, load, wrap_non_picklable_objects from joblib.externals import cloudpickle +from optuna.exceptions import ExperimentalWarning +from optuna.terminator import BestValueStagnationEvaluator, Terminator from pandas import DataFrame from freqtrade.constants import DATETIME_PRINT_FORMAT, Config @@ -20,7 +24,7 @@ from freqtrade.data.metrics import calculate_market_change from freqtrade.enums import HyperoptState from freqtrade.exceptions import OperationalException from freqtrade.ft_types import BacktestContentType -from freqtrade.misc import deep_merge_dicts +from freqtrade.misc import deep_merge_dicts, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOptLoss to allow unpickling classes from these modules @@ -28,21 +32,32 @@ from freqtrade.optimize.hyperopt.hyperopt_auto import HyperOptAuto from freqtrade.optimize.hyperopt_loss.hyperopt_loss_interface import IHyperOptLoss from freqtrade.optimize.hyperopt_tools import HyperoptStateContainer, HyperoptTools from freqtrade.optimize.optimize_reports import generate_strategy_stats +from freqtrade.optimize.space import ( + DimensionProtocol, + SKDecimal, + ft_CategoricalDistribution, + ft_FloatDistribution, + ft_IntDistribution, +) from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver from freqtrade.util.dry_run_wallet import get_dry_run_wallet -# Suppress scikit-learn FutureWarnings from skopt -with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=FutureWarning) - from skopt import Optimizer - from skopt.space import Dimension - logger = logging.getLogger(__name__) +INITIAL_POINTS = 30 MAX_LOSS = 100000 # just a big enough number to be bad result in loss optimization +optuna_samplers_dict = { + "TPESampler": optuna.samplers.TPESampler, + "GPSampler": optuna.samplers.GPSampler, + "CmaEsSampler": optuna.samplers.CmaEsSampler, + "NSGAIISampler": optuna.samplers.NSGAIISampler, + "NSGAIIISampler": optuna.samplers.NSGAIIISampler, + "QMCSampler": optuna.samplers.QMCSampler, +} + class HyperOptimizer: """ @@ -50,15 +65,16 @@ class HyperOptimizer: This class is sent to the hyperopt worker processes. """ - def __init__(self, config: Config) -> None: - self.buy_space: list[Dimension] = [] - self.sell_space: list[Dimension] = [] - self.protection_space: list[Dimension] = [] - self.roi_space: list[Dimension] = [] - self.stoploss_space: list[Dimension] = [] - self.trailing_space: list[Dimension] = [] - self.max_open_trades_space: list[Dimension] = [] - self.dimensions: list[Dimension] = [] + def __init__(self, config: Config, data_pickle_file: Path) -> None: + self.buy_space: list[DimensionProtocol] = [] + self.sell_space: list[DimensionProtocol] = [] + self.protection_space: list[DimensionProtocol] = [] + self.roi_space: list[DimensionProtocol] = [] + self.stoploss_space: list[DimensionProtocol] = [] + self.trailing_space: list[DimensionProtocol] = [] + self.max_open_trades_space: list[DimensionProtocol] = [] + self.dimensions: list[DimensionProtocol] = [] + self.o_dimensions: dict = {} self.config = config self.min_date: datetime @@ -86,12 +102,14 @@ class HyperOptimizer: ) self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function - self.data_pickle_file = ( - self.config["user_data_dir"] / "hyperopt_results" / "hyperopt_tickerdata.pkl" - ) + self.data_pickle_file = data_pickle_file self.market_change = 0.0 + self.es_epochs = config.get("early_stop", 0) + if self.es_epochs > 0 and self.es_epochs < 0.2 * config.get("epochs", 0): + logger.warning(f"Early stop epochs {self.es_epochs} lower than 20% of total epochs") + if HyperoptTools.has_space(self.config, "sell"): # Make sure use_exit_signal is enabled self.config["use_exit_signal"] = True @@ -127,18 +145,6 @@ class HyperOptimizer: cloudpickle.register_pickle_by_value(mod) self.hyperopt_pickle_magic(modules.__bases__) - def _get_params_dict( - self, dimensions: list[Dimension], raw_params: list[Any] - ) -> dict[str, Any]: - # Ensure the number of dimensions match - # the number of parameters in the list. - if len(raw_params) != len(dimensions): - raise ValueError("Mismatch in number of search-space dimensions.") - - # Return a dict where the keys are the names of the dimensions - # and the values are taken from the list of parameters. - return {d.name: v for d, v in zip(dimensions, raw_params, strict=False)} - def _get_params_details(self, params: dict) -> dict: """ Return the params for each space @@ -146,27 +152,36 @@ class HyperOptimizer: result: dict = {} if HyperoptTools.has_space(self.config, "buy"): - result["buy"] = {p.name: params.get(p.name) for p in self.buy_space} + result["buy"] = round_dict({p.name: params.get(p.name) for p in self.buy_space}, 13) if HyperoptTools.has_space(self.config, "sell"): - result["sell"] = {p.name: params.get(p.name) for p in self.sell_space} + result["sell"] = round_dict({p.name: params.get(p.name) for p in self.sell_space}, 13) if HyperoptTools.has_space(self.config, "protection"): - result["protection"] = {p.name: params.get(p.name) for p in self.protection_space} + result["protection"] = round_dict( + {p.name: params.get(p.name) for p in self.protection_space}, 13 + ) if HyperoptTools.has_space(self.config, "roi"): - result["roi"] = { - str(k): v for k, v in self.custom_hyperopt.generate_roi_table(params).items() - } + result["roi"] = round_dict( + {str(k): v for k, v in self.custom_hyperopt.generate_roi_table(params).items()}, 13 + ) if HyperoptTools.has_space(self.config, "stoploss"): - result["stoploss"] = {p.name: params.get(p.name) for p in self.stoploss_space} + result["stoploss"] = round_dict( + {p.name: params.get(p.name) for p in self.stoploss_space}, 13 + ) if HyperoptTools.has_space(self.config, "trailing"): - result["trailing"] = self.custom_hyperopt.generate_trailing_params(params) + result["trailing"] = round_dict( + self.custom_hyperopt.generate_trailing_params(params), 13 + ) if HyperoptTools.has_space(self.config, "trades"): - result["max_open_trades"] = { - "max_open_trades": ( - self.backtesting.strategy.max_open_trades - if self.backtesting.strategy.max_open_trades != float("inf") - else -1 - ) - } + result["max_open_trades"] = round_dict( + { + "max_open_trades": ( + self.backtesting.strategy.max_open_trades + if self.backtesting.strategy.max_open_trades != float("inf") + else -1 + ) + }, + 13, + ) return result @@ -246,15 +261,19 @@ class HyperOptimizer: # noinspection PyProtectedMember attr.value = params_dict[attr_name] - def generate_optimizer(self, raw_params: list[Any]) -> dict[str, Any]: + @delayed + @wrap_non_picklable_objects + def generate_optimizer_wrapped(self, params_dict: dict[str, Any]) -> dict[str, Any]: + return self.generate_optimizer(params_dict) + + def generate_optimizer(self, params_dict: dict[str, Any]) -> dict[str, Any]: """ Used Optimize function. Called once per epoch to optimize whatever is configured. Keep this function as optimized as possible! """ HyperoptStateContainer.set_state(HyperoptState.OPTIMIZE) - backtest_start_time = datetime.now(timezone.utc) - params_dict = self._get_params_dict(self.dimensions, raw_params) + backtest_start_time = datetime.now(UTC) # Apply parameters if HyperoptTools.has_space(self.config, "buy"): @@ -304,24 +323,24 @@ class HyperOptimizer: with self.data_pickle_file.open("rb") as f: processed = load(f, mmap_mode="r") - if self.analyze_per_epoch: - # Data is not yet analyzed, rerun populate_indicators. - processed = self.advise_and_trim(processed) + if self.analyze_per_epoch: + # Data is not yet analyzed, rerun populate_indicators. + processed = self.advise_and_trim(processed) bt_results = self.backtesting.backtest( processed=processed, start_date=self.min_date, end_date=self.max_date ) - backtest_end_time = datetime.now(timezone.utc) + backtest_end_time = datetime.now(UTC) bt_results.update( { "backtest_start_time": int(backtest_start_time.timestamp()), "backtest_end_time": int(backtest_end_time.timestamp()), } ) - - return self._get_results_dict( + result = self._get_results_dict( bt_results, self.min_date, self.max_date, params_dict, processed=processed ) + return result def _get_results_dict( self, @@ -378,33 +397,55 @@ class HyperOptimizer: "total_profit": total_profit, } + def convert_dimensions_to_optuna_space(self, s_dimensions: list[DimensionProtocol]) -> dict: + o_dimensions: dict[str, optuna.distributions.BaseDistribution] = {} + for original_dim in s_dimensions: + if isinstance( + original_dim, + ft_CategoricalDistribution | ft_IntDistribution | ft_FloatDistribution | SKDecimal, + ): + o_dimensions[original_dim.name] = original_dim + else: + raise OperationalException( + f"Unknown search space {original_dim.name} - {original_dim} / \ + {type(original_dim)}" + ) + return o_dimensions + def get_optimizer( self, - cpu_count: int, random_state: int, - initial_points: int, - model_queue_size: int, - ) -> Optimizer: - dimensions = self.dimensions - estimator = self.custom_hyperopt.generate_estimator(dimensions=dimensions) - - acq_optimizer = "sampling" - if isinstance(estimator, str): - if estimator not in ("GP", "RF", "ET", "GBRT"): - raise OperationalException(f"Estimator {estimator} not supported.") - else: - acq_optimizer = "auto" - - logger.info(f"Using estimator {estimator}.") - return Optimizer( - dimensions, - base_estimator=estimator, - acq_optimizer=acq_optimizer, - n_initial_points=initial_points, - acq_optimizer_kwargs={"n_jobs": cpu_count}, - random_state=random_state, - model_queue_size=model_queue_size, + ): + o_sampler = self.custom_hyperopt.generate_estimator( + dimensions=self.dimensions, random_state=random_state ) + self.o_dimensions = self.convert_dimensions_to_optuna_space(self.dimensions) + + if isinstance(o_sampler, str): + if o_sampler not in optuna_samplers_dict.keys(): + raise OperationalException(f"Optuna Sampler {o_sampler} not supported.") + with warnings.catch_warnings(): + warnings.filterwarnings(action="ignore", category=ExperimentalWarning) + if o_sampler in ["NSGAIIISampler", "NSGAIISampler"]: + sampler = optuna_samplers_dict[o_sampler]( + seed=random_state, population_size=INITIAL_POINTS + ) + elif o_sampler in ["GPSampler", "TPESampler", "CmaEsSampler"]: + sampler = optuna_samplers_dict[o_sampler]( + seed=random_state, n_startup_trials=INITIAL_POINTS + ) + else: + sampler = optuna_samplers_dict[o_sampler](seed=random_state) + else: + sampler = o_sampler + + if self.es_epochs > 0: + with warnings.catch_warnings(): + warnings.filterwarnings(action="ignore", category=ExperimentalWarning) + self.es_terminator = Terminator(BestValueStagnationEvaluator(self.es_epochs)) + + logger.info(f"Using optuna sampler {o_sampler}.") + return optuna.create_study(sampler=sampler, direction="minimize") def advise_and_trim(self, data: dict[str, DataFrame]) -> dict[str, DataFrame]: preprocessed = self.backtesting.strategy.advise_all_indicators(data) @@ -423,7 +464,6 @@ class HyperOptimizer: def prepare_hyperopt_data(self) -> None: HyperoptStateContainer.set_state(HyperoptState.DATALOAD) data, self.timerange = self.backtesting.load_bt_data() - self.backtesting.load_bt_data_detail() logger.info("Dataload complete. Calculating indicators") if not self.analyze_per_epoch: diff --git a/freqtrade/optimize/hyperopt_tools.py b/freqtrade/optimize/hyperopt_tools.py index ff4747781..4cb9887eb 100644 --- a/freqtrade/optimize/hyperopt_tools.py +++ b/freqtrade/optimize/hyperopt_tools.py @@ -1,7 +1,7 @@ import logging from collections.abc import Iterator from copy import deepcopy -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from typing import Any @@ -71,7 +71,7 @@ class HyperoptTools: "strategy_name": strategy_name, "params": final_params, "ft_stratparam_v": 1, - "export_time": datetime.now(timezone.utc), + "export_time": datetime.now(UTC), } logger.info(f"Dumping parameters to {filename}") with filename.open("w") as f: @@ -107,7 +107,7 @@ class HyperoptTools: """ Tell if the space value is contained in the configuration """ - # 'trailing' and 'protection spaces are not included in the 'default' set of spaces + # The following spaces are not included in the 'default' set of spaces if space in ("trailing", "protection", "trades"): return any(s in config["spaces"] for s in [space, "all"]) else: diff --git a/freqtrade/optimize/optimize_reports/__init__.py b/freqtrade/optimize/optimize_reports/__init__.py index c08bae4be..5cf8e51ad 100644 --- a/freqtrade/optimize/optimize_reports/__init__.py +++ b/freqtrade/optimize/optimize_reports/__init__.py @@ -1,6 +1,5 @@ # flake8: noqa: F401 from freqtrade.optimize.optimize_reports.bt_output import ( - generate_edge_table, generate_wins_draws_losses, show_backtest_result, show_backtest_results, diff --git a/freqtrade/optimize/optimize_reports/bt_output.py b/freqtrade/optimize/optimize_reports/bt_output.py index 7dea7224b..a96ba4584 100644 --- a/freqtrade/optimize/optimize_reports/bt_output.py +++ b/freqtrade/optimize/optimize_reports/bt_output.py @@ -102,7 +102,9 @@ def text_table_tags( [ *( ( - (t["key"] if isinstance(t["key"], list) else [t["key"], ""]) + list(t["key"]) + if isinstance(t["key"], list | tuple) + else [t["key"], ""] if is_list else [t["key"]] ) @@ -330,8 +332,11 @@ def text_table_add_metrics(strat_results: dict) -> None: ), ), ( - "Avg. daily profit %", - f"{(strat_results['profit_total'] / strat_results['backtest_days']):.2%}", + "Avg. daily profit", + fmt_coin( + (strat_results["profit_total_abs"] / strat_results["backtest_days"]), + strat_results["stake_currency"], + ), ), ( "Avg. stake amount", @@ -368,8 +373,18 @@ def text_table_add_metrics(strat_results: dict) -> None: f"{strat_results['winning_days']} / " f"{strat_results['draw_days']} / {strat_results['losing_days']}", ), - ("Avg. Duration Winners", f"{strat_results['winner_holding_avg']}"), - ("Avg. Duration Loser", f"{strat_results['loser_holding_avg']}"), + ( + "Min/Max/Avg. Duration Winners", + f"{strat_results.get('winner_holding_min', 'N/A')} / " + f"{strat_results.get('winner_holding_max', 'N/A')} / " + f"{strat_results.get('winner_holding_avg', 'N/A')}", + ), + ( + "Min/Max/Avg. Duration Losers", + f"{strat_results.get('loser_holding_min', 'N/A')} / " + f"{strat_results.get('loser_holding_max', 'N/A')} / " + f"{strat_results.get('loser_holding_avg', 'N/A')}", + ), ( "Max Consecutive Wins / Loss", ( @@ -487,33 +502,3 @@ def show_sorted_pairlist(config: Config, backtest_stats: BacktestResultType): if result["key"] != "TOTAL": print(f'"{result["key"]}", // {result["profit_mean"]:.2%}') print("]") - - -def generate_edge_table(results: dict) -> None: - tabular_data = [] - headers = [ - "Pair", - "Stoploss", - "Win Rate", - "Risk Reward Ratio", - "Required Risk Reward", - "Expectancy", - "Total Number of Trades", - "Average Duration (min)", - ] - - for result in results.items(): - if result[1].nb_trades > 0: - tabular_data.append( - [ - result[0], - f"{result[1].stoploss:.10g}", - f"{result[1].winrate:.2f}", - f"{result[1].risk_reward_ratio:.2f}", - f"{result[1].required_risk_reward:.2f}", - f"{result[1].expectancy:.2f}", - result[1].nb_trades, - round(result[1].avg_trade_duration), - ] - ) - print_rich_table(tabular_data, headers, summary="EDGE TABLE") diff --git a/freqtrade/optimize/optimize_reports/bt_storage.py b/freqtrade/optimize/optimize_reports/bt_storage.py index 1e6a67e81..ef73d4721 100644 --- a/freqtrade/optimize/optimize_reports/bt_storage.py +++ b/freqtrade/optimize/optimize_reports/bt_storage.py @@ -64,7 +64,7 @@ def store_backtest_results( :param market_change_data: Dataframe containing market change data :param analysis_results: Dictionary containing analysis results """ - recordfilename: Path = config["exportfilename"] + recordfilename: Path = config["exportdirectory"] zip_filename = _generate_filename(recordfilename, dtappendix, ".zip") base_filename = _generate_filename(recordfilename, dtappendix, "") json_filename = _generate_filename(recordfilename, dtappendix, ".json") diff --git a/freqtrade/optimize/optimize_reports/optimize_reports.py b/freqtrade/optimize/optimize_reports/optimize_reports.py index 560e91476..c46f5af78 100644 --- a/freqtrade/optimize/optimize_reports/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports/optimize_reports.py @@ -1,6 +1,6 @@ import logging from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from typing import Any, Literal import numpy as np @@ -23,7 +23,7 @@ from freqtrade.ft_types import ( BacktestResultType, get_BacktestResultType_default, ) -from freqtrade.util import decimals_per_coin, fmt_coin, get_dry_run_wallet +from freqtrade.util import decimals_per_coin, fmt_coin, format_duration, get_dry_run_wallet logger = logging.getLogger(__name__) @@ -83,7 +83,6 @@ def _generate_result_line( """ Generate one result dict, with "first_column" as key. """ - profit_sum = result["profit_ratio"].sum() # (end-capital - starting capital) / starting capital profit_total = result["profit_abs"].sum() / starting_balance backtest_days = (max_date - min_date).days or 1 @@ -108,8 +107,6 @@ def _generate_result_line( "profit_mean_pct": ( round(result["profit_ratio"].mean() * 100.0, 2) if len(result) > 0 else 0.0 ), - "profit_sum": profit_sum, - "profit_sum_pct": round(profit_sum * 100.0, 2), "profit_total_abs": result["profit_abs"].sum(), "profit_total": profit_total, "profit_total_pct": round(profit_total * 100.0, 2), @@ -336,22 +333,44 @@ def generate_trading_stats(results: DataFrame) -> dict[str, Any]: } winning_trades = results.loc[results["profit_ratio"] > 0] + winning_duration = winning_trades["trade_duration"] draw_trades = results.loc[results["profit_ratio"] == 0] losing_trades = results.loc[results["profit_ratio"] < 0] + losing_duration = losing_trades["trade_duration"] holding_avg = ( timedelta(minutes=round(results["trade_duration"].mean())) if not results.empty else timedelta() ) + winner_holding_min = ( + timedelta(minutes=round(winning_duration.min())) + if not winning_duration.empty + else timedelta() + ) + winner_holding_max = ( + timedelta(minutes=round(winning_duration.max())) + if not winning_duration.empty + else timedelta() + ) winner_holding_avg = ( - timedelta(minutes=round(winning_trades["trade_duration"].mean())) - if not winning_trades.empty + timedelta(minutes=round(winning_duration.mean())) + if not winning_duration.empty + else timedelta() + ) + loser_holding_min = ( + timedelta(minutes=round(losing_duration.min())) + if not losing_duration.empty + else timedelta() + ) + loser_holding_max = ( + timedelta(minutes=round(losing_duration.max())) + if not losing_duration.empty else timedelta() ) loser_holding_avg = ( - timedelta(minutes=round(losing_trades["trade_duration"].mean())) - if not losing_trades.empty + timedelta(minutes=round(losing_duration.mean())) + if not losing_duration.empty else timedelta() ) winstreak, loss_streak = calc_streak(results) @@ -363,9 +382,17 @@ def generate_trading_stats(results: DataFrame) -> dict[str, Any]: "winrate": len(winning_trades) / len(results) if len(results) else 0.0, "holding_avg": holding_avg, "holding_avg_s": holding_avg.total_seconds(), - "winner_holding_avg": winner_holding_avg, + "winner_holding_min": format_duration(winner_holding_min), + "winner_holding_min_s": winner_holding_min.total_seconds(), + "winner_holding_max": format_duration(winner_holding_max), + "winner_holding_max_s": winner_holding_max.total_seconds(), + "winner_holding_avg": format_duration(winner_holding_avg), "winner_holding_avg_s": winner_holding_avg.total_seconds(), - "loser_holding_avg": loser_holding_avg, + "loser_holding_min": format_duration(loser_holding_min), + "loser_holding_min_s": loser_holding_min.total_seconds(), + "loser_holding_max": format_duration(loser_holding_max), + "loser_holding_max_s": loser_holding_max.total_seconds(), + "loser_holding_avg": format_duration(loser_holding_avg), "loser_holding_avg_s": loser_holding_avg.total_seconds(), "max_consecutive_wins": winstreak, "max_consecutive_losses": loss_streak, @@ -488,14 +515,16 @@ def generate_strategy_stats( best_pair = ( max( - [pair for pair in pair_results if pair["key"] != "TOTAL"], key=lambda x: x["profit_sum"] + [pair for pair in pair_results if pair["key"] != "TOTAL"], + key=lambda x: x["profit_total_abs"], ) if len(pair_results) > 1 else None ) worst_pair = ( min( - [pair for pair in pair_results if pair["key"] != "TOTAL"], key=lambda x: x["profit_sum"] + [pair for pair in pair_results if pair["key"] != "TOTAL"], + key=lambda x: x["profit_total_abs"], ) if len(pair_results) > 1 else None @@ -569,6 +598,8 @@ def generate_strategy_stats( "timerange": config.get("timerange", ""), "enable_protections": config.get("enable_protections", False), "strategy_name": strategy, + "freqaimodel": config.get("freqaimodel", None), + "freqai_identifier": config.get("freqai", {}).get("identifier", None), # Parameters relevant for backtesting "stoploss": config["stoploss"], "trailing_stop": config.get("trailing_stop", False), @@ -622,9 +653,9 @@ def generate_strategy_stats( "max_drawdown_abs": 0.0, "max_drawdown_low": 0.0, "max_drawdown_high": 0.0, - "drawdown_start": datetime(1970, 1, 1, tzinfo=timezone.utc), + "drawdown_start": datetime(1970, 1, 1, tzinfo=UTC), "drawdown_start_ts": 0, - "drawdown_end": datetime(1970, 1, 1, tzinfo=timezone.utc), + "drawdown_end": datetime(1970, 1, 1, tzinfo=UTC), "drawdown_end_ts": 0, "csum_min": 0, "csum_max": 0, @@ -639,6 +670,7 @@ def generate_backtest_stats( all_results: dict[str, BacktestContentType], min_date: datetime, max_date: datetime, + notes: str | None = None, ) -> BacktestResultType: """ :param btdata: Backtest data @@ -649,7 +681,7 @@ def generate_backtest_stats( :return: Dictionary containing results per strategy and a strategy summary. """ result: BacktestResultType = get_BacktestResultType_default() - market_change = calculate_market_change(btdata, "close") + market_change = calculate_market_change(btdata, "close", min_date=min_date) metadata = {} pairlist = list(btdata.keys()) for strategy, content in all_results.items(): @@ -664,6 +696,8 @@ def generate_backtest_stats( "backtest_start_ts": int(min_date.timestamp()), "backtest_end_ts": int(max_date.timestamp()), } + if notes: + metadata[strategy]["notes"] = notes result["strategy"][strategy] = strat_stats strategy_results = generate_strategy_comparison(bt_stats=result["strategy"]) diff --git a/freqtrade/optimize/space/__init__.py b/freqtrade/optimize/space/__init__.py index 6c59a4d8f..4a9855234 100644 --- a/freqtrade/optimize/space/__init__.py +++ b/freqtrade/optimize/space/__init__.py @@ -1,3 +1,16 @@ -from skopt.space import Categorical, Dimension, Integer, Real # noqa: F401 +from .decimalspace import SKDecimal +from .optunaspaces import ( + DimensionProtocol, + ft_CategoricalDistribution, + ft_FloatDistribution, + ft_IntDistribution, +) -from .decimalspace import SKDecimal # noqa: F401 + +# Alias for the distribution classes +Dimension = DimensionProtocol +Categorical = ft_CategoricalDistribution +Integer = ft_IntDistribution +Real = ft_FloatDistribution + +__all__ = ["Categorical", "Dimension", "Integer", "Real", "SKDecimal"] diff --git a/freqtrade/optimize/space/decimalspace.py b/freqtrade/optimize/space/decimalspace.py index f5c122fb3..dc6dba04d 100644 --- a/freqtrade/optimize/space/decimalspace.py +++ b/freqtrade/optimize/space/decimalspace.py @@ -1,47 +1,35 @@ -import numpy as np -from skopt.space import Integer +from optuna.distributions import FloatDistribution -class SKDecimal(Integer): +class SKDecimal(FloatDistribution): def __init__( self, - low, - high, - decimals=3, - prior="uniform", - base=10, - transform=None, + low: float, + high: float, + *, + step: float | None = None, + decimals: int | None = None, name=None, - dtype=np.int64, ): - self.decimals = decimals + """ + FloatDistribution with a fixed step size. + Only one of step or decimals can be set. + :param low: lower bound + :param high: upper bound + :param step: step size (e.g. 0.001) + :param decimals: number of decimal places to round to (e.g. 3) + :param name: name of the distribution + """ + if decimals is not None and step is not None: + raise ValueError("You can only set one of decimals or step") + if decimals is None and step is None: + raise ValueError("You must set one of decimals or step") + # Convert decimals to step + self.step = step or (1 / 10**decimals if decimals else 1) + self.name = name - self.pow_dot_one = pow(0.1, self.decimals) - self.pow_ten = pow(10, self.decimals) - - _low = int(low * self.pow_ten) - _high = int(high * self.pow_ten) - # trunc to precision to avoid points out of space - self.low_orig = round(_low * self.pow_dot_one, self.decimals) - self.high_orig = round(_high * self.pow_dot_one, self.decimals) - - super().__init__(_low, _high, prior, base, transform, name, dtype) - - def __repr__(self): - return ( - f"Decimal(low={self.low_orig}, high={self.high_orig}, decimals={self.decimals}, " - f"prior='{self.prior}', transform='{self.transform_}')" + super().__init__( + low=round(low, decimals) if decimals else low, + high=round(high, decimals) if decimals else high, + step=self.step, ) - - def __contains__(self, point): - if isinstance(point, list): - point = np.array(point) - return self.low_orig <= point <= self.high_orig - - def transform(self, Xt): - return super().transform([int(v * self.pow_ten) for v in Xt]) - - def inverse_transform(self, Xt): - res = super().inverse_transform(Xt) - # equivalent to [round(x * pow(0.1, self.decimals), self.decimals) for x in res] - return [int(v) / self.pow_ten for v in res] diff --git a/freqtrade/optimize/space/optunaspaces.py b/freqtrade/optimize/space/optunaspaces.py new file mode 100644 index 000000000..9f152b991 --- /dev/null +++ b/freqtrade/optimize/space/optunaspaces.py @@ -0,0 +1,59 @@ +from collections.abc import Sequence +from typing import Any, Protocol + +from optuna.distributions import CategoricalDistribution, FloatDistribution, IntDistribution + + +class DimensionProtocol(Protocol): + name: str + + +class ft_CategoricalDistribution(CategoricalDistribution): + def __init__( + self, + categories: Sequence[Any], + name: str, + **kwargs, + ): + self.name = name + self.categories = categories + # if len(categories) <= 1: + # raise Exception(f"need at least 2 categories for {name}") + return super().__init__(categories) + + def __repr__(self): + return f"CategoricalDistribution({self.categories})" + + +class ft_IntDistribution(IntDistribution): + def __init__( + self, + low: int | float, + high: int | float, + name: str, + **kwargs, + ): + self.name = name + self.low = int(low) + self.high = int(high) + return super().__init__(self.low, self.high, **kwargs) + + def __repr__(self): + return f"IntDistribution(low={self.low}, high={self.high})" + + +class ft_FloatDistribution(FloatDistribution): + def __init__( + self, + low: float, + high: float, + name: str, + **kwargs, + ): + self.name = name + self.low = low + self.high = high + return super().__init__(low, high, **kwargs) + + def __repr__(self): + return f"FloatDistribution(low={self.low}, high={self.high}, step={self.step})" diff --git a/freqtrade/persistence/key_value_store.py b/freqtrade/persistence/key_value_store.py index e7b782ac4..0d5a97fa1 100644 --- a/freqtrade/persistence/key_value_store.py +++ b/freqtrade/persistence/key_value_store.py @@ -1,6 +1,6 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from enum import Enum -from typing import ClassVar +from typing import ClassVar, Literal from sqlalchemy import String from sqlalchemy.orm import Mapped, mapped_column @@ -18,9 +18,11 @@ class ValueTypesEnum(str, Enum): INT = "int" -class KeyStoreKeys(str, Enum): - BOT_START_TIME = "bot_start_time" - STARTUP_TIME = "startup_time" +KeyStoreKeys = Literal[ + "bot_start_time", + "startup_time", + "binance_migration", +] class _KeyValueStoreModel(ModelBase): @@ -112,7 +114,7 @@ class KeyValueStore: if kv.value_type == ValueTypesEnum.STRING: return kv.string_value if kv.value_type == ValueTypesEnum.DATETIME and kv.datetime_value is not None: - return kv.datetime_value.replace(tzinfo=timezone.utc) + return kv.datetime_value.replace(tzinfo=UTC) if kv.value_type == ValueTypesEnum.FLOAT: return kv.float_value if kv.value_type == ValueTypesEnum.INT: @@ -154,7 +156,7 @@ class KeyValueStore: ) if kv is None or kv.datetime_value is None: return None - return kv.datetime_value.replace(tzinfo=timezone.utc) + return kv.datetime_value.replace(tzinfo=UTC) @staticmethod def get_float_value(key: KeyStoreKeys) -> float | None: @@ -192,7 +194,7 @@ class KeyValueStore: return kv.int_value -def set_startup_time(): +def set_startup_time() -> None: """ sets bot_start_time to the first trade open date - or "now" on new databases. sets startup_time to "now" @@ -205,5 +207,5 @@ def set_startup_time(): if t is not None: KeyValueStore.store_value("bot_start_time", t.open_date_utc) else: - KeyValueStore.store_value("bot_start_time", datetime.now(timezone.utc)) - KeyValueStore.store_value("startup_time", datetime.now(timezone.utc)) + KeyValueStore.store_value("bot_start_time", datetime.now(UTC)) + KeyValueStore.store_value("startup_time", datetime.now(UTC)) diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py index f0aa2f289..59d717d57 100644 --- a/freqtrade/persistence/migrations.py +++ b/freqtrade/persistence/migrations.py @@ -1,6 +1,6 @@ import logging -from sqlalchemy import inspect, select, text, update +from sqlalchemy import Engine, inspect, select, text, update from freqtrade.exceptions import OperationalException from freqtrade.persistence.trade_model import Order, Trade @@ -9,7 +9,7 @@ from freqtrade.persistence.trade_model import Order, Trade logger = logging.getLogger(__name__) -def get_table_names_for_table(inspector, tabletype) -> list[str]: +def get_table_names_for_table(inspector, tabletype: str) -> list[str]: return [t for t in inspector.get_table_names() if t.startswith(tabletype)] @@ -350,7 +350,7 @@ def fix_wrong_max_stake_amount(engine): connection.execute(stmt) -def check_migrate(engine, decl_base, previous_tables) -> None: +def check_migrate(engine: Engine, decl_base, previous_tables: list[str]) -> None: """ Checks if migration is necessary and migrates if necessary """ diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index f35f021cf..4d4808eeb 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -2,6 +2,7 @@ This module contains the class to persist trades into SQLite """ +import functools import logging import threading from contextvars import ContextVar @@ -94,3 +95,22 @@ def init_db(db_url: str) -> None: previous_tables = inspect(engine).get_table_names() ModelBase.metadata.create_all(engine) check_migrate(engine, decl_base=ModelBase, previous_tables=previous_tables) + + +def custom_data_rpc_wrapper(func): + """ + Wrapper for RPC methods when using custom_data + Similar behavior to deps.get_rpc() - but limited to custom_data. + """ + + @functools.wraps(func) + def wrapper(*args, **kwargs): + try: + _CustomData.session.rollback() + return func(*args, **kwargs) + finally: + _CustomData.session.rollback() + # Ensure the session is removed after use + _CustomData.session.remove() + + return wrapper diff --git a/freqtrade/persistence/pairlock.py b/freqtrade/persistence/pairlock.py index 6c98a607d..eedc7286f 100644 --- a/freqtrade/persistence/pairlock.py +++ b/freqtrade/persistence/pairlock.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from typing import Any, ClassVar from sqlalchemy import ScalarResult, String, or_, select @@ -69,11 +69,9 @@ class PairLock(ModelBase): "id": self.id, "pair": self.pair, "lock_time": self.lock_time.strftime(DATETIME_PRINT_FORMAT), - "lock_timestamp": int(self.lock_time.replace(tzinfo=timezone.utc).timestamp() * 1000), + "lock_timestamp": int(self.lock_time.replace(tzinfo=UTC).timestamp() * 1000), "lock_end_time": self.lock_end_time.strftime(DATETIME_PRINT_FORMAT), - "lock_end_timestamp": int( - self.lock_end_time.replace(tzinfo=timezone.utc).timestamp() * 1000 - ), + "lock_end_timestamp": int(self.lock_end_time.replace(tzinfo=UTC).timestamp() * 1000), "reason": self.reason, "side": self.side, "active": self.active, diff --git a/freqtrade/persistence/pairlock_middleware.py b/freqtrade/persistence/pairlock_middleware.py index 0adbcc8be..02642c463 100644 --- a/freqtrade/persistence/pairlock_middleware.py +++ b/freqtrade/persistence/pairlock_middleware.py @@ -1,6 +1,6 @@ import logging from collections.abc import Sequence -from datetime import datetime, timezone +from datetime import UTC, datetime from sqlalchemy import select @@ -52,7 +52,7 @@ class PairLocks: """ lock = PairLock( pair=pair, - lock_time=now or datetime.now(timezone.utc), + lock_time=now or datetime.now(UTC), lock_end_time=timeframe_to_next_date(PairLocks.timeframe, until), reason=reason, side=side, @@ -77,7 +77,7 @@ class PairLocks: :param side: Side get locks for, can be 'long', 'short', '*' or None """ if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) if PairLocks.use_db: return PairLock.query_pair_locks(pair, now, side).all() @@ -114,7 +114,7 @@ class PairLocks: defaults to datetime.now(timezone.utc) """ if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) logger.info(f"Releasing all locks for {pair}.") locks = PairLocks.get_pair_locks(pair, now, side=side) @@ -132,7 +132,7 @@ class PairLocks: defaults to datetime.now(timezone.utc) """ if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) if PairLocks.use_db: # used in live modes @@ -161,7 +161,7 @@ class PairLocks: defaults to datetime.now(timezone.utc) """ if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) return len(PairLocks.get_pair_locks("*", now, side)) > 0 @@ -173,7 +173,7 @@ class PairLocks: defaults to datetime.now(timezone.utc) """ if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) return len(PairLocks.get_pair_locks(pair, now, side)) > 0 or PairLocks.is_global_lock( now, side diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 5f24db69d..d898ea55e 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -6,9 +6,9 @@ import logging from collections import defaultdict from collections.abc import Sequence from dataclasses import dataclass -from datetime import datetime, timezone +from datetime import UTC, datetime from math import isclose -from typing import Any, ClassVar, Optional, cast +from typing import Any, ClassVar, Optional, Self, cast from sqlalchemy import ( Enum, @@ -25,7 +25,6 @@ from sqlalchemy import ( select, ) from sqlalchemy.orm import Mapped, lazyload, mapped_column, relationship, validates -from typing_extensions import Self from freqtrade.constants import ( CANCELED_EXCHANGE_STATES, @@ -114,20 +113,19 @@ class Order(ModelBase): order_update_date: Mapped[datetime | None] = mapped_column(nullable=True) funding_fee: Mapped[float | None] = mapped_column(Float(), nullable=True) + # Fee if paid in base currency ft_fee_base: Mapped[float | None] = mapped_column(Float(), nullable=True) ft_order_tag: Mapped[str | None] = mapped_column(String(CUSTOM_TAG_MAX_LENGTH), nullable=True) @property def order_date_utc(self) -> datetime: """Order-date with UTC timezoneinfo""" - return self.order_date.replace(tzinfo=timezone.utc) + return self.order_date.replace(tzinfo=UTC) @property def order_filled_utc(self) -> datetime | None: """last order-date with UTC timezoneinfo""" - return ( - self.order_filled_date.replace(tzinfo=timezone.utc) if self.order_filled_date else None - ) + return self.order_filled_date.replace(tzinfo=UTC) if self.order_filled_date else None @property def safe_amount(self) -> float: @@ -228,7 +226,7 @@ class Order(ModelBase): self.order_filled_date = dt_from_ts( safe_value_fallback(order, "lastTradeTimestamp", default_value=dt_ts()) ) - self.order_update_date = datetime.now(timezone.utc) + self.order_update_date = datetime.now(UTC) def to_ccxt_object(self, stopPriceName: str = "stopPrice") -> dict[str, Any]: order: dict[str, Any] = { @@ -285,7 +283,7 @@ class Order(ModelBase): self.order_date.strftime(DATETIME_PRINT_FORMAT) if self.order_date else None ), "order_timestamp": ( - int(self.order_date.replace(tzinfo=timezone.utc).timestamp() * 1000) + int(self.order_date.replace(tzinfo=UTC).timestamp() * 1000) if self.order_date else None ), @@ -532,7 +530,7 @@ class LocalTrade: @property def open_date_utc(self): - return self.open_date.replace(tzinfo=timezone.utc) + return self.open_date.replace(tzinfo=UTC) @property def stoploss_last_update_utc(self): @@ -542,7 +540,7 @@ class LocalTrade: @property def close_date_utc(self): - return self.close_date.replace(tzinfo=timezone.utc) if self.close_date else None + return self.close_date.replace(tzinfo=UTC) if self.close_date else None @property def entry_side(self) -> str: @@ -957,6 +955,10 @@ class LocalTrade: ) -> None: """ Update Fee parameters. Only acts once per side + :param fee_cost: Cost of the fee in stake currency + :param fee_currency: Currency the fee was paid in + :param fee_rate: Rate of the fee (e.g. 0.001 for 0.1%) + :param side: Side of the fee (buy / sell) """ if self.entry_side == side and self.fee_open_currency is None: self.fee_open_cost = fee_cost @@ -1027,12 +1029,12 @@ class LocalTrade: Calculate the open_rate including open_fee. :return: Price in of the open trade incl. Fees """ - open_trade = FtPrecise(amount) * FtPrecise(open_rate) - fees = open_trade * FtPrecise(self.fee_open) + open_value = FtPrecise(amount) * FtPrecise(open_rate) + fees = open_value * FtPrecise(self.fee_open) if self.is_short: - return float(open_trade - fees) + return float(open_value - fees) else: - return float(open_trade + fees) + return float(open_value + fees) def recalc_open_trade_value(self) -> None: """ @@ -1051,7 +1053,7 @@ class LocalTrade: return zero open_date = self.open_date.replace(tzinfo=None) - now = (self.close_date or datetime.now(timezone.utc)).replace(tzinfo=None) + now = (self.close_date or datetime.now(UTC)).replace(tzinfo=None) sec_per_hour = FtPrecise(3600) total_seconds = FtPrecise((now - open_date).total_seconds()) hours = total_seconds / sec_per_hour or zero @@ -1062,13 +1064,13 @@ class LocalTrade: return interest(exchange_name=self.exchange, borrowed=borrowed, rate=rate, hours=hours) def _calc_base_close(self, amount: FtPrecise, rate: float, fee: float | None) -> FtPrecise: - close_trade = amount * FtPrecise(rate) - fees = close_trade * FtPrecise(fee or 0.0) + close_value = amount * FtPrecise(rate) + fees = close_value * FtPrecise(fee or 0.0) if self.is_short: - return close_trade + fees + return close_value + fees else: - return close_trade - fees + return close_value - fees def calc_close_trade_value(self, rate: float, amount: float | None = None) -> float: """ @@ -1185,10 +1187,13 @@ class LocalTrade: """ close_trade_value = self.calc_close_trade_value(rate, amount) - if amount is None or open_rate is None: + if (amount is None) and (open_rate is None): open_trade_value = self.open_trade_value else: - open_trade_value = self._calc_open_trade_value(amount, open_rate) + # Fall back to trade.amount and self.open_rate if necessary + open_trade_value = self._calc_open_trade_value( + amount or self.amount, open_rate or self.open_rate + ) if open_trade_value == 0.0: return 0.0 @@ -1567,12 +1572,12 @@ class LocalTrade: fee_close=data["fee_close"], fee_close_cost=data.get("fee_close_cost"), fee_close_currency=data.get("fee_close_currency"), - open_date=datetime.fromtimestamp(data["open_timestamp"] // 1000, tz=timezone.utc), + open_date=datetime.fromtimestamp(data["open_timestamp"] // 1000, tz=UTC), open_rate=data["open_rate"], open_rate_requested=data.get("open_rate_requested", data["open_rate"]), open_trade_value=data.get("open_trade_value"), close_date=( - datetime.fromtimestamp(data["close_timestamp"] // 1000, tz=timezone.utc) + datetime.fromtimestamp(data["close_timestamp"] // 1000, tz=UTC) if data["close_timestamp"] else None ), @@ -1617,7 +1622,7 @@ class LocalTrade: if order.get("order_date") else None, order_filled_date=( - datetime.fromtimestamp(order["order_filled_timestamp"] // 1000, tz=timezone.utc) + datetime.fromtimestamp(order["order_filled_timestamp"] // 1000, tz=UTC) if order["order_filled_timestamp"] else None ), @@ -1627,6 +1632,7 @@ class LocalTrade: remaining=order.get("remaining", 0.0), funding_fee=order.get("funding_fee", None), ft_order_tag=order.get("ft_order_tag", None), + ft_fee_base=order.get("ft_fee_base", None), ) trade.orders.append(order_obj) @@ -1646,120 +1652,88 @@ class Trade(ModelBase, LocalTrade): use_db: bool = True - id: Mapped[int] = mapped_column(Integer, primary_key=True) # type: ignore + id: Mapped[int] = mapped_column(Integer, primary_key=True) orders: Mapped[list[Order]] = relationship( - "Order", order_by="Order.id", cascade="all, delete-orphan", lazy="selectin", innerjoin=True - ) # type: ignore + "Order", + order_by="Order.id", + cascade="all, delete-orphan", + lazy="selectin", + innerjoin=True, + back_populates="_trade_live", + ) custom_data: Mapped[list[_CustomData]] = relationship( "_CustomData", cascade="all, delete-orphan", lazy="raise" ) - exchange: Mapped[str] = mapped_column(String(25), nullable=False) # type: ignore - pair: Mapped[str] = mapped_column(String(25), nullable=False, index=True) # type: ignore - base_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) # type: ignore - stake_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) # type: ignore - is_open: Mapped[bool] = mapped_column(nullable=False, default=True, index=True) # type: ignore - fee_open: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) # type: ignore - fee_open_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - fee_open_currency: Mapped[str | None] = mapped_column( # type: ignore - String(25), nullable=True - ) - fee_close: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=False, default=0.0 - ) - fee_close_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - fee_close_currency: Mapped[str | None] = mapped_column( # type: ignore - String(25), nullable=True - ) - open_rate: Mapped[float] = mapped_column(Float()) # type: ignore - open_rate_requested: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) + exchange: Mapped[str] = mapped_column(String(25), nullable=False) + pair: Mapped[str] = mapped_column(String(25), nullable=False, index=True) + base_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + stake_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + is_open: Mapped[bool] = mapped_column(nullable=False, default=True, index=True) + fee_open: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) + # Fee cost in quote currency for entry the trade + fee_open_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) + # Currency the fee was paid in. Has no relation to fee_open_cost. + fee_open_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + fee_close: Mapped[float | None] = mapped_column(Float(), nullable=False, default=0.0) + # Fee cost in quote currency for exit orders + fee_close_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) + fee_close_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + open_rate: Mapped[float] = mapped_column(Float()) + open_rate_requested: Mapped[float | None] = mapped_column(Float(), nullable=True) # open_trade_value - calculated via _calc_open_trade_value - open_trade_value: Mapped[float] = mapped_column(Float(), nullable=True) # type: ignore - close_rate: Mapped[float | None] = mapped_column(Float()) # type: ignore - close_rate_requested: Mapped[float | None] = mapped_column(Float()) # type: ignore - realized_profit: Mapped[float] = mapped_column( # type: ignore - Float(), default=0.0, nullable=True - ) - close_profit: Mapped[float | None] = mapped_column(Float()) # type: ignore - close_profit_abs: Mapped[float | None] = mapped_column(Float()) # type: ignore - stake_amount: Mapped[float] = mapped_column(Float(), nullable=False) # type: ignore - max_stake_amount: Mapped[float | None] = mapped_column(Float()) # type: ignore - amount: Mapped[float] = mapped_column(Float()) # type: ignore - amount_requested: Mapped[float | None] = mapped_column(Float()) # type: ignore - open_date: Mapped[datetime] = mapped_column( # type: ignore - nullable=False, default=datetime.now - ) - close_date: Mapped[datetime | None] = mapped_column() # type: ignore + open_trade_value: Mapped[float] = mapped_column(Float(), nullable=True) + close_rate: Mapped[float | None] = mapped_column(Float()) + close_rate_requested: Mapped[float | None] = mapped_column(Float()) + realized_profit: Mapped[float] = mapped_column(Float(), default=0.0, nullable=True) + close_profit: Mapped[float | None] = mapped_column(Float()) + close_profit_abs: Mapped[float | None] = mapped_column(Float()) + stake_amount: Mapped[float] = mapped_column(Float(), nullable=False) + max_stake_amount: Mapped[float | None] = mapped_column(Float()) + amount: Mapped[float] = mapped_column(Float()) + amount_requested: Mapped[float | None] = mapped_column(Float()) + open_date: Mapped[datetime] = mapped_column(nullable=False, default=datetime.now) + close_date: Mapped[datetime | None] = mapped_column() # absolute value of the stop loss - stop_loss: Mapped[float] = mapped_column(Float(), nullable=True, default=0.0) # type: ignore + stop_loss: Mapped[float] = mapped_column(Float(), nullable=True, default=0.0) # percentage value of the stop loss - stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore + stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) # absolute value of the initial stop loss - initial_stop_loss: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=0.0 - ) + initial_stop_loss: Mapped[float | None] = mapped_column(Float(), nullable=True, default=0.0) # percentage value of the initial stop loss - initial_stop_loss_pct: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) - is_stop_loss_trailing: Mapped[bool] = mapped_column( # type: ignore - nullable=False, default=False - ) + initial_stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) + is_stop_loss_trailing: Mapped[bool] = mapped_column(nullable=False, default=False) # absolute value of the highest reached price - max_rate: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=0.0 - ) + max_rate: Mapped[float | None] = mapped_column(Float(), nullable=True, default=0.0) # Lowest price reached - min_rate: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - exit_reason: Mapped[str | None] = mapped_column( # type: ignore - String(CUSTOM_TAG_MAX_LENGTH), nullable=True - ) - exit_order_status: Mapped[str | None] = mapped_column( # type: ignore - String(100), nullable=True - ) - strategy: Mapped[str | None] = mapped_column(String(100), nullable=True) # type: ignore - enter_tag: Mapped[str | None] = mapped_column( # type: ignore - String(CUSTOM_TAG_MAX_LENGTH), nullable=True - ) - timeframe: Mapped[int | None] = mapped_column(Integer, nullable=True) # type: ignore + min_rate: Mapped[float | None] = mapped_column(Float(), nullable=True) + exit_reason: Mapped[str | None] = mapped_column(String(CUSTOM_TAG_MAX_LENGTH), nullable=True) + exit_order_status: Mapped[str | None] = mapped_column(String(100), nullable=True) + strategy: Mapped[str | None] = mapped_column(String(100), nullable=True) + enter_tag: Mapped[str | None] = mapped_column(String(CUSTOM_TAG_MAX_LENGTH), nullable=True) + timeframe: Mapped[int | None] = mapped_column(Integer, nullable=True) - trading_mode: Mapped[TradingMode] = mapped_column( # type: ignore - Enum(TradingMode), nullable=True - ) - amount_precision: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) - price_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - precision_mode: Mapped[int | None] = mapped_column(Integer, nullable=True) # type: ignore - precision_mode_price: Mapped[int | None] = mapped_column( # type: ignore - Integer, nullable=True - ) - contract_size: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore + trading_mode: Mapped[TradingMode] = mapped_column(Enum(TradingMode), nullable=True) + amount_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) + price_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) + precision_mode: Mapped[int | None] = mapped_column(Integer, nullable=True) + precision_mode_price: Mapped[int | None] = mapped_column(Integer, nullable=True) + contract_size: Mapped[float | None] = mapped_column(Float(), nullable=True) # Leverage trading properties - leverage: Mapped[float] = mapped_column(Float(), nullable=True, default=1.0) # type: ignore - is_short: Mapped[bool] = mapped_column(nullable=False, default=False) # type: ignore - liquidation_price: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) + leverage: Mapped[float] = mapped_column(Float(), nullable=True, default=1.0) + is_short: Mapped[bool] = mapped_column(nullable=False, default=False) + liquidation_price: Mapped[float | None] = mapped_column(Float(), nullable=True) # Margin Trading Properties - interest_rate: Mapped[float] = mapped_column( # type: ignore - Float(), nullable=False, default=0.0 - ) + interest_rate: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) # Futures properties - funding_fees: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=None - ) - funding_fee_running: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=None - ) + funding_fees: Mapped[float | None] = mapped_column(Float(), nullable=True, default=None) + funding_fee_running: Mapped[float | None] = mapped_column(Float(), nullable=True, default=None) - record_version: Mapped[int] = mapped_column(Integer, nullable=False, default=2) # type: ignore + record_version: Mapped[int] = mapped_column(Integer, nullable=False, default=2) def __init__(self, **kwargs): from_json = kwargs.pop("__FROM_JSON", None) @@ -1802,11 +1776,15 @@ class Trade(ModelBase, LocalTrade): close_date: datetime | None = None, ) -> list["LocalTrade"]: """ - Helper function to query Trades.j + Helper function to query Trades. Returns a List of trades, filtered on the parameters given. In live mode, converts the filter to a database query and returns all rows In Backtest mode, uses filters on Trade.bt_trades to get the result. - + :param pair: Filter by pair + :param is_open: Filter by open/closed status + :param open_date: Filter by open_date (filters via trade.open_date > input) + :param close_date: Filter by close_date (filters via trade.close_date > input) + and will implicitly only return closed trades. :return: unsorted List[Trade] """ if Trade.use_db: @@ -2115,32 +2093,34 @@ class Trade(ModelBase, LocalTrade): return resp @staticmethod - def get_best_pair(start_date: datetime | None = None): + def get_best_pair(trade_filter: list | None = None): """ Get best pair with closed trade. NOTE: Not supported in Backtesting. :returns: Tuple containing (pair, profit_sum) """ - filters: list = [Trade.is_open.is_(False)] - if start_date: - filters.append(Trade.close_date >= start_date) + if not trade_filter: + trade_filter = [] + trade_filter.append(Trade.is_open.is_(False)) - pair_rates_query = Trade._generic_performance_query([Trade.pair], filters) + pair_rates_query = Trade._generic_performance_query([Trade.pair], trade_filter) best_pair = Trade.session.execute(pair_rates_query).first() # returns pair, profit_ratio, abs_profit, count return best_pair @staticmethod - def get_trading_volume(start_date: datetime | None = None) -> float: + def get_trading_volume(trade_filter: list | None = None) -> float: """ Get Trade volume based on Orders NOTE: Not supported in Backtesting. :returns: Tuple containing (pair, profit_sum) """ - filters = [Order.status == "closed"] - if start_date: - filters.append(Order.order_filled_date >= start_date) + if not trade_filter: + trade_filter = [] + trade_filter.append(Order.status == "closed") trading_volume = Trade.session.execute( - select(func.sum(Order.cost).label("volume")).filter(*filters) + select(func.sum(Order.cost).label("volume")) + .join(Order._trade_live) + .filter(*trade_filter) ).scalar_one() return trading_volume or 0.0 diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 6419ab0c2..5c43ee404 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path import pandas as pd @@ -638,7 +638,7 @@ def load_and_plot_trades(config: Config): exchange = ExchangeResolver.load_exchange(config) IStrategy.dp = DataProvider(config, exchange) strategy.ft_bot_start() - strategy_safe_wrapper(strategy.bot_loop_start)(current_time=datetime.now(timezone.utc)) + strategy_safe_wrapper(strategy.bot_loop_start)(current_time=datetime.now(UTC)) plot_elements = init_plotscript(config, list(exchange.markets), strategy.startup_candle_count) timerange = plot_elements["timerange"] trades = plot_elements["trades"] diff --git a/freqtrade/plugins/pairlist/AgeFilter.py b/freqtrade/plugins/pairlist/AgeFilter.py index 03ba12770..1a6e8e3b7 100644 --- a/freqtrade/plugins/pairlist/AgeFilter.py +++ b/freqtrade/plugins/pairlist/AgeFilter.py @@ -31,8 +31,9 @@ class AgeFilter(IPairList): self._min_days_listed = self._pairlistconfig.get("min_days_listed", 10) self._max_days_listed = self._pairlistconfig.get("max_days_listed") + self._def_candletype = self._config["candle_type_def"] - candle_limit = self._exchange.ohlcv_candle_limit("1d", self._config["candle_type_def"]) + candle_limit = self._exchange.ohlcv_candle_limit("1d", self._def_candletype) if self._min_days_listed < 1: raise OperationalException("AgeFilter requires min_days_listed to be >= 1") if self._min_days_listed > candle_limit: @@ -100,7 +101,7 @@ class AgeFilter(IPairList): :return: new allowlist """ needed_pairs: ListPairsWithTimeframes = [ - (p, "1d", self._config["candle_type_def"]) + (p, "1d", self._def_candletype) for p in pairlist if p not in self._symbolsChecked and p not in self._symbolsCheckFailed ] @@ -116,8 +117,8 @@ class AgeFilter(IPairList): if self._enabled: for p in deepcopy(pairlist): daily_candles = ( - candles[(p, "1d", self._config["candle_type_def"])] - if (p, "1d", self._config["candle_type_def"]) in candles + candles[(p, "1d", self._def_candletype)] + if (p, "1d", self._def_candletype) in candles else None ) if not self._validate_pair_loc(p, daily_candles): diff --git a/freqtrade/plugins/pairlist/IPairList.py b/freqtrade/plugins/pairlist/IPairList.py index 89a9e68cd..9cb5d7744 100644 --- a/freqtrade/plugins/pairlist/IPairList.py +++ b/freqtrade/plugins/pairlist/IPairList.py @@ -251,6 +251,7 @@ class IPairList(LoggingMixin, ABC): f"Pair {pair} is not compatible with exchange " f"{self._exchange.name}. Removing it from whitelist..", logger.warning, + True, ) continue @@ -258,6 +259,7 @@ class IPairList(LoggingMixin, ABC): self.log_once( f"Pair {pair} is not tradable with Freqtrade. Removing it from whitelist..", logger.warning, + True, ) continue @@ -266,13 +268,18 @@ class IPairList(LoggingMixin, ABC): f"Pair {pair} is not compatible with your stake currency " f"{self._config['stake_currency']}. Removing it from whitelist..", logger.warning, + True, ) continue # Check if market is active market = markets[pair] if not market_is_active(market): - self.log_once(f"Ignoring {pair} from whitelist. Market is not active.", logger.info) + self.log_once( + f"Ignoring {pair} from whitelist. Market is not active.", + logger.info, + True, + ) continue if pair not in sanitized_whitelist: sanitized_whitelist.append(pair) diff --git a/freqtrade/plugins/pairlist/MarketCapPairList.py b/freqtrade/plugins/pairlist/MarketCapPairList.py index b95cec50f..79112b32e 100644 --- a/freqtrade/plugins/pairlist/MarketCapPairList.py +++ b/freqtrade/plugins/pairlist/MarketCapPairList.py @@ -37,7 +37,6 @@ class MarketCapPairList(IPairList): self._refresh_period = self._pairlistconfig.get("refresh_period", 86400) self._categories = self._pairlistconfig.get("categories", []) self._marketcap_cache: TTLCache = TTLCache(maxsize=1, ttl=self._refresh_period) - self._def_candletype = self._config["candle_type_def"] _coingecko_config = self._config.get("coingecko", {}) @@ -118,6 +117,16 @@ class MarketCapPairList(IPairList): }, } + def get_markets_exchange(self): + markets = [ + k + for k in self._exchange.get_markets( + quote_currencies=[self._stake_currency], tradable_only=True, active_only=True + ).keys() + ] + + return markets + def gen_pairlist(self, tickers: Tickers) -> list[str]: """ Generate the pairlist @@ -133,12 +142,8 @@ class MarketCapPairList(IPairList): else: # Use fresh pairlist # Check if pair quote currency equals to the stake currency. - _pairlist = [ - k - for k in self._exchange.get_markets( - quote_currencies=[self._stake_currency], tradable_only=True, active_only=True - ).keys() - ] + _pairlist = self.get_markets_exchange() + # No point in testing for blacklisted pairs... _pairlist = self.verify_blacklist(_pairlist, logger.info) @@ -147,6 +152,31 @@ class MarketCapPairList(IPairList): return pairlist + # Prefixes to test to discover coins like 1000PEPE/USDDT:USDT or KPEPE/USDC (hyperliquid) + prefixes = ("1000", "K") + + def resolve_marketcap_pair( + self, + pair: str, + pairlist: list[str], + markets: list[str], + filtered_pairlist: list[str], + ) -> str | None: + if pair in filtered_pairlist: + return None + + if pair in pairlist: + return pair + + if pair not in markets: + for prefix in self.prefixes: + test_prefix = f"{prefix}{pair}" + + if test_prefix in pairlist: + return test_prefix + + return None + def filter_pairlist(self, pairlist: list[str], tickers: dict) -> list[str]: """ Filters and sorts pairlist and returns the whitelist again. @@ -189,21 +219,25 @@ class MarketCapPairList(IPairList): self._marketcap_cache["marketcap"] = marketcap_list if marketcap_list: - filtered_pairlist = [] + filtered_pairlist: list[str] = [] - market = self._config["trading_mode"] + market = self._exchange._config["trading_mode"] pair_format = f"{self._stake_currency.upper()}" if market == "futures": pair_format += f":{self._stake_currency.upper()}" top_marketcap = marketcap_list[: self._max_rank :] + markets = self.get_markets_exchange() for mc_pair in top_marketcap: - test_pair = f"{mc_pair.upper()}/{pair_format}" - if test_pair in pairlist and test_pair not in filtered_pairlist: - filtered_pairlist.append(test_pair) - if len(filtered_pairlist) == self._number_assets: - break + pair = f"{mc_pair.upper()}/{pair_format}" + resolved = self.resolve_marketcap_pair(pair, pairlist, markets, filtered_pairlist) + + if resolved: + filtered_pairlist.append(resolved) + + if len(filtered_pairlist) == self._number_assets: + break if len(filtered_pairlist) > 0: return filtered_pairlist diff --git a/freqtrade/plugins/pairlist/PercentChangePairList.py b/freqtrade/plugins/pairlist/PercentChangePairList.py index 4f91a47d1..7f09cf77d 100644 --- a/freqtrade/plugins/pairlist/PercentChangePairList.py +++ b/freqtrade/plugins/pairlist/PercentChangePairList.py @@ -91,7 +91,7 @@ class PercentChangePairList(IPairList): ) candle_limit = self._exchange.ohlcv_candle_limit( - self._lookback_timeframe, self._config["candle_type_def"] + self._lookback_timeframe, self._def_candletype ) if self._lookback_period > candle_limit: diff --git a/freqtrade/plugins/pairlist/VolatilityFilter.py b/freqtrade/plugins/pairlist/VolatilityFilter.py index 87ca488c1..84056564a 100644 --- a/freqtrade/plugins/pairlist/VolatilityFilter.py +++ b/freqtrade/plugins/pairlist/VolatilityFilter.py @@ -40,7 +40,7 @@ class VolatilityFilter(IPairList): self._pair_cache: TTLCache = TTLCache(maxsize=1000, ttl=self._refresh_period) - candle_limit = self._exchange.ohlcv_candle_limit("1d", self._config["candle_type_def"]) + candle_limit = self._exchange.ohlcv_candle_limit("1d", self._def_candletype) if self._days < 1: raise OperationalException("VolatilityFilter requires lookback_days to be >= 1") if self._days > candle_limit: diff --git a/freqtrade/plugins/pairlist/VolumePairList.py b/freqtrade/plugins/pairlist/VolumePairList.py index b8f806858..63de5ad2d 100644 --- a/freqtrade/plugins/pairlist/VolumePairList.py +++ b/freqtrade/plugins/pairlist/VolumePairList.py @@ -89,7 +89,7 @@ class VolumePairList(IPairList): raise OperationalException(f"key {self._sort_key} not in {SORT_VALUES}") candle_limit = self._exchange.ohlcv_candle_limit( - self._lookback_timeframe, self._config["candle_type_def"] + self._lookback_timeframe, self._def_candletype ) if self._lookback_period < 0: raise OperationalException("VolumeFilter requires lookback_period to be >= 0") diff --git a/freqtrade/plugins/pairlist/rangestabilityfilter.py b/freqtrade/plugins/pairlist/rangestabilityfilter.py index ca5543bb0..8ea082658 100644 --- a/freqtrade/plugins/pairlist/rangestabilityfilter.py +++ b/freqtrade/plugins/pairlist/rangestabilityfilter.py @@ -34,7 +34,7 @@ class RangeStabilityFilter(IPairList): self._pair_cache: TTLCache = TTLCache(maxsize=1000, ttl=self._refresh_period) - candle_limit = self._exchange.ohlcv_candle_limit("1d", self._config["candle_type_def"]) + candle_limit = self._exchange.ohlcv_candle_limit("1d", self._def_candletype) if self._days < 1: raise OperationalException("RangeStabilityFilter requires lookback_days to be >= 1") if self._days > candle_limit: diff --git a/freqtrade/plugins/pairlistmanager.py b/freqtrade/plugins/pairlistmanager.py index 73786cba6..bc66d00c3 100644 --- a/freqtrade/plugins/pairlistmanager.py +++ b/freqtrade/plugins/pairlistmanager.py @@ -61,7 +61,7 @@ class PairListManager(LoggingMixin): LoggingMixin.__init__(self, logger, refresh_period) def _check_backtest(self) -> None: - if self._config["runmode"] not in (RunMode.BACKTEST, RunMode.EDGE, RunMode.HYPEROPT): + if self._config["runmode"] not in (RunMode.BACKTEST, RunMode.HYPEROPT): return pairlist_errors: list[str] = [] diff --git a/freqtrade/plugins/protectionmanager.py b/freqtrade/plugins/protectionmanager.py index 187b9ee63..0eda8422f 100644 --- a/freqtrade/plugins/protectionmanager.py +++ b/freqtrade/plugins/protectionmanager.py @@ -3,7 +3,7 @@ Protection manager class """ import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from typing import Any from freqtrade.constants import Config, LongShort @@ -49,7 +49,7 @@ class ProtectionManager: def global_stop(self, now: datetime | None = None, side: LongShort = "long") -> PairLock | None: if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) result = None for protection_handler in self._protection_handlers: if protection_handler.has_global_stop: @@ -65,7 +65,7 @@ class ProtectionManager: self, pair, now: datetime | None = None, side: LongShort = "long" ) -> PairLock | None: if not now: - now = datetime.now(timezone.utc) + now = datetime.now(UTC) result = None for protection_handler in self._protection_handlers: if protection_handler.has_local_stop: diff --git a/freqtrade/plugins/protections/iprotection.py b/freqtrade/plugins/protections/iprotection.py index 38a726dcc..8f2f51729 100644 --- a/freqtrade/plugins/protections/iprotection.py +++ b/freqtrade/plugins/protections/iprotection.py @@ -1,7 +1,7 @@ import logging from abc import ABC, abstractmethod from dataclasses import dataclass -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from typing import Any from freqtrade.constants import Config, LongShort @@ -127,7 +127,7 @@ class IProtection(LoggingMixin, ABC): max_date: datetime = max([trade.close_date for trade in trades if trade.close_date]) # coming from Database, tzinfo is not set. if max_date.tzinfo is None: - max_date = max_date.replace(tzinfo=timezone.utc) + max_date = max_date.replace(tzinfo=UTC) if self._unlock_at is not None: # unlock_at case with fixed hour of the day diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index b56ed8e11..2a9bf27e8 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -54,7 +54,7 @@ class StrategyResolver(IResolver): strategy.ft_load_params_from_file() # Set attributes # Check if we need to override configuration - # (Attribute name, default, subkey) + # (Attribute name, default, subkey) attributes = [ ("minimal_roi", {"0": 10.0}), ("timeframe", None), @@ -79,7 +79,7 @@ class StrategyResolver(IResolver): ("ignore_buying_expired_candle_after", 0), ("position_adjustment_enable", False), ("max_entry_position_adjustment", -1), - ("max_open_trades", -1), + ("max_open_trades", float("inf")), ] for attribute, default in attributes: StrategyResolver._override_attribute_helper(strategy, config, attribute, default) diff --git a/freqtrade/rpc/api_server/api_auth.py b/freqtrade/rpc/api_server/api_auth.py index 5f63c0aa5..44ed3db57 100644 --- a/freqtrade/rpc/api_server/api_auth.py +++ b/freqtrade/rpc/api_server/api_auth.py @@ -1,6 +1,6 @@ import logging import secrets -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from typing import Any import jwt @@ -89,15 +89,15 @@ async def validate_ws_token( def create_token(data: dict, secret_key: str, token_type: str = "access") -> str: # noqa: S107 to_encode = data.copy() if token_type == "access": # noqa: S105 - expire = datetime.now(timezone.utc) + timedelta(minutes=15) + expire = datetime.now(UTC) + timedelta(minutes=15) elif token_type == "refresh": # noqa: S105 - expire = datetime.now(timezone.utc) + timedelta(days=30) + expire = datetime.now(UTC) + timedelta(days=30) else: raise ValueError() to_encode.update( { "exp": expire, - "iat": datetime.now(timezone.utc), + "iat": datetime.now(UTC), "type": token_type, } ) diff --git a/freqtrade/rpc/api_server/api_backtest.py b/freqtrade/rpc/api_server/api_backtest.py index 5d06e8a48..b553bc1fa 100644 --- a/freqtrade/rpc/api_server/api_backtest.py +++ b/freqtrade/rpc/api_server/api_backtest.py @@ -8,6 +8,7 @@ from typing import Any from fastapi import APIRouter, BackgroundTasks, Depends from fastapi.exceptions import HTTPException +from freqtrade.configuration import remove_exchange_credentials from freqtrade.configuration.config_validation import validate_config_consistency from freqtrade.constants import Config from freqtrade.data.btanalysis import ( @@ -20,7 +21,6 @@ from freqtrade.data.btanalysis import ( ) from freqtrade.enums import BacktestState from freqtrade.exceptions import ConfigurationError, DependencyException, OperationalException -from freqtrade.exchange.common import remove_exchange_credentials from freqtrade.ft_types import get_BacktestResultType_default from freqtrade.misc import deep_merge_dicts, is_file_in_dir from freqtrade.rpc.api_server.api_schemas import ( @@ -62,7 +62,6 @@ def __run_backtest_bg(btconfig: Config): from freqtrade.optimize.backtesting import Backtesting ApiBG.bt["bt"] = Backtesting(btconfig) - ApiBG.bt["bt"].load_bt_data_detail() else: ApiBG.bt["bt"].config = btconfig ApiBG.bt["bt"].init_backtest() @@ -96,7 +95,10 @@ def __run_backtest_bg(btconfig: Config): ) ApiBG.bt["bt"].results = generate_backtest_stats( - ApiBG.bt["data"], ApiBG.bt["bt"].all_results, min_date=min_date, max_date=max_date + ApiBG.bt["data"], + ApiBG.bt["bt"].all_bt_content, + min_date=min_date, + max_date=max_date, ) if btconfig.get("export", "none") == "trades": diff --git a/freqtrade/rpc/api_server/api_pairlists.py b/freqtrade/rpc/api_server/api_pairlists.py index 727798566..094b9f8e2 100644 --- a/freqtrade/rpc/api_server/api_pairlists.py +++ b/freqtrade/rpc/api_server/api_pairlists.py @@ -54,6 +54,7 @@ def __run_pairlist(job_id: str, config_loc: Config): with FtNoDBContext(): exchange = get_exchange(config_loc) + config_loc["candle_type_def"] = exchange._config["candle_type_def"] pairlists = PairListManager(exchange, config_loc) pairlists.refresh_pairlist() ApiBG.jobs[job_id]["result"] = { diff --git a/freqtrade/rpc/api_server/api_schemas.py b/freqtrade/rpc/api_server/api_schemas.py index 975166458..dfc78daf6 100644 --- a/freqtrade/rpc/api_server/api_schemas.py +++ b/freqtrade/rpc/api_server/api_schemas.py @@ -5,7 +5,7 @@ from pydantic import AwareDatetime, BaseModel, RootModel, SerializeAsAny, model_ from freqtrade.constants import DL_DATA_TIMEFRAMES, IntOrInf from freqtrade.enums import MarginMode, OrderTypeValues, SignalDirection, TradingMode -from freqtrade.ft_types import ValidExchangesType +from freqtrade.ft_types import AnnotationType, ValidExchangesType from freqtrade.rpc.api_server.webserver_bgwork import ProgressTask @@ -163,11 +163,22 @@ class Profit(BaseModel): max_drawdown_start_timestamp: int max_drawdown_end: str max_drawdown_end_timestamp: int + current_drawdown: float + current_drawdown_abs: float + current_drawdown_high: float + current_drawdown_start: str + current_drawdown_start_timestamp: int trading_volume: float | None = None bot_start_timestamp: int bot_start_date: str +class ProfitAll(BaseModel): + all: Profit + long: Profit | None = None + short: Profit | None = None + + class SellReason(BaseModel): wins: int losses: int @@ -539,6 +550,7 @@ class PairHistory(BaseModel): columns: list[str] all_columns: list[str] = [] data: SerializeAsAny[list[Any]] + annotations: list[AnnotationType] | None = None length: int buy_signals: int sell_signals: int diff --git a/freqtrade/rpc/api_server/api_v1.py b/freqtrade/rpc/api_server/api_v1.py index 0081871f0..dc9682b09 100644 --- a/freqtrade/rpc/api_server/api_v1.py +++ b/freqtrade/rpc/api_server/api_v1.py @@ -43,6 +43,7 @@ from freqtrade.rpc.api_server.api_schemas import ( Ping, PlotConfig, Profit, + ProfitAll, ResultMsg, ShowConfig, Stats, @@ -89,7 +90,8 @@ logger = logging.getLogger(__name__) # 2.40: Add hyperopt-loss endpoint # 2.41: Add download-data endpoint # 2.42: Add /pair_history endpoint with live data -API_VERSION = 2.42 +# 2.43: Add /profit_all endpoint +API_VERSION = 2.43 # Public API, requires no auth. router_public = APIRouter() @@ -148,6 +150,24 @@ def profit(rpc: RPC = Depends(get_rpc), config=Depends(get_config)): return rpc._rpc_trade_statistics(config["stake_currency"], config.get("fiat_display_currency")) +@router.get("/profit_all", response_model=ProfitAll, tags=["info"]) +def profit_all(rpc: RPC = Depends(get_rpc), config=Depends(get_config)): + response = { + "all": rpc._rpc_trade_statistics( + config["stake_currency"], config.get("fiat_display_currency") + ), + } + if config.get("trading_mode", TradingMode.SPOT) != TradingMode.SPOT: + response["long"] = rpc._rpc_trade_statistics( + config["stake_currency"], config.get("fiat_display_currency"), direction="long" + ) + response["short"] = rpc._rpc_trade_statistics( + config["stake_currency"], config.get("fiat_display_currency"), direction="short" + ) + + return response + + @router.get("/stats", response_model=Stats, tags=["info"]) def stats(rpc: RPC = Depends(get_rpc)): return rpc._rpc_stats() @@ -200,9 +220,12 @@ def status(rpc: RPC = Depends(get_rpc)): def trades( limit: int = Query(500, ge=1, description="Maximum number of different trades to return data"), offset: int = Query(0, ge=0, description="Number of trades to skip for pagination"), + order_by_id: bool = Query( + True, description="Sort trades by id (default: True). If False, sorts by latest timestamp" + ), rpc: RPC = Depends(get_rpc), ): - return rpc._rpc_trade_history(limit, offset=offset, order_by_id=True) + return rpc._rpc_trade_history(limit, offset=offset, order_by_id=order_by_id) @router.get("/trade/{tradeid}", response_model=OpenTradeSchema, tags=["info", "trading"]) @@ -260,12 +283,6 @@ def list_custom_data(trade_id: int, key: str | None = Query(None), rpc: RPC = De raise HTTPException(status_code=404, detail=str(e)) -# TODO: Missing response model -@router.get("/edge", tags=["info"]) -def edge(rpc: RPC = Depends(get_rpc)): - return rpc._rpc_edge() - - @router.get("/show_config", response_model=ShowConfig, tags=["info"]) def show_config(rpc: RPC | None = Depends(get_rpc_optional), config=Depends(get_config)): state: State | str = "" diff --git a/freqtrade/rpc/api_server/webserver_bgwork.py b/freqtrade/rpc/api_server/webserver_bgwork.py index 4c335a2f2..75aadb78e 100644 --- a/freqtrade/rpc/api_server/webserver_bgwork.py +++ b/freqtrade/rpc/api_server/webserver_bgwork.py @@ -1,7 +1,7 @@ -from typing import Any, Literal +from typing import Any, Literal, NotRequired from uuid import uuid4 -from typing_extensions import NotRequired, TypedDict +from typing_extensions import TypedDict from freqtrade.exchange.exchange import Exchange diff --git a/freqtrade/rpc/api_server/ws/channel.py b/freqtrade/rpc/api_server/ws/channel.py index bf5d64b6c..1a7a4bde6 100644 --- a/freqtrade/rpc/api_server/ws/channel.py +++ b/freqtrade/rpc/api_server/ws/channel.py @@ -102,7 +102,7 @@ class WebSocketChannel: self._send_times.append(total_time) self._calc_send_limit() - except asyncio.TimeoutError: + except TimeoutError: logger.info(f"Connection for {self} timed out, disconnecting") raise @@ -201,8 +201,8 @@ class WebSocketChannel: try: await task except ( + TimeoutError, asyncio.CancelledError, - asyncio.TimeoutError, WebSocketDisconnect, ConnectionClosed, RuntimeError, diff --git a/freqtrade/rpc/external_message_consumer.py b/freqtrade/rpc/external_message_consumer.py index fe22613bd..0a11fbefe 100644 --- a/freqtrade/rpc/external_message_consumer.py +++ b/freqtrade/rpc/external_message_consumer.py @@ -266,7 +266,7 @@ class ExternalMessageConsumer: except Exception as e: logger.exception(f"Error handling producer message: {e}") - except (asyncio.TimeoutError, websockets.exceptions.ConnectionClosed): + except (TimeoutError, websockets.exceptions.ConnectionClosed): # We haven't received data yet. Check the connection and continue. try: # ping diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 8903c7f2c..868b10d7d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -5,7 +5,7 @@ This module contains class to define a RPC communications import logging from abc import abstractmethod from collections.abc import Generator, Sequence -from datetime import date, datetime, timedelta, timezone +from datetime import UTC, date, datetime, timedelta from typing import TYPE_CHECKING, Any import psutil @@ -32,9 +32,10 @@ from freqtrade.enums import ( from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_msecs from freqtrade.exchange.exchange_utils import price_to_precision +from freqtrade.ft_types import AnnotationType from freqtrade.loggers import bufferHandler -from freqtrade.persistence import CustomDataWrapper, KeyStoreKeys, KeyValueStore, PairLocks, Trade -from freqtrade.persistence.models import PairLock +from freqtrade.persistence import CustomDataWrapper, KeyValueStore, Order, PairLocks, Trade +from freqtrade.persistence.models import PairLock, custom_data_rpc_wrapper from freqtrade.plugins.pairlist.pairlist_helpers import expand_pairlist from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.rpc_types import RPCSendMsg @@ -374,7 +375,7 @@ class RPC: """ :param timeunit: Valid entries are 'days', 'weeks', 'months' """ - start_date = datetime.now(timezone.utc).date() + start_date = datetime.now(UTC).date() if timeunit == "weeks": # weekly start_date = start_date - timedelta(days=start_date.weekday()) # Monday @@ -501,20 +502,13 @@ class RPC: durations = {"wins": wins_dur, "draws": draws_dur, "losses": losses_dur} return {"exit_reasons": exit_reasons, "durations": durations} - def _rpc_trade_statistics( - self, stake_currency: str, fiat_display_currency: str, start_date: datetime | None = None + def _collect_trade_statistics_data( + self, + trades: Sequence["Trade"], + stake_currency: str, + fiat_display_currency: str, ) -> dict[str, Any]: - """Returns cumulative profit statistics""" - - start_date = datetime.fromtimestamp(0) if start_date is None else start_date - - trade_filter = ( - Trade.is_open.is_(False) & (Trade.close_date >= start_date) - ) | Trade.is_open.is_(True) - trades: Sequence[Trade] = Trade.session.scalars( - Trade.get_trades_query(trade_filter, include_orders=False).order_by(Trade.id) - ).all() - + """Iterate trades, calculate various statistics, and return intermediate results.""" profit_all_coin = [] profit_all_ratio = [] profit_closed_coin = [] @@ -543,7 +537,7 @@ class RPC: losing_trades += 1 losing_profit += profit_abs else: - # Get current rate + # Get current rate for open trades if len(trade.select_filled_orders(trade.entry_side)) == 0: # Skip trades with no filled orders continue @@ -557,17 +551,74 @@ class RPC: profit_abs = nan else: _profit = trade.calculate_profit(trade.close_rate or current_rate) - profit_ratio = _profit.profit_ratio profit_abs = _profit.total_profit profit_all_coin.append(profit_abs) profit_all_ratio.append(profit_ratio) + return { + "profit_all_coin": profit_all_coin, + "profit_all_ratio": profit_all_ratio, + "profit_closed_coin": profit_closed_coin, + "profit_closed_ratio": profit_closed_ratio, + "durations": durations, + "winning_trades": winning_trades, + "losing_trades": losing_trades, + "winning_profit": winning_profit, + "losing_profit": losing_profit, + } + + def _rpc_trade_statistics( + self, + stake_currency: str, + fiat_display_currency: str, + start_date: datetime | None = None, + direction: str | None = None, + ) -> dict[str, Any]: + """ + Returns cumulative profit statistics, with optional direction filter (long/short) + """ + start_date = datetime.fromtimestamp(0) if start_date is None else start_date + + trade_filter = ( + Trade.is_open.is_(False) & (Trade.close_date >= start_date) + ) | Trade.is_open.is_(True) + + if direction == "long": + dir_filter = Trade.is_short.is_(False) + trade_filter = trade_filter & dir_filter + elif direction == "short": + dir_filter = Trade.is_short.is_(True) + trade_filter = trade_filter & dir_filter + + trades: Sequence[Trade] = Trade.session.scalars( + Trade.get_trades_query(trade_filter, include_orders=False).order_by(Trade.id) + ).all() + + stats = self._collect_trade_statistics_data(trades, stake_currency, fiat_display_currency) + + profit_all_coin = stats["profit_all_coin"] + profit_all_ratio = stats["profit_all_ratio"] + profit_closed_coin = stats["profit_closed_coin"] + profit_closed_ratio = stats["profit_closed_ratio"] + durations = stats["durations"] + winning_trades = stats["winning_trades"] + losing_trades = stats["losing_trades"] + winning_profit = stats["winning_profit"] + losing_profit = stats["losing_profit"] + closed_trade_count = len([t for t in trades if not t.is_open]) - best_pair = Trade.get_best_pair(start_date) - trading_volume = Trade.get_trading_volume(start_date) + best_pair_filters = [Trade.close_date > start_date] + trading_volume_filters = [Order.order_filled_date >= start_date] + + if direction: + best_pair_filters.append(dir_filter) + trading_volume_filters.append(dir_filter) + + best_pair = Trade.get_best_pair(best_pair_filters) + trading_volume = Trade.get_trading_volume(trading_volume_filters) # Prepare data to display profit_closed_coin_sum = round(sum(profit_closed_coin), 8) @@ -635,7 +686,7 @@ class RPC: first_date = trades[0].open_date_utc if trades else None last_date = trades[-1].open_date_utc if trades else None num = float(len(durations) or 1) - bot_start = KeyValueStore.get_datetime_value(KeyStoreKeys.BOT_START_TIME) + bot_start = KeyValueStore.get_datetime_value("bot_start_time") return { "profit_closed_coin": profit_closed_coin_sum, "profit_closed_percent_mean": round(profit_closed_ratio_mean * 100, 2), @@ -680,6 +731,11 @@ class RPC: "max_drawdown_end_timestamp": dt_ts_def(drawdown.low_date), "drawdown_high": drawdown.high_value, "drawdown_low": drawdown.low_value, + "current_drawdown": drawdown.current_relative_account_drawdown, + "current_drawdown_abs": drawdown.current_drawdown_abs, + "current_drawdown_high": drawdown.current_high_value, + "current_drawdown_start": format_date(drawdown.current_high_date), + "current_drawdown_start_timestamp": dt_ts_def(drawdown.current_high_date), "trading_volume": trading_volume, "bot_start_timestamp": dt_ts_def(bot_start, 0), "bot_start_date": format_date(bot_start), @@ -1093,7 +1149,7 @@ class RPC: trade = Trade.get_trades(trade_filter=[Trade.id == trade_id]).first() if not trade: logger.warning("delete trade: Invalid argument received") - raise RPCException("invalid argument") + raise RPCException(f"Trade with id '{trade_id}' not found.") # Try cancelling regular order if that exists for open_order in trade.open_orders: @@ -1114,16 +1170,20 @@ class RPC: c_count += 1 except ExchangeError: pass - + trade_pair = trade.pair trade.delete() self._freqtrade.wallets.update() return { "result": "success", "trade_id": trade_id, - "result_msg": f"Deleted trade {trade_id}. Closed {c_count} open orders.", + "result_msg": ( + f"Deleted trade #{trade_id} for pair {trade_pair}. " + f"Closed {c_count} open orders." + ), "cancel_order_count": c_count, } + @custom_data_rpc_wrapper def _rpc_list_custom_data( self, trade_id: int | None = None, key: str | None = None, limit: int = 100, offset: int = 0 ) -> list[dict[str, Any]]: @@ -1136,6 +1196,7 @@ class RPC: - "custom_data": a list of custom data dicts, each with the fields: "id", "key", "type", "value", "created_at", "updated_at" """ + trades: Sequence[Trade] if trade_id is None: # Get all open trades @@ -1256,7 +1317,7 @@ class RPC: for lock in locks: lock.active = False - lock.lock_end_time = datetime.now(timezone.utc) + lock.lock_end_time = datetime.now(UTC) Trade.commit() @@ -1342,12 +1403,6 @@ class RPC: return {"log_count": len(records), "logs": records} - def _rpc_edge(self) -> list[dict[str, Any]]: - """Returns information related to Edge""" - if not self._freqtrade.edge: - raise RPCException("Edge is not enabled.") - return self._freqtrade.edge.accepted_pairs() - @staticmethod def _convert_dataframe_to_dict( strategy: str, @@ -1356,6 +1411,7 @@ class RPC: dataframe: DataFrame, last_analyzed: datetime, selected_cols: list[str] | None, + annotations: list[AnnotationType], ) -> dict[str, Any]: has_content = len(dataframe) != 0 dataframe_columns = list(dataframe.columns) @@ -1411,6 +1467,7 @@ class RPC: "data_start_ts": 0, "data_stop": "", "data_stop_ts": 0, + "annotations": annotations, } if has_content: res.update( @@ -1429,8 +1486,16 @@ class RPC: """Analyzed dataframe in Dict form""" _data, last_analyzed = self.__rpc_analysed_dataframe_raw(pair, timeframe, limit) + annotations = self._freqtrade.strategy.ft_plot_annotations(pair=pair, dataframe=_data) + return RPC._convert_dataframe_to_dict( - self._freqtrade.config["strategy"], pair, timeframe, _data, last_analyzed, selected_cols + self._freqtrade.config["strategy"], + pair, + timeframe, + _data, + last_analyzed, + selected_cols, + annotations, ) def __rpc_analysed_dataframe_raw( @@ -1531,6 +1596,7 @@ class RPC: ) data = _data[pair] + annotations = [] if config.get("strategy"): strategy.dp = DataProvider(config, exchange=exchange, pairlists=None) strategy.ft_bot_start() @@ -1539,6 +1605,8 @@ class RPC: df_analyzed = trim_dataframe( df_analyzed, timerange_parsed, startup_candles=startup_candles ) + annotations = strategy.ft_plot_annotations(pair=pair, dataframe=df_analyzed) + else: df_analyzed = data @@ -1549,6 +1617,7 @@ class RPC: df_analyzed.copy(), dt_now(), selected_cols, + annotations, ) def _rpc_plot_config(self) -> dict[str, Any]: @@ -1601,7 +1670,7 @@ class RPC: } ) - if bot_start := KeyValueStore.get_datetime_value(KeyStoreKeys.BOT_START_TIME): + if bot_start := KeyValueStore.get_datetime_value("bot_start_time"): res.update( { "bot_start": str(bot_start), @@ -1609,7 +1678,7 @@ class RPC: "bot_start_ts": int(bot_start.timestamp()), } ) - if bot_startup := KeyValueStore.get_datetime_value(KeyStoreKeys.STARTUP_TIME): + if bot_startup := KeyValueStore.get_datetime_value("startup_time"): res.update( { "bot_startup": str(bot_startup), diff --git a/freqtrade/rpc/rpc_types.py b/freqtrade/rpc/rpc_types.py index ad6138a91..23ff23717 100644 --- a/freqtrade/rpc/rpc_types.py +++ b/freqtrade/rpc/rpc_types.py @@ -56,7 +56,8 @@ class __RPCEntryExitMsgBase(RPCSendMsgBase): quote_currency: str leverage: float | None direction: str - limit: float + limit: float # Deprecated, use order_rate instead + order_rate: float open_rate: float order_type: str stake_amount: float @@ -87,7 +88,6 @@ class RPCExitMsg(__RPCEntryExitMsgBase): exit_reason: str | None close_date: datetime # current_rate: float | None - order_rate: float | None final_profit_ratio: float | None is_final_exit: bool diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index f3f4a4196..f19217dae 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -191,8 +191,8 @@ class Telegram(RPCHandler): r"/mix_tags", r"/daily$", r"/daily \d+$", - r"/profit$", - r"/profit \d+", + r"/profit([_ ]long|[_ ]short)?$", + r"/profit([_ ]long|[_ ]short)? \d+$", r"/stats$", r"/count$", r"/locks$", @@ -215,7 +215,6 @@ class Telegram(RPCHandler): r"/forceshort$", r"/forcesell$", r"/forceexit$", - r"/edge$", r"/health$", r"/help$", r"/version$", @@ -299,7 +298,6 @@ class Telegram(RPCHandler): CommandHandler("blacklist", self._blacklist), CommandHandler(["blacklist_delete", "bl_delete"], self._blacklist_delete), CommandHandler("logs", self._logs), - CommandHandler("edge", self._edge), CommandHandler("health", self._health), CommandHandler("help", self._help), CommandHandler("version", self._version), @@ -307,13 +305,17 @@ class Telegram(RPCHandler): CommandHandler("order", self._order), CommandHandler("list_custom_data", self._list_custom_data), CommandHandler("tg_info", self._tg_info), + CommandHandler("profit_long", self._profit_long), + CommandHandler("profit_short", self._profit_short), ] callbacks = [ CallbackQueryHandler(self._status_table, pattern="update_status_table"), CallbackQueryHandler(self._daily, pattern="update_daily"), CallbackQueryHandler(self._weekly, pattern="update_weekly"), CallbackQueryHandler(self._monthly, pattern="update_monthly"), - CallbackQueryHandler(self._profit, pattern="update_profit"), + CallbackQueryHandler(self._profit_long, pattern="update_profit_long"), + CallbackQueryHandler(self._profit_short, pattern="update_profit_short"), + CallbackQueryHandler(self._profit, pattern=r"update_profit$"), CallbackQueryHandler(self._balance, pattern="update_balance"), CallbackQueryHandler(self._performance, pattern="update_performance"), CallbackQueryHandler( @@ -340,8 +342,22 @@ class Telegram(RPCHandler): self._loop.run_until_complete(self._startup_telegram()) async def _startup_telegram(self) -> None: - await self._app.initialize() - await self._app.start() + retries = 3 + attempt = 0 + while attempt < retries: + try: + await self._app.initialize() + await self._app.start() + break + except Exception as ex: + logger.error( + "Error starting Telegram bot (attempt %d/%d): %s", attempt + 1, retries, ex + ) + attempt += 1 + if attempt == retries: + logger.warning("Telegram init failed.") + return + await asyncio.sleep(2) if self._app.updater: await self._app.updater.start_polling( bootstrap_retries=-1, @@ -997,29 +1013,25 @@ class Telegram(RPCHandler): """ await self._timeunit_stats(update, context, "months") - @authorized_only - async def _profit(self, update: Update, context: CallbackContext) -> None: + def _format_profit_message( + self, + stats: dict, + stake_cur: str, + fiat_disp_cur: str, + timescale: int | None = None, + direction: str | None = None, + ) -> str: """ - Handler for /profit. - Returns a cumulative profit statistics. - :param bot: telegram bot - :param update: message update - :return: None + Format profit statistics message for telegram. + + :param stats: Trade statistics dictionary + :param stake_cur: Stake currency + :param fiat_disp_cur: Fiat display currency + :param timescale: Optional timescale filter + :param direction: Optional direction filter ('long', 'short', or None for all) + :return: Formatted markdown message """ - stake_cur = self._config["stake_currency"] - fiat_disp_cur = self._config.get("fiat_display_currency", "") - - start_date = datetime.fromtimestamp(0) - timescale = None - try: - if context.args: - timescale = int(context.args[0]) - 1 - today_start = datetime.combine(date.today(), datetime.min.time()) - start_date = today_start - timedelta(days=timescale) - except (TypeError, ValueError, IndexError): - pass - - stats = self._rpc._rpc_trade_statistics(stake_cur, fiat_disp_cur, start_date) + # Extract common variables profit_closed_coin = stats["profit_closed_coin"] profit_closed_ratio_mean = stats["profit_closed_ratio_mean"] profit_closed_percent = stats["profit_closed_percent"] @@ -1039,59 +1051,153 @@ class Telegram(RPCHandler): expectancy = stats["expectancy"] expectancy_ratio = stats["expectancy_ratio"] + # Direction-specific labels + direction_label = f" {direction}" if direction else "" + no_trades_msg = ( + f"No{direction_label} trades yet.\n*Bot started:* `{stats['bot_start_date']}`" + ) + no_closed_msg = f"`No closed{direction_label} trade` \n" + closed_roi_label = f"*ROI:* Closed{direction_label} trades" + all_roi_label = f"*ROI:* All{direction_label} trades" + if stats["trade_count"] == 0: - markdown_msg = f"No trades yet.\n*Bot started:* `{stats['bot_start_date']}`" + return no_trades_msg + + # Build message + if stats["closed_trade_count"] > 0: + fiat_closed_trades = ( + f"∙ `{fmt_coin(profit_closed_fiat, fiat_disp_cur)}`\n" if fiat_disp_cur else "" + ) + markdown_msg = ( + f"{closed_roi_label}\n" + f"∙ `{fmt_coin(profit_closed_coin, stake_cur)} " + f"({profit_closed_ratio_mean:.2%}) " + f"({profit_closed_percent} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" + f"{fiat_closed_trades}" + ) else: - # Message to display - if stats["closed_trade_count"] > 0: - markdown_msg = ( - "*ROI:* Closed trades\n" - f"∙ `{fmt_coin(profit_closed_coin, stake_cur)} " - f"({profit_closed_ratio_mean:.2%}) " - f"({profit_closed_percent} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" - f"∙ `{fmt_coin(profit_closed_fiat, fiat_disp_cur)}`\n" - ) - else: - markdown_msg = "`No closed trade` \n" - fiat_all_trades = ( - f"∙ `{fmt_coin(profit_all_fiat, fiat_disp_cur)}`\n" if fiat_disp_cur else "" - ) + markdown_msg = no_closed_msg + + fiat_all_trades = ( + f"∙ `{fmt_coin(profit_all_fiat, fiat_disp_cur)}`\n" if fiat_disp_cur else "" + ) + markdown_msg += ( + f"{all_roi_label}\n" + f"∙ `{fmt_coin(profit_all_coin, stake_cur)} " + f"({profit_all_ratio_mean:.2%}) " + f"({profit_all_percent} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" + f"{fiat_all_trades}" + f"*Total Trade Count:* `{trade_count}`\n" + f"*Bot started:* `{stats['bot_start_date']}`\n" + f"*{'First Trade opened' if not timescale else 'Showing Profit since'}:* " + f"`{first_trade_date}`\n" + f"*Latest Trade opened:* `{latest_trade_date}`\n" + f"*Win / Loss:* `{stats['winning_trades']} / {stats['losing_trades']}`\n" + f"*Winrate:* `{winrate:.2%}`\n" + f"*Expectancy (Ratio):* `{expectancy:.2f} ({expectancy_ratio:.2f})`" + ) + + if stats["closed_trade_count"] > 0: markdown_msg += ( - f"*ROI:* All trades\n" - f"∙ `{fmt_coin(profit_all_coin, stake_cur)} " - f"({profit_all_ratio_mean:.2%}) " - f"({profit_all_percent} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" - f"{fiat_all_trades}" - f"*Total Trade Count:* `{trade_count}`\n" - f"*Bot started:* `{stats['bot_start_date']}`\n" - f"*{'First Trade opened' if not timescale else 'Showing Profit since'}:* " - f"`{first_trade_date}`\n" - f"*Latest Trade opened:* `{latest_trade_date}`\n" - f"*Win / Loss:* `{stats['winning_trades']} / {stats['losing_trades']}`\n" - f"*Winrate:* `{winrate:.2%}`\n" - f"*Expectancy (Ratio):* `{expectancy:.2f} ({expectancy_ratio:.2f})`" + f"\n*Avg. Duration:* `{avg_duration}`\n" + f"*Best Performing:* `{best_pair}: {best_pair_profit_abs} " + f"({best_pair_profit_ratio:.2%})`\n" + f"*Trading volume:* `{fmt_coin(stats['trading_volume'], stake_cur)}`\n" + f"*Profit factor:* `{stats['profit_factor']:.2f}`\n" + f"*Max Drawdown:* `{stats['max_drawdown']:.2%} " + f"({fmt_coin(stats['max_drawdown_abs'], stake_cur)})`\n" + f" from `{stats['max_drawdown_start']} " + f"({fmt_coin(stats['drawdown_high'], stake_cur)})`\n" + f" to `{stats['max_drawdown_end']} " + f"({fmt_coin(stats['drawdown_low'], stake_cur)})`\n" + f"*Current Drawdown:* `{stats['current_drawdown']:.2%} " + f"({fmt_coin(stats['current_drawdown_abs'], stake_cur)})`\n" + f" from `{stats['current_drawdown_start']} " + f"({fmt_coin(stats['current_drawdown_high'], stake_cur)})`\n" ) - if stats["closed_trade_count"] > 0: - markdown_msg += ( - f"\n*Avg. Duration:* `{avg_duration}`\n" - f"*Best Performing:* `{best_pair}: {best_pair_profit_abs} " - f"({best_pair_profit_ratio:.2%})`\n" - f"*Trading volume:* `{fmt_coin(stats['trading_volume'], stake_cur)}`\n" - f"*Profit factor:* `{stats['profit_factor']:.2f}`\n" - f"*Max Drawdown:* `{stats['max_drawdown']:.2%} " - f"({fmt_coin(stats['max_drawdown_abs'], stake_cur)})`\n" - f" from `{stats['max_drawdown_start']} " - f"({fmt_coin(stats['drawdown_high'], stake_cur)})`\n" - f" to `{stats['max_drawdown_end']} " - f"({fmt_coin(stats['drawdown_low'], stake_cur)})`\n" - ) + + return markdown_msg + + async def _profit_handler( + self, + update: Update, + context: CallbackContext, + direction: str | None = None, + ) -> None: + """ + Common handler for profit commands. + + :param update: Telegram update + :param context: Callback context + :param direction: Trade direction filter ('long', 'short', or None) + :param callback_path: Callback path for message updates + """ + stake_cur = self._config["stake_currency"] + fiat_disp_cur = self._config.get("fiat_display_currency", "") + + start_date = datetime.fromtimestamp(0) + timescale = None + try: + if context.args: + if not direction: + arg = context.args[0].lower() + if arg in ("short", "long"): + direction = arg + context.args.pop(0) # Remove direction from args + timescale = int(context.args[0]) - 1 + today_start = datetime.combine(date.today(), datetime.min.time()) + start_date = today_start - timedelta(days=timescale) + except (TypeError, ValueError, IndexError): + pass + + # Get stats with optional direction filter + stats_kwargs = { + "stake_currency": stake_cur, + "fiat_display_currency": fiat_disp_cur, + "start_date": start_date, + } + if direction: + stats_kwargs["direction"] = direction + + stats = self._rpc._rpc_trade_statistics(**stats_kwargs) + markdown_msg = self._format_profit_message( + stats, stake_cur, fiat_disp_cur, timescale, direction + ) + await self._send_msg( markdown_msg, reload_able=True, - callback_path="update_profit", + callback_path="update_profit" if not direction else f"update_profit_{direction}", query=update.callback_query, ) + @authorized_only + async def _profit(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /profit. + Returns a cumulative profit statistics. + :param bot: telegram bot + :param update: message update + :return: None + """ + await self._profit_handler(update, context) + + @authorized_only + async def _profit_long(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /profit_long. + Returns cumulative profit statistics for long trades. + """ + await self._profit_handler(update, context, direction="long") + + @authorized_only + async def _profit_short(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /profit_short. + Returns cumulative profit statistics for short trades. + """ + await self._profit_handler(update, context, direction="short") + @authorized_only async def _stats(self, update: Update, context: CallbackContext) -> None: """ @@ -1224,10 +1330,13 @@ class Telegram(RPCHandler): total_stake = fmt_coin( result["total" if full_result else "total_bot"], result["stake"], False ) + fiat_estimated_value = ( + f"\t`{result['symbol']}: {value}`{fiat_val}\n" if result["symbol"] else "" + ) output += ( f"\n*Estimated Value{' (Bot managed assets only)' if not full_result else ''}*:\n" f"\t`{result['stake']}: {total_stake}`{stake_improve}\n" - f"\t`{result['symbol']}: {value}`{fiat_val}\n" + f"{fiat_estimated_value}" ) await self._send_msg( output, reload_able=True, callback_path="update_balance", query=update.callback_query @@ -1480,7 +1589,7 @@ class Telegram(RPCHandler): trade_id = int(context.args[0]) msg = self._rpc._rpc_delete(trade_id) await self._send_msg( - f"`{msg['result_msg']}`\n" + f"{msg['result_msg']}\n" "Please make sure to take care of this asset on the exchange manually." ) @@ -1789,23 +1898,6 @@ class Telegram(RPCHandler): if msgs: await self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN_V2) - @authorized_only - async def _edge(self, update: Update, context: CallbackContext) -> None: - """ - Handler for /edge - Shows information related to Edge - """ - edge_pairs = self._rpc._rpc_edge() - if not edge_pairs: - message = "Edge only validated following pairs:" - await self._send_msg(message, parse_mode=ParseMode.HTML) - - for chunk in chunks(edge_pairs, 25): - edge_pairs_tab = tabulate(chunk, headers="keys", tablefmt="simple") - message = f"Edge only validated following pairs:\n
{edge_pairs_tab}
" - - await self._send_msg(message, parse_mode=ParseMode.HTML) - @authorized_only async def _help(self, update: Update, context: CallbackContext) -> None: """ @@ -1858,7 +1950,6 @@ class Telegram(RPCHandler): "*/balance total:* `Show account balance per currency`\n" "*/logs [limit]:* `Show latest logs - defaults to 10` \n" "*/count:* `Show number of active trades compared to allowed number of trades`\n" - "*/edge:* `Shows validated pairs by Edge if it is enabled` \n" "*/health* `Show latest process timestamp - defaults to 1970-01-01 00:00:00` \n" "*/marketdir [long | short | even | none]:* `Updates the user managed variable " "that represents the current market direction. If no direction is provided `" @@ -1879,6 +1970,10 @@ class Telegram(RPCHandler): "*/trades [limit]:* `Lists last closed trades (limited to 10 by default)`\n" "*/profit []:* `Lists cumulative profit from all finished trades, " "over the last n days`\n" + "*/profit_long []:* `Lists cumulative profit from all finished long trades, " + "over the last n days`\n" + "*/profit_short []:* `Lists cumulative profit from all finished short trades, " + "over the last n days`\n" "*/performance:* `Show performance of each finished trade grouped by pair`\n" "*/daily :* `Shows profit or loss per day, over the last n days`\n" "*/weekly :* `Shows statistics per week, over the last n weeks`\n" diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py index e99473b4e..f1a6c687c 100644 --- a/freqtrade/strategy/__init__.py +++ b/freqtrade/strategy/__init__.py @@ -6,6 +6,7 @@ from freqtrade.exchange import ( timeframe_to_prev_date, timeframe_to_seconds, ) +from freqtrade.ft_types import AnnotationType from freqtrade.persistence import Order, PairLocks, Trade from freqtrade.strategy.informative_decorator import informative from freqtrade.strategy.interface import IStrategy @@ -44,4 +45,5 @@ __all__ = [ "merge_informative_pair", "stoploss_from_absolute", "stoploss_from_open", + "AnnotationType", ] diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 28a6e2c78..c863a8392 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -5,10 +5,11 @@ This module defines the interface to apply for strategies import logging from abc import ABC, abstractmethod -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from math import isinf, isnan from pandas import DataFrame +from pydantic import ValidationError from freqtrade.constants import CUSTOM_TAG_MAX_LENGTH, Config, IntOrInf, ListPairsWithTimeframes from freqtrade.data.converter import populate_dataframe_with_trades @@ -27,6 +28,7 @@ from freqtrade.enums import ( ) from freqtrade.exceptions import OperationalException, StrategyError from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date, timeframe_to_seconds +from freqtrade.ft_types import AnnotationType from freqtrade.misc import remove_entry_exit_signals from freqtrade.persistence import Order, PairLocks, Trade from freqtrade.strategy.hyper import HyperStrategyMixin @@ -36,6 +38,7 @@ from freqtrade.strategy.informative_decorator import ( _create_and_merge_informative_pair, _format_pair_name, ) +from freqtrade.strategy.strategy_validation import StrategyResultValidator from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.util import dt_now from freqtrade.wallets import Wallets @@ -65,6 +68,7 @@ class IStrategy(ABC, HyperStrategyMixin): _ft_params_from_file: dict # associated minimal roi minimal_roi: dict = {} + use_custom_roi: bool = False # associated stoploss stoploss: float @@ -464,6 +468,35 @@ class IStrategy(ABC, HyperStrategyMixin): """ return self.stoploss + def custom_roi( + self, + pair: str, + trade: Trade, + current_time: datetime, + trade_duration: int, + entry_tag: str | None, + side: str, + **kwargs, + ) -> float | None: + """ + Custom ROI logic, returns a new minimum ROI threshold (as a ratio, e.g., 0.05 for +5%). + Only called when use_custom_roi is set to True. + + If used at the same time as minimal_roi, an exit will be triggered when the lower + threshold is reached. Example: If minimal_roi = {"0": 0.01} and custom_roi returns 0.05, + an exit will be triggered if profit reaches 5%. + + :param pair: Pair that's currently analyzed. + :param trade: trade object. + :param current_time: datetime object, containing the current datetime. + :param trade_duration: Current trade duration in minutes. + :param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal. + :param side: 'long' or 'short' - indicating the direction of the current trade. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return float: New ROI value as a ratio, or None to fall back to minimal_roi logic. + """ + return None + def custom_entry_price( self, pair: str, @@ -834,6 +867,24 @@ class IStrategy(ABC, HyperStrategyMixin): """ return None + def plot_annotations( + self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs + ) -> list[AnnotationType]: + """ + Retrieve area annotations for a chart. + Must be returned as array, with type, label, color, start, end, y_start, y_end. + All settings except for type are optional - though it usually makes sense to include either + "start and end" or "y_start and y_end" for either horizontal or vertical plots + (or all 4 for boxes). + :param pair: Pair that's currently analyzed + :param start_date: Start date of the chart data being requested + :param end_date: End date of the chart data being requested + :param dataframe: DataFrame with the analyzed data for the chart + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return: List of AnnotationType objects + """ + return [] + def populate_any_indicators( self, pair: str, @@ -1098,7 +1149,7 @@ class IStrategy(ABC, HyperStrategyMixin): manually from within the strategy, to allow an easy way to unlock pairs. :param pair: Unlock pair to allow trading again """ - PairLocks.unlock_pair(pair, datetime.now(timezone.utc)) + PairLocks.unlock_pair(pair, datetime.now(UTC)) def unlock_reason(self, reason: str) -> None: """ @@ -1107,7 +1158,7 @@ class IStrategy(ABC, HyperStrategyMixin): manually from within the strategy, to allow an easy way to unlock pairs. :param reason: Unlock pairs to allow trading again """ - PairLocks.unlock_reason(reason, datetime.now(timezone.utc)) + PairLocks.unlock_reason(reason, datetime.now(UTC)) def is_pair_locked( self, pair: str, *, candle_date: datetime | None = None, side: str = "*" @@ -1193,13 +1244,15 @@ class IStrategy(ABC, HyperStrategyMixin): return try: - df_len, df_close, df_date = self.preserve_df(dataframe) + validator = StrategyResultValidator( + dataframe, warn_only=not self.disable_dataframe_checks + ) dataframe = strategy_safe_wrapper(self._analyze_ticker_internal, message="")( dataframe, {"pair": pair} ) - self.assert_df(dataframe, df_len, df_close, df_date) + validator.assert_df(dataframe) except StrategyError as error: logger.warning(f"Unable to analyze candle (OHLCV) data for pair {pair}: {error}") return @@ -1216,31 +1269,6 @@ class IStrategy(ABC, HyperStrategyMixin): for pair in pairs: self.analyze_pair(pair) - @staticmethod - def preserve_df(dataframe: DataFrame) -> tuple[int, float, datetime]: - """keep some data for dataframes""" - return len(dataframe), dataframe["close"].iloc[-1], dataframe["date"].iloc[-1] - - def assert_df(self, dataframe: DataFrame, df_len: int, df_close: float, df_date: datetime): - """ - Ensure dataframe (length, last candle) was not modified, and has all elements we need. - """ - message_template = "Dataframe returned from strategy has mismatching {}." - message = "" - if dataframe is None: - message = "No dataframe returned (return statement missing?)." - elif df_len != len(dataframe): - message = message_template.format("length") - elif df_close != dataframe["close"].iloc[-1]: - message = message_template.format("last close price") - elif df_date != dataframe["date"].iloc[-1]: - message = message_template.format("last date") - if message: - if self.disable_dataframe_checks: - logger.warning(message) - else: - raise StrategyError(message) - def get_latest_candle( self, pair: str, @@ -1618,18 +1646,49 @@ class IStrategy(ABC, HyperStrategyMixin): return ExitCheckTuple(exit_type=ExitType.NONE) - def min_roi_reached_entry(self, trade_dur: int) -> tuple[int | None, float | None]: + def min_roi_reached_entry( + self, + trade: Trade, + trade_dur: int, + current_time: datetime, + ) -> tuple[int | None, float | None]: """ Based on trade duration defines the ROI entry that may have been reached. :param trade_dur: trade duration in minutes :return: minimal ROI entry value or None if none proper ROI entry was found. """ + + # Get custom ROI if use_custom_roi is set to True + custom_roi = None + if self.use_custom_roi: + custom_roi = strategy_safe_wrapper( + self.custom_roi, default_retval=None, supress_error=True + )( + pair=trade.pair, + trade=trade, + current_time=current_time, + trade_duration=trade_dur, + entry_tag=trade.enter_tag, + side=trade.trade_direction, + ) + if custom_roi is None or isnan(custom_roi) or isinf(custom_roi): + custom_roi = None + logger.debug(f"Custom ROI function did not return a valid ROI for {trade.pair}") + # Get highest entry in ROI dict where key <= trade-duration roi_list = [x for x in self.minimal_roi.keys() if x <= trade_dur] - if not roi_list: - return None, None - roi_entry = max(roi_list) - return roi_entry, self.minimal_roi[roi_entry] + if roi_list: + roi_entry = max(roi_list) + min_roi = self.minimal_roi[roi_entry] + else: + roi_entry = None + min_roi = None + + # The lowest available value is used to trigger an exit. + if custom_roi is not None and (min_roi is None or custom_roi < min_roi): + return trade_dur, custom_roi + else: + return roi_entry, min_roi def min_roi_reached(self, trade: Trade, current_profit: float, current_time: datetime) -> bool: """ @@ -1640,7 +1699,7 @@ class IStrategy(ABC, HyperStrategyMixin): """ # Check if time matches and current rate is above threshold trade_dur = int((current_time.timestamp() - trade.open_date_utc.timestamp()) // 60) - _, roi = self.min_roi_reached_entry(trade_dur) + _, roi = self.min_roi_reached_entry(trade, trade_dur, current_time) if roi is None: return False else: @@ -1681,10 +1740,14 @@ class IStrategy(ABC, HyperStrategyMixin): Has positive effects on memory usage for whatever reason - also when using only one strategy. """ - return { - pair: self.advise_indicators(pair_data.copy(), {"pair": pair}).copy() - for pair, pair_data in data.items() - } + res = {} + for pair, pair_data in data.items(): + validator = StrategyResultValidator( + pair_data, warn_only=not self.disable_dataframe_checks + ) + res[pair] = self.advise_indicators(pair_data.copy(), {"pair": pair}).copy() + validator.assert_df(res[pair]) + return res def ft_advise_signals(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ @@ -1780,3 +1843,33 @@ class IStrategy(ABC, HyperStrategyMixin): if "exit_long" not in df.columns: df = df.rename({"sell": "exit_long"}, axis="columns") return df + + def ft_plot_annotations(self, pair: str, dataframe: DataFrame) -> list[AnnotationType]: + """ + Internal wrapper around plot_dataframe + """ + if len(dataframe) > 0: + annotations = strategy_safe_wrapper(self.plot_annotations)( + pair=pair, + dataframe=dataframe, + start_date=dataframe.iloc[0]["date"].to_pydatetime(), + end_date=dataframe.iloc[-1]["date"].to_pydatetime(), + ) + + from freqtrade.ft_types.plot_annotation_type import AnnotationTypeTA + + annotations_new: list[AnnotationType] = [] + for annotation in annotations: + if isinstance(annotation, dict): + # Convert to AnnotationType + try: + AnnotationTypeTA.validate_python(annotation) + annotations_new.append(annotation) + except ValidationError as e: + logger.error(f"Invalid annotation data: {annotation}. Error: {e}") + else: + # Already an AnnotationType + annotations_new.append(annotation) + + return annotations_new + return [] diff --git a/freqtrade/strategy/parameters.py b/freqtrade/strategy/parameters.py index 282e630d0..4bfa91e4a 100644 --- a/freqtrade/strategy/parameters.py +++ b/freqtrade/strategy/parameters.py @@ -14,9 +14,12 @@ from freqtrade.optimize.hyperopt_tools import HyperoptStateContainer with suppress(ImportError): - from skopt.space import Categorical, Integer, Real - - from freqtrade.optimize.space import SKDecimal + from freqtrade.optimize.space import ( + Categorical, + Integer, + Real, + SKDecimal, + ) from freqtrade.exceptions import OperationalException @@ -51,7 +54,8 @@ class BaseParameter(ABC): name is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.(Integer|Real|Categorical). + :param kwargs: Extra parameters to optuna.distributions. + (IntDistribution|FloatDistribution|CategoricalDistribution). """ if "name" in kwargs: raise OperationalException( @@ -109,7 +113,7 @@ class NumericParameter(BaseParameter): parameter fieldname is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.*. + :param kwargs: Extra parameters to optuna.distributions.*. """ if high is not None and isinstance(low, Sequence): raise OperationalException(f"{self.__class__.__name__} space invalid.") @@ -151,7 +155,7 @@ class IntParameter(NumericParameter): parameter fieldname is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.Integer. + :param kwargs: Extra parameters to optuna.distributions.IntDistribution. """ super().__init__( @@ -160,7 +164,7 @@ class IntParameter(NumericParameter): def get_space(self, name: str) -> "Integer": """ - Create skopt optimization space. + Create optuna distribution space. :param name: A name of parameter field. """ return Integer(low=self.low, high=self.high, name=name, **self._space_params) @@ -174,7 +178,7 @@ class IntParameter(NumericParameter): calculating 100ds of indicators. """ if self.can_optimize(): - # Scikit-optimize ranges are "inclusive", while python's "range" is exclusive + # optuna distributions ranges are "inclusive", while python's "range" is exclusive return range(self.low, self.high + 1) else: return range(self.value, self.value + 1) @@ -205,7 +209,7 @@ class RealParameter(NumericParameter): parameter fieldname is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.Real. + :param kwargs: Extra parameters to optuna.distributions.FloatDistribution. """ super().__init__( low=low, high=high, default=default, space=space, optimize=optimize, load=load, **kwargs @@ -213,7 +217,7 @@ class RealParameter(NumericParameter): def get_space(self, name: str) -> "Real": """ - Create skopt optimization space. + Create optimization space. :param name: A name of parameter field. """ return Real(low=self.low, high=self.high, name=name, **self._space_params) @@ -221,7 +225,6 @@ class RealParameter(NumericParameter): class DecimalParameter(NumericParameter): default: float - value: float def __init__( self, @@ -246,7 +249,7 @@ class DecimalParameter(NumericParameter): parameter fieldname is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.Integer. + :param kwargs: Extra parameters to optuna's NumericParameter. """ self._decimals = decimals default = round(default, self._decimals) @@ -255,9 +258,17 @@ class DecimalParameter(NumericParameter): low=low, high=high, default=default, space=space, optimize=optimize, load=load, **kwargs ) + @property + def value(self) -> float: + return self._value + + @value.setter + def value(self, new_value: float): + self._value = round(new_value, self._decimals) + def get_space(self, name: str) -> "SKDecimal": """ - Create skopt optimization space. + Create optimization space. :param name: A name of parameter field. """ return SKDecimal( @@ -305,7 +316,8 @@ class CategoricalParameter(BaseParameter): name is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.Categorical. + :param kwargs: Compatibility. Optuna's CategoricalDistribution does not + accept extra parameters """ if len(categories) < 2: raise OperationalException( @@ -316,10 +328,10 @@ class CategoricalParameter(BaseParameter): def get_space(self, name: str) -> "Categorical": """ - Create skopt optimization space. + Create optuna distribution space. :param name: A name of parameter field. """ - return Categorical(self.opt_range, name=name, **self._space_params) + return Categorical(self.opt_range, name=name) @property def range(self): @@ -355,7 +367,7 @@ class BooleanParameter(CategoricalParameter): name is prefixed with 'buy_' or 'sell_'. :param optimize: Include parameter in hyperopt optimizations. :param load: Load parameter value from {space}_params. - :param kwargs: Extra parameters to skopt.space.Categorical. + :param kwargs: Extra parameters to optuna.distributions.CategoricalDistribution. """ categories = [True, False] diff --git a/freqtrade/strategy/strategy_validation.py b/freqtrade/strategy/strategy_validation.py new file mode 100644 index 000000000..73a6317d1 --- /dev/null +++ b/freqtrade/strategy/strategy_validation.py @@ -0,0 +1,42 @@ +import logging +from datetime import datetime + +from pandas import DataFrame + +from freqtrade.exceptions import StrategyError + + +logger = logging.getLogger(__name__) + + +class StrategyResultValidator: + def __init__(self, dataframe: DataFrame, warn_only: bool = False): + self._warn_only = warn_only + self._length: int = len(dataframe) + self._close: float = dataframe["close"].iloc[-1] + self._date: datetime = dataframe["date"].iloc[-1] + + def assert_df(self, dataframe: DataFrame): + """ + Ensure dataframe (length, last candle) was not modified, and has all elements we need. + Raises a StrategyError if the dataframe does not match the expected values. + If warn_only is set, it will log a warning instead of raising an error. + :param dataframe: DataFrame to validate + :raises StrategyError: If the dataframe does not match the expected values. + :logs Warning: If warn_only is set and the dataframe does not match the expected values. + """ + message_template = "Dataframe returned from strategy has mismatching {}." + message = "" + if dataframe is None: + message = "No dataframe returned (return statement missing?)." + elif self._length != len(dataframe): + message = message_template.format("length") + elif self._close != dataframe["close"].iloc[-1]: + message = message_template.format("last close price") + elif self._date != dataframe["date"].iloc[-1]: + message = message_template.format("last date") + if message: + if self._warn_only: + logger.warning(message) + else: + raise StrategyError(message) diff --git a/freqtrade/strategy/strategyupdater.py b/freqtrade/strategy/strategyupdater.py index 998a3aac3..8a2f4e72c 100644 --- a/freqtrade/strategy/strategyupdater.py +++ b/freqtrade/strategy/strategyupdater.py @@ -39,6 +39,17 @@ class StrategyUpdater: "sell": "exit", } + # Update function names. + # example: `np.NaN` was removed in the NumPy 2.0 release. Use `np.nan` instead. + module_replacements = { + "numpy": { + "aliases": set(), + "replacements": [ + ("NaN", "nan"), + ], + } + } + # create a dictionary that maps the old column names to the new ones rename_dict = {"buy": "enter_long", "sell": "exit_long", "buy_tag": "enter_tag"} @@ -153,16 +164,24 @@ class NameUpdater(ast_comments.NodeTransformer): def visit_Name(self, node): # if the name is in the mapping, update it node.id = self.check_dict(StrategyUpdater.name_mapping, node.id) + + for mod, info in StrategyUpdater.module_replacements.items(): + for old_attr, new_attr in info["replacements"]: + if node.id == old_attr: + node.id = new_attr return node def visit_Import(self, node): - # do not update the names in import statements + for alias in node.names: + if alias.name in StrategyUpdater.module_replacements: + as_name = alias.asname or alias.name + StrategyUpdater.module_replacements[alias.name]["aliases"].add(as_name) return node def visit_ImportFrom(self, node): - # if hasattr(node, "module"): - # if node.module == "freqtrade.strategy.hyper": - # node.module = "freqtrade.strategy" + if node.module in StrategyUpdater.module_replacements: + mod = node.module + StrategyUpdater.module_replacements[node.module]["aliases"].add(mod) return node def visit_If(self, node: ast_comments.If): @@ -182,6 +201,12 @@ class NameUpdater(ast_comments.NodeTransformer): and node.attr == "nr_of_successful_buys" ): node.attr = "nr_of_successful_entries" + if isinstance(node.value, ast_comments.Name): + for mod, info in StrategyUpdater.module_replacements.items(): + if node.value.id in info["aliases"]: + for old_attr, new_attr in info["replacements"]: + if node.attr == old_attr: + node.attr = new_attr return node def visit_ClassDef(self, node): diff --git a/tests/edge/__init__.py b/freqtrade/templates/__init__.py similarity index 100% rename from tests/edge/__init__.py rename to freqtrade/templates/__init__.py diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index fe577826a..e4c617ddf 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -28,12 +28,12 @@ from freqtrade.strategy import ( merge_informative_pair, stoploss_from_absolute, stoploss_from_open, + AnnotationType, ) # -------------------------------- # Add your lib to import here import talib.abstract as ta -import pandas_ta as pta from technical import qtpylib diff --git a/freqtrade/templates/strategy_subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/strategy_subtemplates/strategy_methods_advanced.j2 index dc133c75a..6cad5ea07 100644 --- a/freqtrade/templates/strategy_subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/strategy_subtemplates/strategy_methods_advanced.j2 @@ -135,6 +135,37 @@ def custom_stake_amount( """ return proposed_stake +use_custom_roi = True + +def custom_roi( + self, + pair: str, + trade: Trade, + current_time: datetime, + trade_duration: int, + entry_tag: str | None, + side: str, + **kwargs, +) -> float | None: + """ + Custom ROI logic, returns a new minimum ROI threshold (as a ratio, e.g., 0.05 for +5%). + Only called when use_custom_roi is set to True. + + If used at the same time as minimal_roi, an exit will be triggered when the lower + threshold is reached. Example: If minimal_roi = {"0": 0.01} and custom_roi returns 0.05, + an exit will be triggered if profit reaches 5%. + + :param pair: Pair that's currently analyzed. + :param trade: trade object. + :param current_time: datetime object, containing the current datetime. + :param trade_duration: Current trade duration in minutes. + :param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal. + :param side: 'long' or 'short' - indicating the direction of the current trade. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return float: New ROI value as a ratio, or None to fall back to minimal_roi logic. + """ + return None + use_custom_stoploss = True def custom_stoploss( @@ -399,3 +430,21 @@ def order_filled( :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. """ pass + +def plot_annotations( + self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs +) -> list[AnnotationType]: + """ + Retrieve area annotations for a chart. + Must be returned as array, with type, label, color, start, end, y_start, y_end. + All settings except for type are optional - though it usually makes sense to include either + "start and end" or "y_start and y_end" for either horizontal or vertical plots + (or all 4 for boxes). + :param pair: Pair that's currently analyzed + :param start_date: Start date of the chart data being requested + :param end_date: End date of the chart data being requested + :param dataframe: DataFrame with the analyzed data for the chart + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return: List of AnnotationType objects + """ + return [] diff --git a/freqtrade/util/__init__.py b/freqtrade/util/__init__.py index 5a4857eea..98fda93cd 100644 --- a/freqtrade/util/__init__.py +++ b/freqtrade/util/__init__.py @@ -13,7 +13,13 @@ from freqtrade.util.datetime_helpers import ( shorten_date, ) from freqtrade.util.dry_run_wallet import get_dry_run_wallet -from freqtrade.util.formatters import decimals_per_coin, fmt_coin, fmt_coin2, round_value +from freqtrade.util.formatters import ( + decimals_per_coin, + fmt_coin, + fmt_coin2, + format_duration, + round_value, +) from freqtrade.util.ft_precise import FtPrecise from freqtrade.util.measure_time import MeasureTime from freqtrade.util.periodic_cache import PeriodicCache @@ -44,6 +50,7 @@ __all__ = [ "shorten_date", "decimals_per_coin", "round_value", + "format_duration", "fmt_coin", "fmt_coin2", "MeasureTime", diff --git a/freqtrade/util/datetime_helpers.py b/freqtrade/util/datetime_helpers.py index 03ee3b6d9..e2390105d 100644 --- a/freqtrade/util/datetime_helpers.py +++ b/freqtrade/util/datetime_helpers.py @@ -1,5 +1,5 @@ import re -from datetime import datetime, timezone +from datetime import UTC, datetime from time import time import humanize @@ -9,7 +9,7 @@ from freqtrade.constants import DATETIME_PRINT_FORMAT def dt_now() -> datetime: """Return the current datetime in UTC.""" - return datetime.now(timezone.utc) + return datetime.now(UTC) def dt_utc( @@ -22,7 +22,7 @@ def dt_utc( microsecond: int = 0, ) -> datetime: """Return a datetime in UTC.""" - return datetime(year, month, day, hour, minute, second, microsecond, tzinfo=timezone.utc) + return datetime(year, month, day, hour, minute, second, microsecond, tzinfo=UTC) def dt_ts(dt: datetime | None = None) -> int: @@ -68,7 +68,7 @@ def dt_from_ts(timestamp: float) -> datetime: if timestamp > 1e10: # Timezone in ms - convert to seconds timestamp /= 1000 - return datetime.fromtimestamp(timestamp, tz=timezone.utc) + return datetime.fromtimestamp(timestamp, tz=UTC) def shorten_date(_date: str) -> str: diff --git a/freqtrade/util/dry_run_wallet.py b/freqtrade/util/dry_run_wallet.py index c904db6b3..82f7db142 100644 --- a/freqtrade/util/dry_run_wallet.py +++ b/freqtrade/util/dry_run_wallet.py @@ -9,4 +9,4 @@ def get_dry_run_wallet(config: Config) -> int | float: if isinstance(_start_cap := config["dry_run_wallet"], float | int): return _start_cap else: - return _start_cap.get("stake_currency") + return _start_cap.get(config["stake_currency"], 0.0) diff --git a/freqtrade/util/formatters.py b/freqtrade/util/formatters.py index 82ac1cf66..fa656f52b 100644 --- a/freqtrade/util/formatters.py +++ b/freqtrade/util/formatters.py @@ -1,3 +1,5 @@ +from datetime import timedelta + from freqtrade.constants import DECIMAL_PER_COIN_FALLBACK, DECIMALS_PER_COIN @@ -66,3 +68,15 @@ def fmt_coin2( val = f"{val} {coin}" return val + + +def format_duration(td: timedelta) -> str: + """ + Format a timedelta object to "XXd HH:MM" format + :param td: Timedelta object to format + :return: Formatted time string + """ + d = td.days + h, r = divmod(td.seconds, 3600) + m, s = divmod(r, 60) + return f"{d}d {h:02d}:{m:02d}" diff --git a/freqtrade/util/migrations/__init__.py b/freqtrade/util/migrations/__init__.py index 4e81b1c57..8a9f10949 100644 --- a/freqtrade/util/migrations/__init__.py +++ b/freqtrade/util/migrations/__init__.py @@ -4,6 +4,9 @@ from freqtrade.util.migrations.funding_rate_mig import migrate_funding_fee_timef def migrate_data(config, exchange: Exchange | None = None): + """ + Migrate persisted data from old formats to new formats + """ migrate_binance_futures_data(config) migrate_funding_fee_timeframe(config, exchange) diff --git a/freqtrade/util/migrations/binance_mig.py b/freqtrade/util/migrations/binance_mig.py index e5255fa6d..248d5810d 100644 --- a/freqtrade/util/migrations/binance_mig.py +++ b/freqtrade/util/migrations/binance_mig.py @@ -6,8 +6,8 @@ from sqlalchemy import select from freqtrade.constants import DOCS_LINK, Config from freqtrade.enums import TradingMode from freqtrade.exceptions import OperationalException +from freqtrade.persistence import KeyValueStore, Trade from freqtrade.persistence.pairlock import PairLock -from freqtrade.persistence.trade_model import Trade logger = logging.getLogger(__name__) @@ -20,6 +20,9 @@ def migrate_binance_futures_names(config: Config): ): # only act on new futures return + if KeyValueStore.get_int_value("binance_migration"): + # already migrated + return import ccxt if version.parse("2.6.26") > version.parse(ccxt.__version__): @@ -29,10 +32,11 @@ def migrate_binance_futures_names(config: Config): ) _migrate_binance_futures_db(config) migrate_binance_futures_data(config) + KeyValueStore.store_value("binance_migration", 1) def _migrate_binance_futures_db(config: Config): - logger.warning("Migrating binance futures pairs in database.") + logger.info("Migrating binance futures pairs in database.") trades = Trade.get_trades([Trade.exchange == "binance", Trade.trading_mode == "FUTURES"]).all() for trade in trades: if ":" in trade.pair: @@ -52,7 +56,7 @@ def _migrate_binance_futures_db(config: Config): # print(pls) # pls.update({'pair': concat(PairLock.pair,':USDT')}) Trade.commit() - logger.warning("Done migrating binance futures pairs in database.") + logger.info("Done migrating binance futures pairs in database.") def migrate_binance_futures_data(config: Config): diff --git a/freqtrade/util/periodic_cache.py b/freqtrade/util/periodic_cache.py index 4f7405d2b..33322fd55 100644 --- a/freqtrade/util/periodic_cache.py +++ b/freqtrade/util/periodic_cache.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from cachetools import TTLCache @@ -11,7 +11,7 @@ class PeriodicCache(TTLCache): def __init__(self, maxsize, ttl, getsizeof=None): def local_timer(): - ts = datetime.now(timezone.utc).timestamp() + ts = datetime.now(UTC).timestamp() offset = ts % ttl return ts - offset diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index cb0887415..db14ec499 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -352,7 +352,7 @@ class Wallets: return max(stake_amount, 0) def get_trade_stake_amount( - self, pair: str, max_open_trades: IntOrInf, edge=None, update: bool = True + self, pair: str, max_open_trades: IntOrInf, update: bool = True ) -> float: """ Calculate stake amount for the trade @@ -366,19 +366,11 @@ class Wallets: val_tied_up = Trade.total_open_trades_stakes() available_amount = self.get_available_stake_amount() - if edge: - stake_amount = edge.stake_amount( - pair, - self.get_free(self._stake_currency), - self.get_total(self._stake_currency), - val_tied_up, + stake_amount = self._config["stake_amount"] + if stake_amount == UNLIMITED_STAKE_AMOUNT: + stake_amount = self._calculate_unlimited_stake_amount( + available_amount, val_tied_up, max_open_trades ) - else: - stake_amount = self._config["stake_amount"] - if stake_amount == UNLIMITED_STAKE_AMOUNT: - stake_amount = self._calculate_unlimited_stake_amount( - available_amount, val_tied_up, max_open_trades - ) return self._check_available_stake_amount(stake_amount, available_amount) diff --git a/ft_client/freqtrade_client/__init__.py b/ft_client/freqtrade_client/__init__.py index 8c7e9919c..a0a492151 100644 --- a/ft_client/freqtrade_client/__init__.py +++ b/ft_client/freqtrade_client/__init__.py @@ -1,7 +1,7 @@ from freqtrade_client.ft_rest_client import FtRestClient -__version__ = "2025.4-dev" +__version__ = "2025.8-dev" if "dev" in __version__: from pathlib import Path diff --git a/ft_client/freqtrade_client/ft_rest_client.py b/ft_client/freqtrade_client/ft_rest_client.py index 5e15bc185..1f14c5b1a 100755 --- a/ft_client/freqtrade_client/ft_rest_client.py +++ b/ft_client/freqtrade_client/ft_rest_client.py @@ -189,13 +189,6 @@ class FtRestClient: """ return self._get("monthly", params={"timescale": months} if months else None) - def edge(self): - """Return information about edge. - - :return: json object - """ - return self._get("edge") - def profit(self): """Return the profit summary. @@ -255,11 +248,12 @@ class FtRestClient: """ return self._get("logs", params={"limit": limit} if limit else {}) - def trades(self, limit=None, offset=None): - """Return trades history, sorted by id + def trades(self, limit=None, offset=None, order_by_id=True): + """Return trades history, sorted by id (or by latest timestamp if order_by_id=False) :param limit: Limits trades to the X last trades. Max 500 trades. :param offset: Offset by this amount of trades. + :param order_by_id: Sort trades by id (default: True). If False, sorts by latest timestamp. :return: json object """ params = {} @@ -267,6 +261,8 @@ class FtRestClient: params["limit"] = limit if offset: params["offset"] = offset + if not order_by_id: + params["order_by_id"] = False return self._get("trades", params) def list_open_trades_custom_data(self, key=None, limit=100, offset=0): diff --git a/ft_client/pyproject.toml b/ft_client/pyproject.toml index a29b3d08c..f41331b26 100644 --- a/ft_client/pyproject.toml +++ b/ft_client/pyproject.toml @@ -13,16 +13,16 @@ authors = [ description = "Freqtrade - Client scripts" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.11" license = {text = "GPLv3"} # license = "GPLv3" classifiers = [ "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Operating System :: MacOS", "Operating System :: Unix", "Topic :: Office/Business :: Financial :: Investment", diff --git a/ft_client/requirements.txt b/ft_client/requirements.txt index 4e2983ba8..9b8d46025 100644 --- a/ft_client/requirements.txt +++ b/ft_client/requirements.txt @@ -1,3 +1,3 @@ # Requirements for freqtrade client library -requests==2.32.3 -python-rapidjson==1.20 +requests==2.32.5 +python-rapidjson==1.21 diff --git a/ft_client/test_client/test_rest_client.py b/ft_client/test_client/test_rest_client.py index c1af6ded2..ad25b156b 100644 --- a/ft_client/test_client/test_rest_client.py +++ b/ft_client/test_client/test_rest_client.py @@ -72,7 +72,6 @@ def test_FtRestClient_call_invalid(caplog): ("weekly", [15], {}), ("monthly", [], {}), ("monthly", [12], {}), - ("edge", [], {}), ("profit", [], {}), ("stats", [], {}), ("performance", [], {}), @@ -85,6 +84,8 @@ def test_FtRestClient_call_invalid(caplog): ("trades", [], {}), ("trades", [5], {}), ("trades", [5, 5], {}), # With offset + ("trades", [5, 5, True], {}), # Explicit order_by_id=True + ("trades", [5, 5, False], {}), # order_by_id=False ("trade", [1], {}), ("delete_trade", [1], {}), ("cancel_open_order", [1], {}), @@ -127,6 +128,10 @@ def test_FtRestClient_call_invalid(caplog): ("pair_candles", ["XRP/USDT", "5m", 500], {"columns": ["close_time,close"]}), ("pair_history", ["XRP/USDT", "5m", "SampleStrategy"], {}), ("pair_history", ["XRP/USDT", "5m"], {"strategy": "SampleStrategy"}), + ("trades", [], {"order_by_id": True}), + ("trades", [], {"order_by_id": False}), + ("trades", [5], {"order_by_id": False}), + ("trades", [5, 5], {"order_by_id": True}), ("sysinfo", [], {}), ("health", [], {}), ], diff --git a/mkdocs.yml b/mkdocs.yml index 550d3e7d5..681a892b2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,7 +52,6 @@ nav: - Orderflow: advanced-orderflow.md - Producer/Consumer mode: producer-consumer.md - SQL Cheat-sheet: sql_cheatsheet.md - - Edge Positioning: edge.md - FAQ: faq.md - Strategy migration: strategy_migration.md - Updating Freqtrade: updating.md @@ -62,11 +61,14 @@ theme: name: material logo: "images/logo.png" favicon: "images/logo.png" + icon: + repo: fontawesome/brands/github custom_dir: "docs/overrides" features: - content.code.annotate - search.share - content.code.copy + - content.action.edit - navigation.top - navigation.footer palette: @@ -86,8 +88,10 @@ extra_css: - "stylesheets/ft.extra.css" extra_javascript: - javascripts/config.js - - https://polyfill.io/v3/polyfill.min.js?features=es6 - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js +exclude_docs: | + /commands/* + /includes/* markdown_extensions: - attr_list - admonition @@ -113,6 +117,9 @@ markdown_extensions: custom_checkbox: true - pymdownx.tilde - mdx_truly_sane_lists + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg extra: version: provider: mike diff --git a/pyproject.toml b/pyproject.toml index 98d2a6cbd..24aadb26d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,15 +13,15 @@ authors = [ description = "Freqtrade - Crypto Trading Bot" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.11" license = {text = "GPLv3"} classifiers = [ "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Operating System :: MacOS", "Operating System :: Unix", "Topic :: Office/Business :: Financial :: Investment", @@ -29,7 +29,7 @@ classifiers = [ dependencies = [ # from requirements.txt - "ccxt>=4.4.60", + "ccxt>=4.4.87", "SQLAlchemy>=2.0.6", "python-telegram-bot>=20.1", "humanize>=4.0.0", @@ -38,14 +38,13 @@ dependencies = [ "httpx>=0.24.1", "urllib3", "jsonschema", - "numpy<2.0", + "numpy>2.0,<3.0", "pandas>=2.2.0,<3.0", - "TA-Lib", - "pandas-ta", + "TA-Lib<0.7", + "ft-pandas-ta", "technical", "tabulate", "pycoingecko>=3.2.0", - "py_find_1st", "python-rapidjson", "orjson", "jinja2", @@ -79,7 +78,8 @@ plot = ["plotly>=4.0"] hyperopt = [ "scipy", "scikit-learn", - "ft-scikit-optimize>=0.9.2", + "optuna > 4.0.0", + "cmaes", "filelock", ] freqai = [ @@ -99,7 +99,6 @@ freqai_rl = [ "tqdm", ] develop = [ - "coveralls", "isort", "mypy", "pre-commit", @@ -111,6 +110,7 @@ develop = [ "pytest-xdist", "pytest", "ruff", + "scipy-stubs", "time-machine", "types-cachetools", "types-filelock", @@ -206,6 +206,14 @@ plugins = [ module = "tests.*" ignore_errors = true +[[tool.mypy.overrides]] +module = [ + "freqtrade.templates.*", + "tests.strategy.strats" +] +# Disable attr-defined check due to ta-lib not having type stubs +disable_error_code = "attr-defined" + [tool.pyright] include = ["freqtrade", "ft_client"] exclude = [ @@ -282,6 +290,7 @@ extend-ignore = [ "RUF010", # Use explicit conversion flag "RUF012", # mutable-class-default "RUF022", # unsorted-dunder-all + "RUF005", # list concatenation ] [tool.ruff.lint.mccabe] diff --git a/requirements-dev.txt b/requirements-dev.txt index ea513914b..d09a530f5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,27 +6,27 @@ -r requirements-freqai-rl.txt -r docs/requirements-docs.txt -coveralls==4.0.1 -ruff==0.11.4 -mypy==1.15.0 -pre-commit==4.2.0 -pytest==8.3.5 -pytest-asyncio==0.26.0 -pytest-cov==6.1.1 -pytest-mock==3.14.0 -pytest-random-order==1.1.1 -pytest-timeout==2.3.1 -pytest-xdist==3.6.1 +ruff==0.12.10 +mypy==1.17.1 +pre-commit==4.3.0 +pytest==8.4.1 +pytest-asyncio==1.1.0 +pytest-cov==6.2.1 +pytest-mock==3.14.1 +pytest-random-order==1.2.0 +pytest-timeout==2.4.0 +pytest-xdist==3.8.0 isort==6.0.1 # For datetime mocking -time-machine==2.16.0 +time-machine==2.19.0 # Convert jupyter notebooks to markdown documents nbconvert==7.16.6 # mypy types -types-cachetools==5.5.0.20240820 +scipy-stubs==1.16.1.1 # keep in sync with `scipy` in `requirements-hyperopt.txt` +types-cachetools==6.1.0.20250717 types-filelock==3.2.7 -types-requests==2.32.0.20250328 +types-requests==2.32.4.20250809 types-tabulate==0.9.0.20241207 -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250822 diff --git a/requirements-freqai-rl.txt b/requirements-freqai-rl.txt index b170da518..d746f19ca 100644 --- a/requirements-freqai-rl.txt +++ b/requirements-freqai-rl.txt @@ -2,11 +2,10 @@ -r requirements-freqai.txt # Required for freqai-rl -torch==2.6.0; sys_platform != 'darwin' or platform_machine != 'x86_64' +torch==2.8.0; sys_platform != 'darwin' or platform_machine != 'x86_64' gymnasium==0.29.1 # SB3 >=2.5.0 depends on torch 2.3.0 - which implies it dropped support x86 macos -stable_baselines3==2.4.1; sys_platform == 'darwin' and platform_machine == 'x86_64' -stable_baselines3==2.5.0; sys_platform != 'darwin' or platform_machine != 'x86_64' +stable_baselines3==2.7.0; sys_platform != 'darwin' or platform_machine != 'x86_64' sb3_contrib>=2.2.1 # Progress bar for stable-baselines3 and sb3-contrib tqdm==4.67.1 diff --git a/requirements-freqai.txt b/requirements-freqai.txt index 57c012a8b..d45f35d19 100644 --- a/requirements-freqai.txt +++ b/requirements-freqai.txt @@ -3,10 +3,10 @@ -r requirements-plot.txt # Required for freqai -scikit-learn==1.6.1 -joblib==1.4.2 -catboost==1.2.7; 'arm' not in platform_machine +scikit-learn==1.7.1 +joblib==1.5.1 +catboost==1.2.8; 'arm' not in platform_machine lightgbm==4.6.0 -xgboost==2.1.4 -tensorboard==2.19.0 -datasieve==0.1.7 +xgboost==3.0.4 +tensorboard==2.20.0 +datasieve==0.1.9 diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 2a326d654..4d31f6042 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,8 @@ -r requirements.txt # Required for hyperopt -scipy==1.15.2 -scikit-learn==1.6.1 -ft-scikit-optimize==0.9.2 -filelock==3.18.0 +scipy==1.16.1 +scikit-learn==1.7.1 +filelock==3.19.1 +optuna==4.5.0 +cmaes==0.12.0 diff --git a/requirements-plot.txt b/requirements-plot.txt index f3d27df41..176c53620 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,4 +1,4 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==6.0.1 +plotly==6.3.0 diff --git a/requirements.txt b/requirements.txt index 56b1a6bde..955b08f48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,52 +1,53 @@ -numpy==1.26.4 -pandas==2.2.3 -bottleneck==1.4.2 -numexpr==2.10.2 -pandas-ta==0.3.14b +numpy==2.3.2; platform_machine != 'armv7l' +numpy==2.2.4; platform_machine == 'armv7l' +pandas==2.3.2; platform_machine != 'armv7l' +pandas==2.2.3; platform_machine == 'armv7l' +bottleneck==1.5.0 +numexpr==2.11.0 +# Indicator libraries +ft-pandas-ta==0.3.15 +ta-lib==0.6.5 +technical==1.5.2 -ccxt==4.4.73 -cryptography==44.0.2 -aiohttp==3.9.5 -SQLAlchemy==2.0.40 -python-telegram-bot==22.0 +ccxt==4.5.2 +cryptography==45.0.6 +aiohttp==3.12.15 +SQLAlchemy==2.0.43 +python-telegram-bot==22.3 # can't be hard-pinned due to telegram-bot pinning httpx with ~ httpx>=0.24.1 -humanize==4.12.2 -cachetools==5.5.2 -requests==2.32.3 -urllib3==2.3.0 -jsonschema==4.23.0 -TA-Lib==0.4.38 -technical==1.5.0 +humanize==4.12.3 +cachetools==6.1.0 +requests==2.32.5 +urllib3==2.5.0 +certifi==2025.8.3 +jsonschema==4.25.1 tabulate==0.9.0 pycoingecko==3.2.0 jinja2==3.1.6 -joblib==1.4.2 -rich==14.0.0 -pyarrow==19.0.1; platform_machine != 'armv7l' - -# find first, C search in arrays -py_find_1st==1.1.7 +joblib==1.5.1 +rich==14.1.0 +pyarrow==21.0.0; platform_machine != 'armv7l' # Load ticker files 30% faster -python-rapidjson==1.20 +python-rapidjson==1.21 # Properly format api responses -orjson==3.10.16 +orjson==3.11.2 # Notify systemd sdnotify==0.3.2 # API Server -fastapi==0.115.12 -pydantic==2.11.2 -uvicorn==0.34.0 +fastapi==0.116.1 +pydantic==2.11.7 +uvicorn==0.35.0 pyjwt==2.10.1 aiofiles==24.1.0 psutil==7.0.0 # Building config files interactively questionary==2.1.0 -prompt-toolkit==3.0.50 +prompt-toolkit==3.0.51 # Extensions to datetime library python-dateutil==2.9.0.post0 pytz==2025.2 @@ -58,5 +59,5 @@ schedule==1.2.2 websockets==15.0.1 janus==2.0.0 -ast-comments==1.2.2 -packaging==24.2 +ast-comments==1.2.3 +packaging==25.0 diff --git a/scripts/ws_client.py b/scripts/ws_client.py index 46dd2da10..233a7828a 100755 --- a/scripts/ws_client.py +++ b/scripts/ws_client.py @@ -234,7 +234,7 @@ async def create_client( await protocol.on_message(ws, name, message) - except (asyncio.TimeoutError, websockets.exceptions.WebSocketException): + except (TimeoutError, websockets.exceptions.WebSocketException): # Try pinging try: pong = await ws.ping() @@ -244,7 +244,7 @@ async def create_client( continue - except asyncio.TimeoutError: + except TimeoutError: logger.error(f"Ping timed out, retrying in {sleep_time}s") await asyncio.sleep(sleep_time) diff --git a/setup.ps1 b/setup.ps1 index 116ed0a2b..a11e9c7fa 100644 --- a/setup.ps1 +++ b/setup.ps1 @@ -150,16 +150,16 @@ function Test-PythonExecutable { function Find-PythonExecutable { $PythonExecutables = @( "python", + "python3.13", "python3.12", "python3.11", - "python3.10", "python3", + "C:\Users\$env:USERNAME\AppData\Local\Programs\Python\Python313\python.exe", "C:\Users\$env:USERNAME\AppData\Local\Programs\Python\Python312\python.exe", "C:\Users\$env:USERNAME\AppData\Local\Programs\Python\Python311\python.exe", - "C:\Users\$env:USERNAME\AppData\Local\Programs\Python\Python310\python.exe", + "C:\Python313\python.exe", "C:\Python312\python.exe", - "C:\Python311\python.exe", - "C:\Python310\python.exe" + "C:\Python311\python.exe" ) @@ -175,10 +175,10 @@ function Main { "Starting the operations..." | Out-File $LogFilePath -Append "Current directory: $(Get-Location)" | Out-File $LogFilePath -Append - # Exit on lower versions than Python 3.10 or when Python executable not found + # Exit on lower versions than Python 3.11 or when Python executable not found $PythonExecutable = Find-PythonExecutable if ($null -eq $PythonExecutable) { - Write-Log "No suitable Python executable found. Please ensure that Python 3.10 or higher is installed and available in the system PATH." -Level 'ERROR' + Write-Log "No suitable Python executable found. Please ensure that Python 3.11 or higher is installed and available in the system PATH." -Level 'ERROR' Exit 1 } @@ -228,16 +228,6 @@ function Main { } } - if (-not (Test-Path "$VenvDir\Lib\site-packages\talib")) { - # Install TA-Lib using the virtual environment's pip - Write-Log "Installing TA-Lib using virtual environment's pip..." - python -m pip install --find-links=build_helpers\ --prefer-binary TA-Lib 2>&1 | Out-File $LogFilePath -Append - if ($LASTEXITCODE -ne 0) { - Write-Log "Failed to install TA-Lib." -Level 'ERROR' - Exit-Script -exitCode 1 - } - } - # Present options for requirement files $SelectedIndices = Get-UserSelection -prompt "Select which requirement files to install:" -options $RequirementFiles -defaultChoice 'A' diff --git a/setup.sh b/setup.sh index 0d490a134..5e0800ab8 100755 --- a/setup.sh +++ b/setup.sh @@ -25,7 +25,7 @@ function check_installed_python() { exit 2 fi - for v in 12 11 10 + for v in 13 12 11 do PYTHON="python3.${v}" which $PYTHON @@ -36,7 +36,7 @@ function check_installed_python() { fi done - echo "No usable python found. Please make sure to have python3.10 or newer installed." + echo "No usable python found. Please make sure to have python3.11 or newer installed." exit 1 } @@ -91,7 +91,6 @@ function updateenv() { fi fi fi - install_talib ${PYTHON} -m pip install --upgrade -r ${REQUIREMENTS} ${REQUIREMENTS_HYPEROPT} ${REQUIREMENTS_PLOT} ${REQUIREMENTS_FREQAI} ${REQUIREMENTS_FREQAI_RL} if [ $? -ne 0 ]; then @@ -118,25 +117,6 @@ function updateenv() { fi } -# Install tab lib -function install_talib() { - if [ -f /usr/local/lib/libta_lib.a ] || [ -f /usr/local/lib/libta_lib.so ] || [ -f /usr/lib/libta_lib.so ]; then - echo "ta-lib already installed, skipping" - return - fi - - cd build_helpers && ./install_ta-lib.sh - - if [ $? -ne 0 ]; then - echo "Quitting. Please fix the above error before continuing." - cd .. - exit 1 - fi; - - cd .. -} - - # Install bot MacOS function install_macos() { if [ ! -x "$(command -v brew)" ] @@ -257,7 +237,7 @@ function install() { install_redhat else echo "This script does not support your OS." - echo "If you have Python version 3.10 - 3.12, pip, virtualenv, ta-lib you can continue." + echo "If you have Python version 3.11 - 3.13, pip, virtualenv installed you can continue." echo "Wait 10 seconds to continue the next install steps or use ctrl+c to interrupt this shell." sleep 10 fi @@ -284,7 +264,7 @@ function help() { echo " -p,--plot Install dependencies for Plotting scripts." } -# Verify if 3.10+ is installed +# Verify if 3.11+ is installed check_installed_python case $* in diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 9dd5ffebc..2dde29c0d 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -16,6 +16,7 @@ from freqtrade.commands import ( start_convert_trades, start_create_userdir, start_download_data, + start_edge, start_hyperopt_list, start_hyperopt_show, start_install_ui, @@ -132,6 +133,8 @@ def test_list_exchanges(capsys): captured = capsys.readouterr() assert re.search(r"^binance$", captured.out, re.MULTILINE) assert re.search(r"^bybit$", captured.out, re.MULTILINE) + # An exchange not supporting futures + assert re.search(r"^kraken$", captured.out, re.MULTILINE) # Test with --all args = [ @@ -159,6 +162,32 @@ def test_list_exchanges(capsys): assert re.search(r"^bingx$", captured.out, re.MULTILINE) assert re.search(r"^bitmex$", captured.out, re.MULTILINE) + # Only dex + args = [ + "list-exchanges", + "--dex", + ] + + start_list_exchanges(get_args(args)) + captured = capsys.readouterr() + assert re.search(r"Exchanges available for Freqtrade.*", captured.out) + assert not re.search(r".*binance.*", captured.out) + assert not re.search(r".*bingx.*", captured.out) + assert re.search(r".*hyperliquid.*", captured.out) + + # Only futures + args = [ + "list-exchanges", + "--trading-mode", + "futures", + ] + + start_list_exchanges(get_args(args)) + captured = capsys.readouterr() + assert re.search(r"Exchanges available for Freqtrade.*", captured.out) + assert re.search(r".*binance.*", captured.out) + assert not re.search(r".*kraken.*", captured.out) + def test_list_timeframes(mocker, capsys): api_mock = MagicMock() @@ -1833,8 +1862,10 @@ def test_backtesting_show(mocker, testdatadir, capsys): sbr = mocker.patch("freqtrade.optimize.optimize_reports.show_backtest_results") args = [ "backtesting-show", + "--export-directory", + f"{testdatadir / 'backtest_results'}", "--export-filename", - f"{testdatadir / 'backtest_results/backtest-result.json'}", + "backtest-result.json", "--show-pair-list", ] pargs = get_args(args) @@ -1937,3 +1968,15 @@ def test_start_show_config(capsys, caplog): assert '"max_open_trades":' in captured.out assert '"secret": "REDACTED"' not in captured.out assert log_has_re(r"Sensitive information will be shown in the upcoming output.*", caplog) + + +def test_start_edge(): + args = [ + "edge", + "--config", + "tests/testdata/testconfigs/main_test_config.json", + ] + + pargs = get_args(args) + with pytest.raises(OperationalException, match="The Edge module has been deprecated in 2023.9"): + start_edge(pargs) diff --git a/tests/conftest.py b/tests/conftest.py index 892b49d8c..a390dea07 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,7 +4,7 @@ import logging import platform import re from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from unittest.mock import MagicMock, Mock, PropertyMock @@ -16,8 +16,7 @@ from xdist.scheduler.loadscope import LoadScopeScheduling from freqtrade import constants from freqtrade.commands import Arguments from freqtrade.data.converter import ohlcv_to_dataframe, trades_list_to_df -from freqtrade.edge import PairInfo -from freqtrade.enums import CandleType, MarginMode, RunMode, SignalDirection, TradingMode +from freqtrade.enums import CandleType, MarginMode, SignalDirection, TradingMode from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_seconds from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import LocalTrade, Order, Trade, init_db @@ -127,7 +126,7 @@ def get_args(args): def generate_trades_history(n_rows, start_date: datetime | None = None, days=5): np.random.seed(42) if not start_date: - start_date = datetime(2020, 1, 1, tzinfo=timezone.utc) + start_date = datetime(2020, 1, 1, tzinfo=UTC) # Generate random data end_date = start_date + timedelta(days=days) @@ -259,6 +258,7 @@ def patch_exchange( "._supported_trading_mode_margin_pairs", PropertyMock( return_value=[ + (TradingMode.SPOT, MarginMode.NONE), (TradingMode.MARGIN, MarginMode.CROSS), (TradingMode.MARGIN, MarginMode.ISOLATED), (TradingMode.FUTURES, MarginMode.CROSS), @@ -298,24 +298,6 @@ def patch_whitelist(mocker, conf) -> None: ) -def patch_edge(mocker) -> None: - # "ETH/BTC", - # "LTC/BTC", - # "XRP/BTC", - # "NEO/BTC" - - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "NEO/BTC": PairInfo(-0.20, 0.66, 3.71, 0.50, 1.71, 10, 25), - "LTC/BTC": PairInfo(-0.21, 0.66, 3.71, 0.50, 1.71, 11, 20), - } - ), - ) - mocker.patch("freqtrade.edge.Edge.calculate", MagicMock(return_value=True)) - - # Functions for recurrent object patching @@ -539,7 +521,11 @@ def patch_torch_initlogs(mocker) -> None: mocked_module = types.ModuleType(module_name) sys.modules[module_name] = mocked_module else: - mocker.patch("torch._logging._init_logs") + try: + mocker.patch("torch._logging._init_logs") + except ModuleNotFoundError: + # Allow running limited tests to run without freqAI dependencies + pass @pytest.fixture(autouse=True) @@ -2603,31 +2589,6 @@ def buy_order_fee(): } -@pytest.fixture(scope="function") -def edge_conf(default_conf): - conf = deepcopy(default_conf) - conf["runmode"] = RunMode.DRY_RUN - conf["max_open_trades"] = -1 - conf["tradable_balance_ratio"] = 0.5 - conf["stake_amount"] = constants.UNLIMITED_STAKE_AMOUNT - conf["edge"] = { - "enabled": True, - "process_throttle_secs": 1800, - "calculate_since_number_of_days": 14, - "allowed_risk": 0.01, - "stoploss_range_min": -0.01, - "stoploss_range_max": -0.1, - "stoploss_range_step": -0.01, - "maximum_winrate": 0.80, - "minimum_expectancy": 0.20, - "min_trade_number": 15, - "max_trade_duration_minute": 1440, - "remove_pumps": False, - } - - return conf - - @pytest.fixture def rpc_balance(): return { @@ -3449,4 +3410,35 @@ def leverage_tiers(): "maintAmt": 654500.0, }, ], + "TIA/USDT:USDT": [ + # Okx tier - these have a gap between maxNotional and the next minNotional + { + "minNotional": 0.0, + "maxNotional": 6500.0, + "maintenanceMarginRate": 0.0065, + "maxLeverage": 50.0, + "maintAmt": None, + }, + { + "minNotional": 6501.0, + "maxNotional": 12000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 40.0, + "maintAmt": None, + }, + { + "minNotional": 12001.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 20.0, + "maintAmt": None, + }, + { + "minNotional": 25001.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 18.18, + "maintAmt": None, + }, + ], } diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index f493a9302..072dfa60e 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from freqtrade.persistence.models import Order, Trade @@ -43,7 +43,7 @@ def mock_trade_1(fee, is_short: bool): fee_open=fee.return_value, fee_close=fee.return_value, is_open=True, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=17), + open_date=datetime.now(tz=UTC) - timedelta(minutes=17), open_rate=0.123, exchange="binance", strategy="StrategyTestV3", @@ -106,8 +106,8 @@ def mock_trade_2(fee, is_short: bool): timeframe=5, enter_tag="TEST1", exit_reason="sell_signal", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20), - close_date=datetime.now(tz=timezone.utc) - timedelta(minutes=2), + open_date=datetime.now(tz=UTC) - timedelta(minutes=20), + close_date=datetime.now(tz=UTC) - timedelta(minutes=2), is_short=is_short, ) o = Order.parse_from_ccxt_object(mock_order_2(is_short), "ETC/BTC", entry_side(is_short)) @@ -168,8 +168,8 @@ def mock_trade_3(fee, is_short: bool): strategy="StrategyTestV3", timeframe=5, exit_reason="roi", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20), - close_date=datetime.now(tz=timezone.utc), + open_date=datetime.now(tz=UTC) - timedelta(minutes=20), + close_date=datetime.now(tz=UTC), is_short=is_short, ) o = Order.parse_from_ccxt_object(mock_order_3(is_short), "XRP/BTC", entry_side(is_short)) @@ -205,7 +205,7 @@ def mock_trade_4(fee, is_short: bool): amount_requested=124.0, fee_open=fee.return_value, fee_close=fee.return_value, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=14), + open_date=datetime.now(tz=UTC) - timedelta(minutes=14), is_open=True, open_rate=0.123, exchange="binance", @@ -260,7 +260,7 @@ def mock_trade_5(fee, is_short: bool): amount_requested=124.0, fee_open=fee.return_value, fee_close=fee.return_value, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=12), + open_date=datetime.now(tz=UTC) - timedelta(minutes=12), is_open=True, open_rate=0.123, exchange="binance", @@ -316,7 +316,7 @@ def mock_trade_6(fee, is_short: bool): stake_amount=0.001, amount=2.0, amount_requested=2.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=5), + open_date=datetime.now(tz=UTC) - timedelta(minutes=5), fee_open=fee.return_value, fee_close=fee.return_value, is_open=True, @@ -410,7 +410,7 @@ def short_trade(fee): strategy="DefaultStrategy", timeframe=5, exit_reason="sell_signal", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20), + open_date=datetime.now(tz=UTC) - timedelta(minutes=20), # close_date=datetime.now(tz=timezone.utc) - timedelta(minutes=2), is_short=True, ) @@ -500,8 +500,8 @@ def leverage_trade(fee): strategy="DefaultStrategy", timeframe=5, exit_reason="sell_signal", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=300), - close_date=datetime.now(tz=timezone.utc), + open_date=datetime.now(tz=UTC) - timedelta(minutes=300), + close_date=datetime.now(tz=UTC), interest_rate=0.0005, ) o = Order.parse_from_ccxt_object(leverage_order(), "DOGE/BTC", "sell") diff --git a/tests/conftest_trades_usdt.py b/tests/conftest_trades_usdt.py index 3a547cce2..462f0dfc6 100644 --- a/tests/conftest_trades_usdt.py +++ b/tests/conftest_trades_usdt.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from freqtrade.persistence.models import Order, Trade @@ -55,8 +55,8 @@ def mock_trade_usdt_1(fee, is_short: bool): stake_amount=20.0, amount=2.0, amount_requested=2.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(days=2, minutes=20), - close_date=datetime.now(tz=timezone.utc) - timedelta(days=2, minutes=5), + open_date=datetime.now(tz=UTC) - timedelta(days=2, minutes=20), + close_date=datetime.now(tz=UTC) - timedelta(days=2, minutes=5), fee_open=fee.return_value, fee_close=fee.return_value, is_open=False, @@ -127,8 +127,8 @@ def mock_trade_usdt_2(fee, is_short: bool): timeframe=5, enter_tag="TEST1", exit_reason="exit_signal", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20), - close_date=datetime.now(tz=timezone.utc) - timedelta(minutes=2), + open_date=datetime.now(tz=UTC) - timedelta(minutes=20), + close_date=datetime.now(tz=UTC) - timedelta(minutes=2), is_short=is_short, ) o = Order.parse_from_ccxt_object(mock_order_usdt_2(is_short), "NEO/USDT", entry_side(is_short)) @@ -190,8 +190,8 @@ def mock_trade_usdt_3(fee, is_short: bool): timeframe=5, enter_tag="TEST3", exit_reason="roi", - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20), - close_date=datetime.now(tz=timezone.utc), + open_date=datetime.now(tz=UTC) - timedelta(minutes=20), + close_date=datetime.now(tz=UTC), is_short=is_short, ) o = Order.parse_from_ccxt_object(mock_order_usdt_3(is_short), "XRP/USDT", entry_side(is_short)) @@ -228,7 +228,7 @@ def mock_trade_usdt_4(fee, is_short: bool): amount_requested=10.01, fee_open=fee.return_value, fee_close=fee.return_value, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=14), + open_date=datetime.now(tz=UTC) - timedelta(minutes=14), is_open=True, open_rate=2.0, exchange="binance", @@ -280,7 +280,7 @@ def mock_trade_usdt_5(fee, is_short: bool): amount_requested=10.01, fee_open=fee.return_value, fee_close=fee.return_value, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=12), + open_date=datetime.now(tz=UTC) - timedelta(minutes=12), is_open=True, open_rate=2.0, exchange="binance", @@ -332,7 +332,7 @@ def mock_trade_usdt_6(fee, is_short: bool): stake_amount=20.0, amount=2.0, amount_requested=2.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=5), + open_date=datetime.now(tz=UTC) - timedelta(minutes=5), fee_open=fee.return_value, fee_close=fee.return_value, is_open=True, @@ -374,7 +374,7 @@ def mock_trade_usdt_7(fee, is_short: bool): fee_open=fee.return_value, fee_close=fee.return_value, is_open=True, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=17), + open_date=datetime.now(tz=UTC) - timedelta(minutes=17), open_rate=2.0, exchange="binance", strategy="StrategyTestV2", diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 7adba9c19..dd85fb8bb 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from unittest.mock import MagicMock from zipfile import ZipFile @@ -56,7 +56,7 @@ def test_get_latest_backtest_filename(testdatadir, mocker): res = get_latest_backtest_filename(str(testdir_bt)) assert res == "backtest-result.json" - mocker.patch("freqtrade.data.btanalysis.json_load", return_value={}) + mocker.patch("freqtrade.data.btanalysis.bt_fileutils.json_load", return_value={}) with pytest.raises(ValueError, match=r"Invalid '.last_result.json' format."): get_latest_backtest_filename(testdir_bt) @@ -84,8 +84,8 @@ def test_load_backtest_metadata(mocker, testdatadir): res = load_backtest_metadata(testdatadir / "nonexistent.file.json") assert res == {} - mocker.patch("freqtrade.data.btanalysis.get_backtest_metadata_filename") - mocker.patch("freqtrade.data.btanalysis.json_load", side_effect=Exception()) + mocker.patch("freqtrade.data.btanalysis.bt_fileutils.get_backtest_metadata_filename") + mocker.patch("freqtrade.data.btanalysis.bt_fileutils.json_load", side_effect=Exception()) with pytest.raises( OperationalException, match=r"Unexpected error.*loading backtest metadata\." ): @@ -94,7 +94,7 @@ def test_load_backtest_metadata(mocker, testdatadir): def test_load_backtest_data_old_format(testdatadir, mocker): filename = testdatadir / "backtest-result_test222.json" - mocker.patch("freqtrade.data.btanalysis.load_backtest_stats", return_value=[]) + mocker.patch("freqtrade.data.btanalysis.bt_fileutils.load_backtest_stats", return_value=[]) with pytest.raises( OperationalException, @@ -149,7 +149,7 @@ def test_load_backtest_data_multi(testdatadir): def test_load_trades_from_db(default_conf, fee, is_short, mocker): create_mock_trades(fee, is_short) # remove init so it does not init again - init_mock = mocker.patch("freqtrade.data.btanalysis.init_db", MagicMock()) + init_mock = mocker.patch("freqtrade.data.btanalysis.bt_fileutils.init_db", MagicMock()) trades = load_trades_from_db(db_url=default_conf["db_url"]) assert init_mock.call_count == 1 @@ -182,19 +182,19 @@ def test_extract_trades_of_period(testdatadir): "profit_abs": [0.0, 1, -2, -5], "open_date": to_datetime( [ - datetime(2017, 11, 13, 15, 40, 0, tzinfo=timezone.utc), - datetime(2017, 11, 14, 9, 41, 0, tzinfo=timezone.utc), - datetime(2017, 11, 14, 14, 20, 0, tzinfo=timezone.utc), - datetime(2017, 11, 15, 3, 40, 0, tzinfo=timezone.utc), + datetime(2017, 11, 13, 15, 40, 0, tzinfo=UTC), + datetime(2017, 11, 14, 9, 41, 0, tzinfo=UTC), + datetime(2017, 11, 14, 14, 20, 0, tzinfo=UTC), + datetime(2017, 11, 15, 3, 40, 0, tzinfo=UTC), ], utc=True, ), "close_date": to_datetime( [ - datetime(2017, 11, 13, 16, 40, 0, tzinfo=timezone.utc), - datetime(2017, 11, 14, 10, 41, 0, tzinfo=timezone.utc), - datetime(2017, 11, 14, 15, 25, 0, tzinfo=timezone.utc), - datetime(2017, 11, 15, 3, 55, 0, tzinfo=timezone.utc), + datetime(2017, 11, 13, 16, 40, 0, tzinfo=UTC), + datetime(2017, 11, 14, 10, 41, 0, tzinfo=UTC), + datetime(2017, 11, 14, 15, 25, 0, tzinfo=UTC), + datetime(2017, 11, 15, 3, 55, 0, tzinfo=UTC), ], utc=True, ), @@ -203,10 +203,10 @@ def test_extract_trades_of_period(testdatadir): trades1 = extract_trades_of_period(data, trades) # First and last trade are dropped as they are out of range assert len(trades1) == 2 - assert trades1.iloc[0].open_date == datetime(2017, 11, 14, 9, 41, 0, tzinfo=timezone.utc) - assert trades1.iloc[0].close_date == datetime(2017, 11, 14, 10, 41, 0, tzinfo=timezone.utc) - assert trades1.iloc[-1].open_date == datetime(2017, 11, 14, 14, 20, 0, tzinfo=timezone.utc) - assert trades1.iloc[-1].close_date == datetime(2017, 11, 14, 15, 25, 0, tzinfo=timezone.utc) + assert trades1.iloc[0].open_date == datetime(2017, 11, 14, 9, 41, 0, tzinfo=UTC) + assert trades1.iloc[0].close_date == datetime(2017, 11, 14, 10, 41, 0, tzinfo=UTC) + assert trades1.iloc[-1].open_date == datetime(2017, 11, 14, 14, 20, 0, tzinfo=UTC) + assert trades1.iloc[-1].close_date == datetime(2017, 11, 14, 15, 25, 0, tzinfo=UTC) def test_analyze_trade_parallelism(testdatadir): @@ -221,8 +221,10 @@ def test_analyze_trade_parallelism(testdatadir): def test_load_trades(default_conf, mocker): - db_mock = mocker.patch("freqtrade.data.btanalysis.load_trades_from_db", MagicMock()) - bt_mock = mocker.patch("freqtrade.data.btanalysis.load_backtest_data", MagicMock()) + db_mock = mocker.patch( + "freqtrade.data.btanalysis.bt_fileutils.load_trades_from_db", MagicMock() + ) + bt_mock = mocker.patch("freqtrade.data.btanalysis.bt_fileutils.load_backtest_data", MagicMock()) load_trades( "DB", @@ -268,6 +270,14 @@ def test_calculate_market_change(testdatadir): assert isinstance(result, float) assert pytest.approx(result) == 0.01100002 + result = calculate_market_change(data, min_date=dt_utc(2018, 1, 20)) + assert isinstance(result, float) + assert pytest.approx(result) == 0.0375149 + + # Move min-date after the last date + result = calculate_market_change(data, min_date=dt_utc(2018, 2, 20)) + assert pytest.approx(result) == 0.0 + def test_combine_dataframes_with_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] @@ -283,7 +293,7 @@ def test_combined_dataframes_with_rel_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] data = load_data(datadir=testdatadir, pairs=pairs, timeframe="5m") df = combined_dataframes_with_rel_mean( - data, datetime(2018, 1, 12, tzinfo=timezone.utc), datetime(2018, 1, 28, tzinfo=timezone.utc) + data, datetime(2018, 1, 12, tzinfo=UTC), datetime(2018, 1, 28, tzinfo=UTC) ) assert isinstance(df, DataFrame) assert "ETH/BTC" not in df.columns @@ -586,7 +596,7 @@ def test_calculate_max_drawdown_abs(profits, relative, highd, lowdays, result, r [1000, 500, 1000, 11000, 10000] # absolute results [1000, 50%, 0%, 0%, ~9%] # Relative drawdowns """ - init_date = datetime(2020, 1, 1, tzinfo=timezone.utc) + init_date = datetime(2020, 1, 1, tzinfo=UTC) dates = [init_date + timedelta(days=i) for i in range(len(profits))] df = DataFrame(zip(profits, dates, strict=False), columns=["profit_abs", "open_date"]) # sort by profit and reset index diff --git a/tests/data/test_datahandler.py b/tests/data/test_datahandler.py index 1cff8b54a..98c7c65ba 100644 --- a/tests/data/test_datahandler.py +++ b/tests/data/test_datahandler.py @@ -1,7 +1,7 @@ # pragma pylint: disable=missing-docstring, protected-access, C0103 import re -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from unittest.mock import MagicMock @@ -165,19 +165,19 @@ def test_datahandler_ohlcv_data_min_max(testdatadir): # Empty pair min_max = dh.ohlcv_data_min_max("UNITTEST/BTC", "8m", "spot") assert len(min_max) == 3 - assert min_max[0] == datetime.fromtimestamp(0, tz=timezone.utc) + assert min_max[0] == datetime.fromtimestamp(0, tz=UTC) assert min_max[0] == min_max[1] # Empty pair2 min_max = dh.ohlcv_data_min_max("NOPAIR/XXX", "41m", "spot") assert len(min_max) == 3 - assert min_max[0] == datetime.fromtimestamp(0, tz=timezone.utc) + assert min_max[0] == datetime.fromtimestamp(0, tz=UTC) assert min_max[0] == min_max[1] # Existing pair ... min_max = dh.ohlcv_data_min_max("UNITTEST/BTC", "1m", "spot") assert len(min_max) == 3 - assert min_max[0] == datetime(2017, 11, 4, 23, 2, tzinfo=timezone.utc) - assert min_max[1] == datetime(2017, 11, 14, 22, 59, tzinfo=timezone.utc) + assert min_max[0] == datetime(2017, 11, 4, 23, 2, tzinfo=UTC) + assert min_max[1] == datetime(2017, 11, 14, 22, 59, tzinfo=UTC) def test_datahandler__check_empty_df(testdatadir, caplog): @@ -467,14 +467,14 @@ def test_datahandler_trades_data_min_max(testdatadir): # Empty pair min_max = dh.trades_data_min_max("NADA/ETH", TradingMode.SPOT) assert len(min_max) == 3 - assert min_max[0] == datetime.fromtimestamp(0, tz=timezone.utc) + assert min_max[0] == datetime.fromtimestamp(0, tz=UTC) assert min_max[0] == min_max[1] # Existing pair ... min_max = dh.trades_data_min_max("XRP/ETH", TradingMode.SPOT) assert len(min_max) == 3 - assert min_max[0] == datetime(2019, 10, 11, 0, 0, 11, 620000, tzinfo=timezone.utc) - assert min_max[1] == datetime(2019, 10, 13, 11, 19, 28, 844000, tzinfo=timezone.utc) + assert min_max[0] == datetime(2019, 10, 11, 0, 0, 11, 620000, tzinfo=UTC) + assert min_max[1] == datetime(2019, 10, 13, 11, 19, 28, 844000, tzinfo=UTC) def test_gethandlerclass(): diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index c2adb84bb..27aa2f17d 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from unittest.mock import MagicMock import pytest @@ -222,8 +222,8 @@ def test_get_producer_df(default_conf): timeframe = default_conf["timeframe"] candle_type = CandleType.SPOT - empty_la = datetime.fromtimestamp(0, tz=timezone.utc) - now = datetime.now(timezone.utc) + empty_la = datetime.fromtimestamp(0, tz=UTC) + now = datetime.now(UTC) # no data has been added, any request should return an empty dataframe dataframe, la = dataprovider.get_producer_df(pair, timeframe, candle_type) @@ -404,7 +404,7 @@ def test_get_analyzed_dataframe(mocker, default_conf, ohlcv_history): dataframe, time = dp.get_analyzed_dataframe("NOTHING/BTC", timeframe) assert dataframe.empty assert isinstance(time, datetime) - assert time == datetime(1970, 1, 1, tzinfo=timezone.utc) + assert time == datetime(1970, 1, 1, tzinfo=UTC) # Test backtest mode default_conf["runmode"] = RunMode.BACKTEST @@ -478,7 +478,7 @@ def test_dp__add_external_df(default_conf_usdt): default_conf_usdt["timeframe"] = timeframe dp = DataProvider(default_conf_usdt, None) df = generate_test_data(timeframe, 24, "2022-01-01 00:00:00+00:00") - last_analyzed = datetime.now(timezone.utc) + last_analyzed = datetime.now(UTC) res = dp._add_external_df("ETH/USDT", df, last_analyzed, timeframe, CandleType.SPOT) assert res[0] is False diff --git a/tests/data/test_historic_precision.py b/tests/data/test_historic_precision.py new file mode 100644 index 000000000..c4a499180 --- /dev/null +++ b/tests/data/test_historic_precision.py @@ -0,0 +1,183 @@ +# pragma pylint: disable=missing-docstring, C0103 + +from datetime import UTC + +import pandas as pd +from numpy import nan +from pandas import DataFrame, Timestamp + +from freqtrade.data.btanalysis.historic_precision import get_tick_size_over_time + + +def test_get_tick_size_over_time(): + """ + Test the get_tick_size_over_time function with predefined data + """ + # Create test dataframe with different levels of precision + data = { + "date": [ + Timestamp("2020-01-01 00:00:00", tz=UTC), + Timestamp("2020-01-02 00:00:00", tz=UTC), + Timestamp("2020-01-03 00:00:00", tz=UTC), + Timestamp("2020-01-15 00:00:00", tz=UTC), + Timestamp("2020-01-16 00:00:00", tz=UTC), + Timestamp("2020-01-31 00:00:00", tz=UTC), + Timestamp("2020-02-01 00:00:00", tz=UTC), + Timestamp("2020-02-15 00:00:00", tz=UTC), + Timestamp("2020-03-15 00:00:00", tz=UTC), + ], + "open": [1.23456, 1.234, 1.23, 1.2, 1.23456, 1.234, 2.3456, 2.34, 2.34], + "high": [1.23457, 1.235, 1.24, 1.3, 1.23456, 1.235, 2.3457, 2.34, 2.34], + "low": [1.23455, 1.233, 1.22, 1.1, 1.23456, 1.233, 2.3455, 2.34, 2.34], + "close": [1.23456, 1.234, 1.23, 1.2, 1.23456, 1.234, 2.3456, 2.34, 2.34], + "volume": [100, 200, 300, 400, 500, 600, 700, 800, 900], + } + + candles = DataFrame(data) + + # Calculate significant digits + result = get_tick_size_over_time(candles) + + # Check that the result is a pandas Series + assert isinstance(result, pd.Series) + + # Check that we have three months of data (Jan, Feb and March 2020 ) + assert len(result) == 3 + + # Before + assert result.asof("2019-01-01 00:00:00+00:00") is nan + # January should have 5 significant digits (based on 1.23456789 being the most precise value) + # which should be converted to 0.00001 + + assert result.asof("2020-01-01 00:00:00+00:00") == 0.00001 + assert result.asof("2020-01-01 00:00:00+00:00") == 0.00001 + assert result.asof("2020-02-25 00:00:00+00:00") == 0.0001 + assert result.asof("2020-03-25 00:00:00+00:00") == 0.01 + assert result.asof("2020-04-01 00:00:00+00:00") == 0.01 + # Value far past the last date should be the last value + assert result.asof("2025-04-01 00:00:00+00:00") == 0.01 + + assert result.iloc[0] == 0.00001 + + +def test_get_tick_size_over_time_real_data(testdatadir): + """ + Test the get_tick_size_over_time function with real data from the testdatadir + """ + from freqtrade.data.history import load_pair_history + + # Load some test data from the testdata directory + pair = "UNITTEST/BTC" + timeframe = "1m" + + candles = load_pair_history( + datadir=testdatadir, + pair=pair, + timeframe=timeframe, + ) + + # Make sure we have test data + assert not candles.empty, "No test data found, cannot run test" + + # Calculate significant digits + result = get_tick_size_over_time(candles) + + assert isinstance(result, pd.Series) + + # Verify that all values are between 0 and 1 (valid precision values) + assert all(result > 0) + assert all(result < 1) + + assert all(result <= 0.0001) + assert all(result >= 0.00000001) + + +def test_get_tick_size_over_time_small_numbers(): + """ + Test the get_tick_size_over_time function with predefined data + """ + # Create test dataframe with different levels of precision + data = { + "date": [ + Timestamp("2020-01-01 00:00:00", tz=UTC), + Timestamp("2020-01-02 00:00:00", tz=UTC), + Timestamp("2020-01-03 00:00:00", tz=UTC), + Timestamp("2020-01-15 00:00:00", tz=UTC), + Timestamp("2020-01-16 00:00:00", tz=UTC), + Timestamp("2020-01-31 00:00:00", tz=UTC), + Timestamp("2020-02-01 00:00:00", tz=UTC), + Timestamp("2020-02-15 00:00:00", tz=UTC), + Timestamp("2020-03-15 00:00:00", tz=UTC), + ], + "open": [ + 0.000000123456, + 0.0000001234, + 0.000000123, + 0.00000012, + 0.000000123456, + 0.0000001234, + 0.00000023456, + 0.000000234, + 0.000000234, + ], + "high": [ + 0.000000123457, + 0.0000001235, + 0.000000124, + 0.00000013, + 0.000000123456, + 0.0000001235, + 0.00000023457, + 0.000000234, + 0.000000234, + ], + "low": [ + 0.000000123455, + 0.0000001233, + 0.000000122, + 0.00000011, + 0.000000123456, + 0.0000001233, + 0.00000023455, + 0.000000234, + 0.000000234, + ], + "close": [ + 0.000000123456, + 0.0000001234, + 0.000000123, + 0.00000012, + 0.000000123456, + 0.0000001234, + 0.00000023456, + 0.000000234, + 0.000000234, + ], + "volume": [100, 200, 300, 400, 500, 600, 700, 800, 900], + } + + candles = DataFrame(data) + + # Calculate significant digits + result = get_tick_size_over_time(candles) + + # Check that the result is a pandas Series + assert isinstance(result, pd.Series) + + # Check that we have three months of data (Jan, Feb and March 2020 ) + assert len(result) == 3 + + # Before + assert result.asof("2019-01-01 00:00:00+00:00") is nan + # January should have 5 significant digits (based on 1.23456789 being the most precise value) + # which should be converted to 0.00001 + + assert result.asof("2020-01-01 00:00:00+00:00") == 0.000000000001 + assert result.asof("2020-01-01 00:00:00+00:00") == 0.000000000001 + assert result.asof("2020-02-25 00:00:00+00:00") == 0.00000000001 + assert result.asof("2020-03-25 00:00:00+00:00") == 0.000000001 + assert result.asof("2020-04-01 00:00:00+00:00") == 0.000000001 + # Value far past the last date should be the last value + assert result.asof("2025-04-01 00:00:00+00:00") == 0.000000001 + + assert result.iloc[0] == 0.000000000001 diff --git a/tests/data/test_trade_converter_kraken.py b/tests/data/test_trade_converter_kraken.py index d8d20fd88..cddcf5dc0 100644 --- a/tests/data/test_trade_converter_kraken.py +++ b/tests/data/test_trade_converter_kraken.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from shutil import copytree from unittest.mock import PropertyMock @@ -49,12 +49,8 @@ def test_import_kraken_trades_from_csv(testdatadir, tmp_path, caplog, default_co trades = dh.trades_load("BCH_EUR", TradingMode.SPOT) assert len(trades) == 340 - assert trades["date"].min().to_pydatetime() == datetime( - 2023, 1, 1, 0, 3, 56, tzinfo=timezone.utc - ) - assert trades["date"].max().to_pydatetime() == datetime( - 2023, 1, 2, 23, 17, 3, tzinfo=timezone.utc - ) + assert trades["date"].min().to_pydatetime() == datetime(2023, 1, 1, 0, 3, 56, tzinfo=UTC) + assert trades["date"].max().to_pydatetime() == datetime(2023, 1, 2, 23, 17, 3, tzinfo=UTC) # ID is not filled assert len(trades.loc[trades["id"] != ""]) == 0 diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py deleted file mode 100644 index 50c03f0f3..000000000 --- a/tests/edge/test_edge.py +++ /dev/null @@ -1,606 +0,0 @@ -# pragma pylint: disable=missing-docstring, C0103, C0330 -# pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments - -import logging -import math -from datetime import timedelta -from unittest.mock import MagicMock - -import numpy as np -import pytest -from pandas import DataFrame - -from freqtrade.data.converter import ohlcv_to_dataframe -from freqtrade.edge import Edge, PairInfo -from freqtrade.enums import ExitType -from freqtrade.exceptions import OperationalException -from freqtrade.util.datetime_helpers import dt_ts, dt_utc -from tests.conftest import EXMS, get_patched_freqtradebot, log_has -from tests.optimize import ( - BTContainer, - BTrade, - _build_backtest_dataframe, - _get_frame_time_from_offset, -) - - -# Cases to be tested: -# 1) Open trade should be removed from the end -# 2) Two complete trades within dataframe (with sell hit for all) -# 3) Entered, sl 1%, candle drops 8% => Trade closed, 1% loss -# 4) Entered, sl 3%, candle drops 4%, recovers to 1% => Trade closed, 3% loss -# 5) Stoploss and sell are hit. should sell on stoploss -#################################################################### - -tests_start_time = dt_utc(2018, 10, 3) -timeframe_in_minute = 60 - -# End helper functions -# Open trade should be removed from the end -tc0 = BTContainer( - data=[ - # D O H L C V B S - [0, 5000, 5025, 4975, 4987, 6172, 1, 0], - [1, 5000, 5025, 4975, 4987, 6172, 0, 1], - ], # enter trade (signal on last candle) - stop_loss=-0.99, - roi={"0": float("inf")}, - profit_perc=0.00, - trades=[], -) - -# Two complete trades within dataframe(with sell hit for all) -tc1 = BTContainer( - data=[ - # D O H L C V B S - [0, 5000, 5025, 4975, 4987, 6172, 1, 0], - [1, 5000, 5025, 4975, 4987, 6172, 0, 1], # enter trade (signal on last candle) - [2, 5000, 5025, 4975, 4987, 6172, 0, 0], # exit at open - [3, 5000, 5025, 4975, 4987, 6172, 1, 0], # no action - [4, 5000, 5025, 4975, 4987, 6172, 0, 0], # should enter the trade - [5, 5000, 5025, 4975, 4987, 6172, 0, 1], # no action - [6, 5000, 5025, 4975, 4987, 6172, 0, 0], # should sell - ], - stop_loss=-0.99, - roi={"0": float("inf")}, - profit_perc=0.00, - trades=[ - BTrade(exit_reason=ExitType.EXIT_SIGNAL, open_tick=1, close_tick=2), - BTrade(exit_reason=ExitType.EXIT_SIGNAL, open_tick=4, close_tick=6), - ], -) - -# 3) Entered, sl 1%, candle drops 8% => Trade closed, 1% loss -tc2 = BTContainer( - data=[ - # D O H L C V B S - [0, 5000, 5025, 4975, 4987, 6172, 1, 0], - [1, 5000, 5025, 4600, 4987, 6172, 0, 0], # enter trade, stoploss hit - [2, 5000, 5025, 4975, 4987, 6172, 0, 0], - ], - stop_loss=-0.01, - roi={"0": float("inf")}, - profit_perc=-0.01, - trades=[BTrade(exit_reason=ExitType.STOP_LOSS, open_tick=1, close_tick=1)], -) - -# 4) Entered, sl 3 %, candle drops 4%, recovers to 1 % = > Trade closed, 3 % loss -tc3 = BTContainer( - data=[ - # D O H L C V B S - [0, 5000, 5025, 4975, 4987, 6172, 1, 0], - [1, 5000, 5025, 4800, 4987, 6172, 0, 0], # enter trade, stoploss hit - [2, 5000, 5025, 4975, 4987, 6172, 0, 0], - ], - stop_loss=-0.03, - roi={"0": float("inf")}, - profit_perc=-0.03, - trades=[BTrade(exit_reason=ExitType.STOP_LOSS, open_tick=1, close_tick=1)], -) - -# 5) Stoploss and sell are hit. should sell on stoploss -tc4 = BTContainer( - data=[ - # D O H L C V B S - [0, 5000, 5025, 4975, 4987, 6172, 1, 0], - [1, 5000, 5025, 4800, 4987, 6172, 0, 1], # enter trade, stoploss hit, sell signal - [2, 5000, 5025, 4975, 4987, 6172, 0, 0], - ], - stop_loss=-0.03, - roi={"0": float("inf")}, - profit_perc=-0.03, - trades=[BTrade(exit_reason=ExitType.STOP_LOSS, open_tick=1, close_tick=1)], -) - -TESTS = [tc0, tc1, tc2, tc3, tc4] - - -@pytest.mark.parametrize("data", TESTS) -def test_edge_results(edge_conf, mocker, caplog, data) -> None: - """ - run functional tests - """ - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - frame = _build_backtest_dataframe(data.data) - caplog.set_level(logging.DEBUG) - edge.fee = 0 - - trades = edge._find_trades_for_stoploss_range(frame, "TEST/BTC", [data.stop_loss]) - results = edge._fill_calculable_fields(DataFrame(trades)) if trades else DataFrame() - - assert len(trades) == len(data.trades) - - if not results.empty: - assert round(results["profit_ratio"].sum(), 3) == round(data.profit_perc, 3) - - for c, trade in enumerate(data.trades): - res = results.iloc[c] - assert res.exit_type == trade.exit_reason - assert res.open_date == _get_frame_time_from_offset(trade.open_tick).replace(tzinfo=None) - assert res.close_date == _get_frame_time_from_offset(trade.close_tick).replace(tzinfo=None) - - -def test_adjust(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - "C/D": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - "N/O": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - - pairs = ["A/B", "C/D", "E/F", "G/H"] - assert edge.adjust(pairs) == ["E/F", "C/D"] - - -def test_edge_get_stoploss(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - "C/D": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - "N/O": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - - assert edge.get_stoploss("E/F") == -0.01 - - -def test_nonexisting_get_stoploss(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - - assert edge.get_stoploss("N/O") == -0.1 - - -def test_edge_stake_amount(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.02, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - assert edge._capital_ratio == 0.5 - assert ( - edge.stake_amount("E/F", free_capital=100, total_capital=100, capital_in_trade=25) == 31.25 - ) - - assert edge.stake_amount("E/F", free_capital=20, total_capital=100, capital_in_trade=25) == 20 - - assert edge.stake_amount("E/F", free_capital=0, total_capital=100, capital_in_trade=25) == 0 - - # Test with increased allowed_risk - # Result should be no more than allowed capital - edge._allowed_risk = 0.4 - edge._capital_ratio = 0.5 - assert ( - edge.stake_amount("E/F", free_capital=100, total_capital=100, capital_in_trade=25) == 62.5 - ) - - assert edge.stake_amount("E/F", free_capital=100, total_capital=100, capital_in_trade=0) == 50 - - edge._capital_ratio = 1 - # Full capital is available - assert edge.stake_amount("E/F", free_capital=100, total_capital=100, capital_in_trade=0) == 100 - # Full capital is available - assert edge.stake_amount("E/F", free_capital=0, total_capital=100, capital_in_trade=0) == 0 - - -def test_nonexisting_stake_amount(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.11, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - # should use strategy stoploss - assert edge.stake_amount("N/O", 1, 2, 1) == 0.15 - - -def test_edge_heartbeat_calculate(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - heartbeat = edge_conf["edge"]["process_throttle_secs"] - - # should not recalculate if heartbeat not reached - edge._last_updated = dt_ts() - heartbeat + 1 - - assert edge.calculate(edge_conf["exchange"]["pair_whitelist"]) is False - - -def mocked_load_data(datadir, pairs=None, timeframe="0m", timerange=None, *args, **kwargs): - if pairs is None: - pairs = [] - hz = 0.1 - base = 0.001 - - NEOBTC = [ - [ - dt_ts(tests_start_time + timedelta(minutes=(x * timeframe_in_minute))), - math.sin(x * hz) / 1000 + base, - math.sin(x * hz) / 1000 + base + 0.0001, - math.sin(x * hz) / 1000 + base - 0.0001, - math.sin(x * hz) / 1000 + base, - 123.45, - ] - for x in range(0, 500) - ] - - hz = 0.2 - base = 0.002 - LTCBTC = [ - [ - dt_ts(tests_start_time + timedelta(minutes=(x * timeframe_in_minute))), - math.sin(x * hz) / 1000 + base, - math.sin(x * hz) / 1000 + base + 0.0001, - math.sin(x * hz) / 1000 + base - 0.0001, - math.sin(x * hz) / 1000 + base, - 123.45, - ] - for x in range(0, 500) - ] - - pairdata = { - "NEO/BTC": ohlcv_to_dataframe(NEOBTC, "1h", pair="NEO/BTC", fill_missing=True), - "LTC/BTC": ohlcv_to_dataframe(LTCBTC, "1h", pair="LTC/BTC", fill_missing=True), - } - return pairdata - - -def test_edge_process_downloaded_data(mocker, edge_conf): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - mocker.patch(f"{EXMS}.get_fee", MagicMock(return_value=0.001)) - mocker.patch("freqtrade.edge.edge_positioning.refresh_data", MagicMock()) - mocker.patch("freqtrade.edge.edge_positioning.load_data", mocked_load_data) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - assert edge.calculate(edge_conf["exchange"]["pair_whitelist"]) - assert len(edge._cached_pairs) == 2 - assert edge._last_updated <= dt_ts() + 2 - - -def test_edge_process_no_data(mocker, edge_conf, caplog): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - mocker.patch(f"{EXMS}.get_fee", MagicMock(return_value=0.001)) - mocker.patch("freqtrade.edge.edge_positioning.refresh_data", MagicMock()) - mocker.patch("freqtrade.edge.edge_positioning.load_data", MagicMock(return_value={})) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - assert not edge.calculate(edge_conf["exchange"]["pair_whitelist"]) - assert len(edge._cached_pairs) == 0 - assert log_has("No data found. Edge is stopped ...", caplog) - assert edge._last_updated == 0 - - -def test_edge_process_no_trades(mocker, edge_conf, caplog): - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - mocker.patch(f"{EXMS}.get_fee", return_value=0.001) - mocker.patch( - "freqtrade.edge.edge_positioning.refresh_data", - ) - mocker.patch("freqtrade.edge.edge_positioning.load_data", mocked_load_data) - # Return empty - mocker.patch("freqtrade.edge.Edge._find_trades_for_stoploss_range", return_value=[]) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - assert not edge.calculate(edge_conf["exchange"]["pair_whitelist"]) - assert len(edge._cached_pairs) == 0 - assert log_has("No trades found.", caplog) - - -def test_edge_process_no_pairs(mocker, edge_conf, caplog): - edge_conf["exchange"]["pair_whitelist"] = [] - mocker.patch("freqtrade.freqtradebot.validate_config_consistency") - - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - fee_mock = mocker.patch(f"{EXMS}.get_fee", return_value=0.001) - mocker.patch("freqtrade.edge.edge_positioning.refresh_data") - mocker.patch("freqtrade.edge.edge_positioning.load_data", mocked_load_data) - # Return empty - mocker.patch("freqtrade.edge.Edge._find_trades_for_stoploss_range", return_value=[]) - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - assert fee_mock.call_count == 0 - assert edge.fee is None - - assert not edge.calculate(["XRP/USDT"]) - assert fee_mock.call_count == 1 - assert edge.fee == 0.001 - - -def test_edge_init_error(mocker, edge_conf): - edge_conf["stake_amount"] = 0.5 - mocker.patch(f"{EXMS}.get_fee", MagicMock(return_value=0.001)) - with pytest.raises(OperationalException, match="Edge works only with unlimited stake amount"): - get_patched_freqtradebot(mocker, edge_conf) - - -@pytest.mark.parametrize( - "fee,risk_reward_ratio,expectancy", - [ - (0.0005, 306.5384615384, 101.5128205128), - (0.001, 152.6923076923, 50.2307692308), - ], -) -def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectancy): - edge_conf["edge"]["min_trade_number"] = 2 - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - - def get_fee(*args, **kwargs): - return fee - - freqtrade.exchange.get_fee = get_fee - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - trades = [ - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:05:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:10:00.000000000"), - "trade_duration": "", - "open_rate": 17, - "close_rate": 17, - "exit_type": "exit_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "trade_duration": "", - "open_rate": 20, - "close_rate": 20, - "exit_type": "exit_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:30:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:40:00.000000000"), - "trade_duration": "", - "open_rate": 26, - "close_rate": 34, - "exit_type": "exit_signal", - }, - ] - - trades_df = DataFrame(trades) - trades_df = edge._fill_calculable_fields(trades_df) - final = edge._process_expectancy(trades_df) - assert len(final) == 1 - - assert "TEST/BTC" in final - assert final["TEST/BTC"].stoploss == -0.9 - assert round(final["TEST/BTC"].winrate, 10) == 0.3333333333 - assert round(final["TEST/BTC"].risk_reward_ratio, 10) == risk_reward_ratio - assert round(final["TEST/BTC"].required_risk_reward, 10) == 2.0 - assert round(final["TEST/BTC"].expectancy, 10) == expectancy - - # Pop last item so no trade is profitable - trades.pop() - trades_df = DataFrame(trades) - trades_df = edge._fill_calculable_fields(trades_df) - final = edge._process_expectancy(trades_df) - assert len(final) == 0 - assert isinstance(final, dict) - - -def test_process_expectancy_remove_pumps(mocker, edge_conf, fee): - edge_conf["edge"]["min_trade_number"] = 2 - edge_conf["edge"]["remove_pumps"] = True - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - - freqtrade.exchange.get_fee = fee - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - trades = [ - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:05:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:10:00.000000000"), - "open_index": 1, - "close_index": 1, - "trade_duration": "", - "open_rate": 17, - "close_rate": 15, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "open_index": 4, - "close_index": 4, - "trade_duration": "", - "open_rate": 20, - "close_rate": 10, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "open_index": 4, - "close_index": 4, - "trade_duration": "", - "open_rate": 20, - "close_rate": 10, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "open_index": 4, - "close_index": 4, - "trade_duration": "", - "open_rate": 20, - "close_rate": 10, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "open_index": 4, - "close_index": 4, - "trade_duration": "", - "open_rate": 20, - "close_rate": 10, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:30:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:40:00.000000000"), - "open_index": 6, - "close_index": 7, - "trade_duration": "", - "open_rate": 26, - "close_rate": 134, - "exit_type": "sell_signal", - }, - ] - - trades_df = DataFrame(trades) - trades_df = edge._fill_calculable_fields(trades_df) - final = edge._process_expectancy(trades_df) - - assert "TEST/BTC" in final - assert final["TEST/BTC"].stoploss == -0.9 - assert final["TEST/BTC"].nb_trades == len(trades_df) - 1 - assert round(final["TEST/BTC"].winrate, 10) == 0.0 - - -def test_process_expectancy_only_wins(mocker, edge_conf, fee): - edge_conf["edge"]["min_trade_number"] = 2 - freqtrade = get_patched_freqtradebot(mocker, edge_conf) - - freqtrade.exchange.get_fee = fee - edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) - - trades = [ - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:05:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:10:00.000000000"), - "open_index": 1, - "close_index": 1, - "trade_duration": "", - "open_rate": 15, - "close_rate": 17, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:20:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:25:00.000000000"), - "open_index": 4, - "close_index": 4, - "trade_duration": "", - "open_rate": 10, - "close_rate": 20, - "exit_type": "sell_signal", - }, - { - "pair": "TEST/BTC", - "stoploss": -0.9, - "profit_percent": "", - "profit_abs": "", - "open_date": np.datetime64("2018-10-03T00:30:00.000000000"), - "close_date": np.datetime64("2018-10-03T00:40:00.000000000"), - "open_index": 6, - "close_index": 7, - "trade_duration": "", - "open_rate": 26, - "close_rate": 134, - "exit_type": "sell_signal", - }, - ] - - trades_df = DataFrame(trades) - trades_df = edge._fill_calculable_fields(trades_df) - final = edge._process_expectancy(trades_df) - - assert "TEST/BTC" in final - assert final["TEST/BTC"].stoploss == -0.9 - assert final["TEST/BTC"].nb_trades == len(trades_df) - assert round(final["TEST/BTC"].winrate, 10) == 1.0 - assert round(final["TEST/BTC"].risk_reward_ratio, 10) == float("inf") - assert round(final["TEST/BTC"].expectancy, 10) == float("inf") diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 5241b3b69..02c0f202b 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -1015,10 +1015,10 @@ async def test__async_get_trade_history_id_binance(default_conf_usdt, mocker, fe # Don't expect to get here raise ValueError("Unexpected call") # return fetch_trades_result[:-2] - elif kwargs.get("params", {}).get(exchange._trades_pagination_arg) == "0": + elif kwargs.get("params", {}).get(exchange._ft_has["trades_pagination_arg"]) == "0": # Return first 3 return fetch_trades_result[:-2] - elif kwargs.get("params", {}).get(exchange._trades_pagination_arg) in ( + elif kwargs.get("params", {}).get(exchange._ft_has["trades_pagination_arg"]) in ( fetch_trades_result[-3]["id"], 1565798399752, ): @@ -1076,10 +1076,10 @@ async def test__async_get_trade_history_id_binance_fast( # # Don't expect to get here # raise ValueError("Unexpected call") # # return fetch_trades_result[:-2] - elif kwargs.get("params", {}).get(exchange._trades_pagination_arg) == "0": + elif kwargs.get("params", {}).get(exchange._ft_has["trades_pagination_arg"]) == "0": # Return first 3 return fetch_trades_result[:-2] - # elif kwargs.get("params", {}).get(exchange._trades_pagination_arg) in ( + # elif kwargs.get("params", {}).get(exchange._ft_has['trades_pagination_arg']) in ( # fetch_trades_result[-3]["id"], # 1565798399752, # ): diff --git a/tests/exchange/test_bitget.py b/tests/exchange/test_bitget.py new file mode 100644 index 000000000..fdfaf7a7e --- /dev/null +++ b/tests/exchange/test_bitget.py @@ -0,0 +1,122 @@ +from datetime import timedelta +from unittest.mock import MagicMock + +import pytest + +from freqtrade.enums import CandleType +from freqtrade.exceptions import RetryableOrderError +from freqtrade.exchange.common import API_RETRY_COUNT +from freqtrade.util import dt_now, dt_ts +from tests.conftest import EXMS, get_patched_exchange +from tests.exchange.test_exchange import ccxt_exceptionhandlers + + +@pytest.mark.usefixtures("init_persistence") +def test_fetch_stoploss_order_bitget(default_conf, mocker): + default_conf["dry_run"] = False + mocker.patch("freqtrade.exchange.common.time.sleep") + api_mock = MagicMock() + + exchange = get_patched_exchange(mocker, default_conf, api_mock, exchange="bitget") + + api_mock.fetch_open_orders = MagicMock(return_value=[]) + api_mock.fetch_canceled_and_closed_orders = MagicMock(return_value=[]) + + with pytest.raises(RetryableOrderError): + exchange.fetch_stoploss_order("1234", "ETH/BTC") + assert api_mock.fetch_open_orders.call_count == API_RETRY_COUNT + 1 + assert api_mock.fetch_canceled_and_closed_orders.call_count == API_RETRY_COUNT + 1 + + api_mock.fetch_open_orders.reset_mock() + api_mock.fetch_canceled_and_closed_orders.reset_mock() + + api_mock.fetch_canceled_and_closed_orders = MagicMock( + return_value=[{"id": "1234", "status": "closed", "clientOrderId": "123455"}] + ) + api_mock.fetch_open_orders = MagicMock(return_value=[{"id": "50110", "clientOrderId": "1234"}]) + + resp = exchange.fetch_stoploss_order("1234", "ETH/BTC") + assert api_mock.fetch_open_orders.call_count == 2 + assert api_mock.fetch_canceled_and_closed_orders.call_count == 2 + + assert resp["id"] == "1234" + assert resp["id_stop"] == "50110" + assert resp["type"] == "stoploss" + + default_conf["dry_run"] = True + exchange = get_patched_exchange(mocker, default_conf, api_mock, exchange="bitget") + dro_mock = mocker.patch(f"{EXMS}.fetch_dry_run_order", MagicMock(return_value={"id": "123455"})) + + api_mock.fetch_open_orders.reset_mock() + api_mock.fetch_canceled_and_closed_orders.reset_mock() + resp = exchange.fetch_stoploss_order("1234", "ETH/BTC") + + assert api_mock.fetch_open_orders.call_count == 0 + assert api_mock.fetch_canceled_and_closed_orders.call_count == 0 + assert dro_mock.call_count == 1 + + +def test_fetch_stoploss_order_bitget_exceptions(default_conf_usdt, mocker): + default_conf_usdt["dry_run"] = False + api_mock = MagicMock() + + # Test emulation of the stoploss getters + api_mock.fetch_canceled_and_closed_orders = MagicMock(return_value=[]) + + ccxt_exceptionhandlers( + mocker, + default_conf_usdt, + api_mock, + "bitget", + "fetch_stoploss_order", + "fetch_open_orders", + retries=API_RETRY_COUNT + 1, + order_id="12345", + pair="ETH/USDT", + ) + + +def test_bitget_ohlcv_candle_limit(mocker, default_conf_usdt): + # This test is also a live test - so we're sure our limits are correct. + api_mock = MagicMock() + api_mock.options = { + "fetchOHLCV": { + "maxRecentDaysPerTimeframe": { + "1m": 30, + "5m": 30, + "15m": 30, + "30m": 30, + "1h": 60, + "4h": 60, + "1d": 60, + } + } + } + + exch = get_patched_exchange(mocker, default_conf_usdt, api_mock, exchange="bitget") + timeframes = ("1m", "5m", "1h") + + for timeframe in timeframes: + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 200 + + start_time = dt_ts(dt_now() - timedelta(days=17)) + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 + start_time = dt_ts(dt_now() - timedelta(days=48)) + length = 200 if timeframe in ("1m", "5m") else 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 + + start_time = dt_ts(dt_now() - timedelta(days=61)) + length = 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 diff --git a/tests/exchange/test_bybit.py b/tests/exchange/test_bybit.py index 4448f49de..511d8bab4 100644 --- a/tests/exchange/test_bybit.py +++ b/tests/exchange/test_bybit.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from unittest.mock import MagicMock import pytest @@ -73,7 +73,7 @@ async def test_bybit_fetch_funding_rate(default_conf, mocker): def test_bybit_get_funding_fees(default_conf, mocker): - now = datetime.now(timezone.utc) + now = datetime.now(UTC) exchange = get_patched_exchange(mocker, default_conf, exchange="bybit") exchange._fetch_and_calculate_funding_fees = MagicMock() exchange.get_funding_fees("BTC/USDT:USDT", 1, False, now) @@ -96,11 +96,28 @@ def test_bybit_fetch_orders(default_conf, mocker, limit_order): limit_order["sell"], ] ) - api_mock.fetch_open_orders = MagicMock(return_value=[limit_order["buy"]]) - api_mock.fetch_closed_orders = MagicMock(return_value=[limit_order["buy"]]) + api_mock.fetch_open_orders = MagicMock( + side_effect=[ + [{**limit_order["buy"], "id": 1}], + [{**limit_order["buy"], "id": 2}], + [{**limit_order["buy"], "id": 3}], + ] + ) + api_mock.fetch_closed_orders = MagicMock( + side_effect=[ + [{**limit_order["buy"], "id": 5}], + [{**limit_order["buy"], "id": 6}], + [{**limit_order["buy"], "id": 7}], + ] + ) - mocker.patch(f"{EXMS}.exchange_has", return_value=True) - start_time = datetime.now(timezone.utc) - timedelta(days=20) + def exchange_has(value): + if value == "fetchOrders": + return False + return True + + mocker.patch(f"{EXMS}.exchange_has", side_effect=exchange_has) + start_time = datetime.now(UTC) - timedelta(days=20) exchange = get_patched_exchange(mocker, default_conf, api_mock, exchange="bybit") # Not available in dry-run @@ -111,9 +128,9 @@ def test_bybit_fetch_orders(default_conf, mocker, limit_order): exchange = get_patched_exchange(mocker, default_conf, api_mock, exchange="bybit") res = exchange.fetch_orders("mocked", start_time) # Bybit will call the endpoint 3 times, as it has a limit of 7 days per call - assert api_mock.fetch_orders.call_count == 3 - assert api_mock.fetch_open_orders.call_count == 0 - assert api_mock.fetch_closed_orders.call_count == 0 + assert api_mock.fetch_orders.call_count == 0 + assert api_mock.fetch_open_orders.call_count == 3 + assert api_mock.fetch_closed_orders.call_count == 3 assert len(res) == 2 * 3 diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index c0023f0ad..d24755890 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1,7 +1,7 @@ import copy import logging from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from random import randint from unittest.mock import MagicMock, Mock, PropertyMock, patch @@ -35,7 +35,6 @@ from freqtrade.exchange.common import ( API_FETCH_ORDER_RETRY_COUNT, API_RETRY_COUNT, calculate_backoff, - remove_exchange_credentials, ) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from freqtrade.util import dt_now, dt_ts @@ -167,20 +166,6 @@ def test_init(default_conf, mocker, caplog): assert log_has("Instance is running with dry_run enabled", caplog) -def test_remove_exchange_credentials(default_conf) -> None: - conf = deepcopy(default_conf) - remove_exchange_credentials(conf["exchange"], False) - - assert conf["exchange"]["key"] != "" - assert conf["exchange"]["secret"] != "" - - remove_exchange_credentials(conf["exchange"], True) - assert conf["exchange"]["key"] == "" - assert conf["exchange"]["secret"] == "" - assert conf["exchange"]["password"] == "" - assert conf["exchange"]["uid"] == "" - - def test_init_ccxt_kwargs(default_conf, mocker, caplog): mocker.patch(f"{EXMS}.reload_markets") mocker.patch(f"{EXMS}.validate_stakecurrency") @@ -590,7 +575,8 @@ def test__load_markets(default_conf, mocker, caplog): expected_return = {"ETH/BTC": "available"} api_mock = MagicMock() - api_mock.load_markets = get_mock_coro(return_value=expected_return) + api_mock.load_markets = get_mock_coro() + api_mock.markets = expected_return mocker.patch(f"{EXMS}._init_ccxt", MagicMock(return_value=api_mock)) default_conf["exchange"]["pair_whitelist"] = ["ETH/BTC"] ex = Exchange(default_conf) @@ -606,6 +592,7 @@ def test_reload_markets(default_conf, mocker, caplog, time_machine): time_machine.move_to(start_dt, tick=False) api_mock = MagicMock() api_mock.load_markets = get_mock_coro(return_value=initial_markets) + api_mock.markets = initial_markets default_conf["exchange"]["markets_refresh_interval"] = 10 exchange = get_patched_exchange( mocker, default_conf, api_mock, exchange="binance", mock_markets=False @@ -624,6 +611,7 @@ def test_reload_markets(default_conf, mocker, caplog, time_machine): api_mock.load_markets = get_mock_coro(return_value=updated_markets) # more than 10 minutes have passed, reload is executed time_machine.move_to(start_dt + timedelta(minutes=11), tick=False) + api_mock.markets = updated_markets exchange.reload_markets() assert exchange.markets == updated_markets assert lam_spy.call_count == 1 @@ -669,34 +657,33 @@ def test_reload_markets_exception(default_conf, mocker, caplog): @pytest.mark.parametrize("stake_currency", ["ETH", "BTC", "USDT"]) -def test_validate_stakecurrency(default_conf, stake_currency, mocker, caplog): +def test_validate_stakecurrency(default_conf, stake_currency, mocker): default_conf["stake_currency"] = stake_currency api_mock = MagicMock() - type(api_mock).load_markets = get_mock_coro( - return_value={ - "ETH/BTC": {"quote": "BTC"}, - "LTC/BTC": {"quote": "BTC"}, - "XRP/ETH": {"quote": "ETH"}, - "NEO/USDT": {"quote": "USDT"}, - } - ) + api_mock.load_markets = get_mock_coro() + api_mock.markets = { + "ETH/BTC": {"quote": "BTC"}, + "LTC/BTC": {"quote": "BTC"}, + "XRP/ETH": {"quote": "ETH"}, + "NEO/USDT": {"quote": "USDT"}, + } mocker.patch(f"{EXMS}._init_ccxt", MagicMock(return_value=api_mock)) mocker.patch(f"{EXMS}.validate_timeframes") mocker.patch(f"{EXMS}.validate_pricing") Exchange(default_conf) -def test_validate_stakecurrency_error(default_conf, mocker, caplog): +def test_validate_stakecurrency_error(default_conf, mocker): default_conf["stake_currency"] = "XRP" api_mock = MagicMock() - type(api_mock).load_markets = get_mock_coro( - return_value={ - "ETH/BTC": {"quote": "BTC"}, - "LTC/BTC": {"quote": "BTC"}, - "XRP/ETH": {"quote": "ETH"}, - "NEO/USDT": {"quote": "USDT"}, - } - ) + api_mock.load_markets = get_mock_coro() + api_mock.markets = { + "ETH/BTC": {"quote": "BTC"}, + "LTC/BTC": {"quote": "BTC"}, + "XRP/ETH": {"quote": "ETH"}, + "NEO/USDT": {"quote": "USDT"}, + } + mocker.patch(f"{EXMS}._init_ccxt", MagicMock(return_value=api_mock)) mocker.patch(f"{EXMS}.validate_timeframes") with pytest.raises( @@ -705,7 +692,7 @@ def test_validate_stakecurrency_error(default_conf, mocker, caplog): ): Exchange(default_conf) - type(api_mock).load_markets = get_mock_coro(side_effect=ccxt.NetworkError("No connection.")) + api_mock.load_markets = get_mock_coro(side_effect=ccxt.NetworkError("No connection.")) mocker.patch(f"{EXMS}._init_ccxt", MagicMock(return_value=api_mock)) with pytest.raises( @@ -1726,17 +1713,22 @@ def test_fetch_positions(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_fetch_orders(default_conf, mocker, exchange_name, limit_order): api_mock = MagicMock() - api_mock.fetch_orders = MagicMock( - return_value=[ - limit_order["buy"], - limit_order["sell"], + call_count = 1 + + def return_value(*args, **kwargs): + nonlocal call_count + call_count += 2 + return [ + {**limit_order["buy"], "id": call_count}, + {**limit_order["sell"], "id": call_count + 1}, ] - ) + + api_mock.fetch_orders = MagicMock(side_effect=return_value) api_mock.fetch_open_orders = MagicMock(return_value=[limit_order["buy"]]) api_mock.fetch_closed_orders = MagicMock(return_value=[limit_order["buy"]]) mocker.patch(f"{EXMS}.exchange_has", return_value=True) - start_time = datetime.now(timezone.utc) - timedelta(days=20) + start_time = datetime.now(UTC) - timedelta(days=20) expected = 1 if exchange_name == "bybit": expected = 3 @@ -2114,7 +2106,7 @@ def test___now_is_time_to_refresh(default_conf, mocker, exchange_name, time_mach exchange = get_patched_exchange(mocker, default_conf, exchange=exchange_name) pair = "BTC/USDT" candle_type = CandleType.SPOT - start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=timezone.utc) + start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=UTC) time_machine.move_to(start_dt, tick=False) assert (pair, "5m", candle_type) not in exchange._pairs_last_refresh_time @@ -2136,6 +2128,21 @@ def test___now_is_time_to_refresh(default_conf, mocker, exchange_name, time_mach time_machine.move_to(start_dt + timedelta(minutes=5, seconds=1), tick=False) assert exchange._now_is_time_to_refresh(pair, "5m", candle_type) is True + # Test with 1d data + start_day_dt = datetime(2023, 12, 1, 0, 0, 0, tzinfo=UTC) + last_closed_candle_1d = dt_ts(start_day_dt - timedelta(days=1)) + exchange._pairs_last_refresh_time[(pair, "1d", candle_type)] = last_closed_candle_1d + + time_machine.move_to(start_day_dt - timedelta(seconds=5), tick=False) + assert exchange._now_is_time_to_refresh(pair, "1d", candle_type) is False + + time_machine.move_to(start_day_dt + timedelta(hours=20, seconds=5), tick=False) + assert exchange._now_is_time_to_refresh(pair, "1d", candle_type) is False + + # Next candle closed - now we refresh. + time_machine.move_to(start_day_dt + timedelta(days=1, seconds=0), tick=False) + assert exchange._now_is_time_to_refresh(pair, "1d", candle_type) is True + @pytest.mark.parametrize("candle_type", ["mark", ""]) @pytest.mark.parametrize("exchange_name", EXCHANGES) @@ -2190,7 +2197,7 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name, candle_ async def test__async_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name, candle_type): ohlcv = [ [ - int((datetime.now(timezone.utc).timestamp() - 1000) * 1000), + int((datetime.now(UTC).timestamp() - 1000) * 1000), 1, # open 2, # high 3, # low @@ -2494,11 +2501,13 @@ def test_refresh_latest_trades( @pytest.mark.parametrize("candle_type", [CandleType.FUTURES, CandleType.MARK, CandleType.SPOT]) def test_refresh_latest_ohlcv_cache(mocker, default_conf, candle_type, time_machine) -> None: - start = datetime(2021, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc) + start = datetime(2021, 8, 1, 0, 0, 0, 0, tzinfo=UTC) ohlcv = generate_test_data_raw("1h", 100, start.strftime("%Y-%m-%d")) time_machine.move_to(start + timedelta(hours=99, minutes=30)) exchange = get_patched_exchange(mocker, default_conf) + exchange._set_startup_candle_count(default_conf) + mocker.patch(f"{EXMS}.ohlcv_candle_limit", return_value=100) assert exchange._startup_candle_count == 0 @@ -2588,7 +2597,7 @@ def test_refresh_latest_ohlcv_cache(mocker, default_conf, candle_type, time_mach def test_refresh_ohlcv_with_cache(mocker, default_conf, time_machine) -> None: - start = datetime(2021, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc) + start = datetime(2021, 8, 1, 0, 0, 0, 0, tzinfo=UTC) ohlcv = generate_test_data_raw("1h", 100, start.strftime("%Y-%m-%d")) time_machine.move_to(start, tick=False) pairs = [ @@ -2896,7 +2905,7 @@ def test_get_entry_rate( mocker, default_conf, caplog, side, ask, bid, last, last_ab, expected, time_machine ) -> None: caplog.set_level(logging.DEBUG) - start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=timezone.utc) + start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=UTC) time_machine.move_to(start_dt, tick=False) if last_ab is None: del default_conf["entry_pricing"]["price_last_balance"] @@ -2933,7 +2942,7 @@ def test_get_exit_rate( default_conf, mocker, caplog, side, bid, ask, last, last_ab, expected, time_machine ) -> None: caplog.set_level(logging.DEBUG) - start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=timezone.utc) + start_dt = datetime(2023, 12, 1, 0, 10, 0, tzinfo=UTC) time_machine.move_to(start_dt, tick=False) default_conf["exit_pricing"]["price_side"] = side @@ -3262,7 +3271,7 @@ async def test__async_fetch_trades( assert isinstance(res, list) assert isinstance(res[0], list) assert isinstance(res[1], list) - if exchange._trades_pagination == "id": + if exchange._ft_has["trades_pagination"] == "id": if exchange_name == "kraken": assert pagid == 1565798399872512133 else: @@ -3283,7 +3292,7 @@ async def test__async_fetch_trades( assert exchange._api_async.fetch_trades.call_args[1]["limit"] == 1000 assert exchange._api_async.fetch_trades.call_args[1]["params"] == {"from": "123"} - if exchange._trades_pagination == "id": + if exchange._ft_has["trades_pagination"] == "id": if exchange_name == "kraken": assert pagid == 1565798399872512133 else: @@ -3372,10 +3381,10 @@ async def test__async_get_trade_history_id( ): default_conf["exchange"]["only_from_ccxt"] = True exchange = get_patched_exchange(mocker, default_conf, exchange=exchange_name) - if exchange._trades_pagination != "id": + if exchange._ft_has["trades_pagination"] != "id": exchange.close() pytest.skip("Exchange does not support pagination by trade id") - pagination_arg = exchange._trades_pagination_arg + pagination_arg = exchange._ft_has["trades_pagination_arg"] async def mock_get_trade_hist(pair, *args, **kwargs): if "since" in kwargs: @@ -3449,7 +3458,7 @@ async def test__async_get_trade_history_time( caplog.set_level(logging.DEBUG) exchange = get_patched_exchange(mocker, default_conf, exchange=exchange_name) - if exchange._trades_pagination != "time": + if exchange._ft_has["trades_pagination"] != "time": exchange.close() pytest.skip("Exchange does not support pagination by timestamp") # Monkey-patch async function @@ -4012,7 +4021,7 @@ def test_get_trades_for_order(default_conf, mocker, exchange_name, trading_mode, assert api_mock.fetch_my_trades.call_args[0][1] == 1525478395000 assert ( api_mock.fetch_my_trades.call_args[0][1] - == int(since.replace(tzinfo=timezone.utc).timestamp() - 5) * 1000 + == int(since.replace(tzinfo=UTC).timestamp() - 5) * 1000 ) ccxt_exceptionhandlers( @@ -4778,7 +4787,7 @@ def test_calculate_backoff(retrycount, max_retries, expected): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_funding_fees(default_conf_usdt, mocker, exchange_name, caplog): - now = datetime.now(timezone.utc) + now = datetime.now(UTC) default_conf_usdt["trading_mode"] = "futures" default_conf_usdt["margin_mode"] = "isolated" exchange = get_patched_exchange(mocker, default_conf_usdt, exchange=exchange_name) @@ -4947,7 +4956,7 @@ def test_validate_trading_mode_and_margin_mode( ("binance", "margin", {"options": {"defaultType": "margin"}}), ("binance", "futures", {"options": {"defaultType": "swap"}}), ("bybit", "spot", {"options": {"defaultType": "spot"}}), - ("bybit", "futures", {"options": {"defaultType": "swap"}}), + ("bybit", "futures", {"options": {"defaultType": "swap", "defaultSettle": "USDT"}}), ("gate", "futures", {"options": {"defaultType": "swap"}}), ("hitbtc", "futures", {"options": {"defaultType": "swap"}}), ("kraken", "futures", {"options": {"defaultType": "swap"}}), @@ -4955,10 +4964,10 @@ def test_validate_trading_mode_and_margin_mode( ("okx", "futures", {"options": {"defaultType": "swap"}}), ], ) -def test__ccxt_config(default_conf, mocker, exchange_name, trading_mode, ccxt_config): - default_conf["trading_mode"] = trading_mode - default_conf["margin_mode"] = "isolated" - exchange = get_patched_exchange(mocker, default_conf, exchange=exchange_name) +def test__ccxt_config(default_conf_usdt, mocker, exchange_name, trading_mode, ccxt_config): + default_conf_usdt["trading_mode"] = trading_mode + default_conf_usdt["margin_mode"] = "isolated" + exchange = get_patched_exchange(mocker, default_conf_usdt, exchange=exchange_name) assert exchange._ccxt_config == ccxt_config @@ -4995,8 +5004,8 @@ def test_calculate_funding_fees( ): exchange = get_patched_exchange(mocker, default_conf) kraken = get_patched_exchange(mocker, default_conf, exchange="kraken") - prior_date = timeframe_to_prev_date("1h", datetime.now(timezone.utc) - timedelta(hours=1)) - trade_date = timeframe_to_prev_date("1h", datetime.now(timezone.utc)) + prior_date = timeframe_to_prev_date("1h", datetime.now(UTC) - timedelta(hours=1)) + trade_date = timeframe_to_prev_date("1h", datetime.now(UTC)) funding_rates = DataFrame( [ {"date": prior_date, "open": funding_rate}, # Line not used. @@ -5065,9 +5074,9 @@ def test_combine_funding_and_mark( futures_funding_rate, ): exchange = get_patched_exchange(mocker, default_conf) - prior2_date = timeframe_to_prev_date("1h", datetime.now(timezone.utc) - timedelta(hours=2)) - prior_date = timeframe_to_prev_date("1h", datetime.now(timezone.utc) - timedelta(hours=1)) - trade_date = timeframe_to_prev_date("1h", datetime.now(timezone.utc)) + prior2_date = timeframe_to_prev_date("1h", datetime.now(UTC) - timedelta(hours=2)) + prior_date = timeframe_to_prev_date("1h", datetime.now(UTC) - timedelta(hours=1)) + trade_date = timeframe_to_prev_date("1h", datetime.now(UTC)) funding_rates = DataFrame( [ {"date": prior2_date, "open": funding_rate}, @@ -5599,11 +5608,13 @@ def test_liquidation_price_is_none( def test_get_max_pair_stake_amount( mocker, default_conf, + leverage_tiers, ): api_mock = MagicMock() default_conf["margin_mode"] = "isolated" default_conf["trading_mode"] = "futures" exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange._leverage_tiers = leverage_tiers markets = { "XRP/USDT:USDT": { "limits": { @@ -5667,11 +5678,23 @@ def test_get_max_pair_stake_amount( "contractSize": 0.01, "spot": False, }, + "ZEC/USDT:USDT": { + "limits": { + "amount": {"min": 0.001, "max": None}, + "cost": {"min": 5, "max": None}, + }, + "contractSize": 1, + "spot": False, + }, } mocker.patch(f"{EXMS}.markets", markets) assert exchange.get_max_pair_stake_amount("XRP/USDT:USDT", 2.0) == 20000 assert exchange.get_max_pair_stake_amount("XRP/USDT:USDT", 2.0, 5) == 4000 + # limit leverage tiers + assert exchange.get_max_pair_stake_amount("ZEC/USDT:USDT", 2.0, 5) == 100_000 + assert exchange.get_max_pair_stake_amount("ZEC/USDT:USDT", 2.0, 50) == 1000 + assert exchange.get_max_pair_stake_amount("LTC/USDT:USDT", 2.0) == float("inf") assert exchange.get_max_pair_stake_amount("ETH/USDT:USDT", 2.0) == 200 assert exchange.get_max_pair_stake_amount("DOGE/USDT:USDT", 2.0) == 500 @@ -5902,18 +5925,22 @@ def test_get_max_leverage_futures(default_conf, mocker, leverage_tiers): assert exchange.get_max_leverage("XRP/USDT:USDT", 1.0) == 20.0 assert exchange.get_max_leverage("BNB/USDT:USDT", 100.0) == 75.0 assert exchange.get_max_leverage("BTC/USDT:USDT", 170.30) == 125.0 - assert pytest.approx(exchange.get_max_leverage("XRP/USDT:USDT", 99999.9)) == 5.000005 - assert pytest.approx(exchange.get_max_leverage("BNB/USDT:USDT", 1500)) == 33.333333333333333 + assert pytest.approx(exchange.get_max_leverage("XRP/USDT:USDT", 99999.9)) == 5 + assert pytest.approx(exchange.get_max_leverage("BNB/USDT:USDT", 1500)) == 25 assert exchange.get_max_leverage("BTC/USDT:USDT", 300000000) == 2.0 assert exchange.get_max_leverage("BTC/USDT:USDT", 600000000) == 1.0 # Last tier assert exchange.get_max_leverage("SPONGE/USDT:USDT", 200) == 1.0 # Pair not in leverage_tiers assert exchange.get_max_leverage("BTC/USDT:USDT", 0.0) == 125.0 # No stake amount with pytest.raises( - InvalidOrderException, match=r"Amount 1000000000.01 too high for BTC/USDT:USDT" + InvalidOrderException, match=r"Stake amount 1000000000.01 too high for BTC/USDT:USDT" ): exchange.get_max_leverage("BTC/USDT:USDT", 1000000000.01) + assert exchange.get_max_leverage("TIA/USDT:USDT", 130) == 50 + assert exchange.get_max_leverage("TIA/USDT:USDT", 131) == 40 + assert exchange.get_max_leverage("TIA/USDT:USDT", 130.008) == 40 + @pytest.mark.parametrize("exchange_name", ["binance", "kraken", "gate", "okx", "bybit"]) def test__get_params(mocker, default_conf, exchange_name): diff --git a/tests/exchange/test_exchange_utils.py b/tests/exchange/test_exchange_utils.py index a298599c4..47ad7cccb 100644 --- a/tests/exchange/test_exchange_utils.py +++ b/tests/exchange/test_exchange_utils.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring, protected-access, invalid-name -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from math import isnan, nan import pytest @@ -66,7 +66,7 @@ def test_check_exchange(default_conf, caplog) -> None: ) caplog.clear() # Test an available exchange, supported by ccxt - default_conf.get("exchange").update({"name": "huobijp"}) + default_conf.get("exchange").update({"name": "bittrade"}) assert check_exchange(default_conf) assert log_has_re( r"Exchange .* is known to the ccxt library, available for the bot, " @@ -117,7 +117,7 @@ def test_check_exchange(default_conf, caplog) -> None: def test_date_minus_candles(): - date = datetime(2019, 8, 12, 13, 25, 0, tzinfo=timezone.utc) + date = datetime(2019, 8, 12, 13, 25, 0, tzinfo=UTC) assert date_minus_candles("5m", 3, date) == date - timedelta(minutes=15) assert date_minus_candles("5m", 5, date) == date - timedelta(minutes=25) @@ -167,59 +167,59 @@ def test_timeframe_to_resample_freq(timeframe, expected): def test_timeframe_to_prev_date(): # 2019-08-12 13:22:08 - date = datetime.fromtimestamp(1565616128, tz=timezone.utc) + date = datetime.fromtimestamp(1565616128, tz=UTC) tf_list = [ # 5m -> 2019-08-12 13:20:00 - ("5m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)), + ("5m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=UTC)), # 10m -> 2019-08-12 13:20:00 - ("10m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)), + ("10m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=UTC)), # 1h -> 2019-08-12 13:00:00 - ("1h", datetime(2019, 8, 12, 13, 00, 0, tzinfo=timezone.utc)), + ("1h", datetime(2019, 8, 12, 13, 00, 0, tzinfo=UTC)), # 2h -> 2019-08-12 12:00:00 - ("2h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)), + ("2h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=UTC)), # 4h -> 2019-08-12 12:00:00 - ("4h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)), + ("4h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=UTC)), # 1d -> 2019-08-12 00:00:00 - ("1d", datetime(2019, 8, 12, 00, 00, 0, tzinfo=timezone.utc)), + ("1d", datetime(2019, 8, 12, 00, 00, 0, tzinfo=UTC)), ] for interval, result in tf_list: assert timeframe_to_prev_date(interval, date) == result - date = datetime.now(tz=timezone.utc) + date = datetime.now(tz=UTC) assert timeframe_to_prev_date("5m") < date # Does not round - time = datetime(2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc) + time = datetime(2019, 8, 12, 13, 20, 0, tzinfo=UTC) assert timeframe_to_prev_date("5m", time) == time - time = datetime(2019, 8, 12, 13, 0, 0, tzinfo=timezone.utc) + time = datetime(2019, 8, 12, 13, 0, 0, tzinfo=UTC) assert timeframe_to_prev_date("1h", time) == time def test_timeframe_to_next_date(): # 2019-08-12 13:22:08 - date = datetime.fromtimestamp(1565616128, tz=timezone.utc) + date = datetime.fromtimestamp(1565616128, tz=UTC) tf_list = [ # 5m -> 2019-08-12 13:25:00 - ("5m", datetime(2019, 8, 12, 13, 25, 0, tzinfo=timezone.utc)), + ("5m", datetime(2019, 8, 12, 13, 25, 0, tzinfo=UTC)), # 10m -> 2019-08-12 13:30:00 - ("10m", datetime(2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc)), + ("10m", datetime(2019, 8, 12, 13, 30, 0, tzinfo=UTC)), # 1h -> 2019-08-12 14:00:00 - ("1h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc)), + ("1h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=UTC)), # 2h -> 2019-08-12 14:00:00 - ("2h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc)), + ("2h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=UTC)), # 4h -> 2019-08-12 14:00:00 - ("4h", datetime(2019, 8, 12, 16, 00, 0, tzinfo=timezone.utc)), + ("4h", datetime(2019, 8, 12, 16, 00, 0, tzinfo=UTC)), # 1d -> 2019-08-13 00:00:00 - ("1d", datetime(2019, 8, 13, 0, 0, 0, tzinfo=timezone.utc)), + ("1d", datetime(2019, 8, 13, 0, 0, 0, tzinfo=UTC)), ] for interval, result in tf_list: assert timeframe_to_next_date(interval, date) == result - date = datetime.now(tz=timezone.utc) + date = datetime.now(tz=UTC) assert timeframe_to_next_date("5m") > date - date = datetime(2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc) + date = datetime(2019, 8, 12, 13, 30, 0, tzinfo=UTC) assert timeframe_to_next_date("5m", date) == date + timedelta(minutes=5) diff --git a/tests/exchange/test_exchange_ws.py b/tests/exchange/test_exchange_ws.py index 6dee7f339..ed96e66d0 100644 --- a/tests/exchange/test_exchange_ws.py +++ b/tests/exchange/test_exchange_ws.py @@ -50,18 +50,18 @@ def test_exchangews_cleanup_error(mocker, caplog): def patch_eventloop_threading(exchange): - is_init = False + init_event = threading.Event() - def thread_fuck(): - nonlocal is_init + def thread_func(): exchange._loop = asyncio.new_event_loop() - is_init = True + init_event.set() exchange._loop.run_forever() - x = threading.Thread(target=thread_fuck, daemon=True) + x = threading.Thread(target=thread_func, daemon=True) x.start() - while not is_init: - pass + # Wait for thread to be properly initialized with timeout + if not init_event.wait(timeout=5.0): + raise RuntimeError("Failed to initialize event loop thread") async def test_exchangews_ohlcv(mocker, time_machine, caplog): @@ -69,14 +69,24 @@ async def test_exchangews_ohlcv(mocker, time_machine, caplog): ccxt_object = MagicMock() caplog.set_level(logging.DEBUG) - async def sleeper(*args, **kwargs): - # pass - await asyncio.sleep(0.12) + async def controlled_sleeper(*args, **kwargs): + # Sleep to pass control back to the event loop + await asyncio.sleep(0.1) return MagicMock() - ccxt_object.un_watch_ohlcv_for_symbols = AsyncMock(side_effect=NotSupported) + async def wait_for_condition(condition_func, timeout_=5.0, check_interval=0.01): + """Wait for a condition to be true with timeout.""" + try: + async with asyncio.timeout(timeout_): + while True: + if condition_func(): + return True + await asyncio.sleep(check_interval) + except TimeoutError: + return False - ccxt_object.watch_ohlcv = AsyncMock(side_effect=sleeper) + ccxt_object.un_watch_ohlcv_for_symbols = AsyncMock(side_effect=NotSupported) + ccxt_object.watch_ohlcv = AsyncMock(side_effect=controlled_sleeper) ccxt_object.close = AsyncMock() time_machine.move_to("2024-11-01 01:00:02 +00:00") @@ -90,7 +100,14 @@ async def test_exchangews_ohlcv(mocker, time_machine, caplog): exchange_ws.schedule_ohlcv("ETH/BTC", "1m", CandleType.SPOT) exchange_ws.schedule_ohlcv("XRP/BTC", "1m", CandleType.SPOT) - await asyncio.sleep(0.2) + + # Wait for both pairs to be properly scheduled and watching + await wait_for_condition( + lambda: ( + len(exchange_ws._klines_watching) == 2 and len(exchange_ws._klines_scheduled) == 2 + ), + timeout_=2.0, + ) assert exchange_ws._klines_watching == { ("ETH/BTC", "1m", CandleType.SPOT), @@ -100,14 +117,21 @@ async def test_exchangews_ohlcv(mocker, time_machine, caplog): ("ETH/BTC", "1m", CandleType.SPOT), ("XRP/BTC", "1m", CandleType.SPOT), } - await asyncio.sleep(0.1) - assert ccxt_object.watch_ohlcv.call_count == 6 + + # Wait for the expected number of watch calls + await wait_for_condition(lambda: ccxt_object.watch_ohlcv.call_count >= 6, timeout_=3.0) + assert ccxt_object.watch_ohlcv.call_count >= 6 ccxt_object.watch_ohlcv.reset_mock() time_machine.shift(timedelta(minutes=5)) exchange_ws.schedule_ohlcv("ETH/BTC", "1m", CandleType.SPOT) - await asyncio.sleep(1) + + # Wait for log message + await wait_for_condition( + lambda: log_has_re("un_watch_ohlcv_for_symbols not supported: ", caplog), timeout_=2.0 + ) assert log_has_re("un_watch_ohlcv_for_symbols not supported: ", caplog) + # XRP/BTC should be cleaned up. assert exchange_ws._klines_watching == { ("ETH/BTC", "1m", CandleType.SPOT), @@ -116,6 +140,8 @@ async def test_exchangews_ohlcv(mocker, time_machine, caplog): # Cleanup happened. ccxt_object.un_watch_ohlcv_for_symbols = AsyncMock(side_effect=ValueError) exchange_ws.schedule_ohlcv("ETH/BTC", "1m", CandleType.SPOT) + + # Verify final state assert exchange_ws._klines_watching == { ("ETH/BTC", "1m", CandleType.SPOT), } diff --git a/tests/exchange/test_gate.py b/tests/exchange/test_gate.py index 3f5ecacf6..ee3d70c84 100644 --- a/tests/exchange/test_gate.py +++ b/tests/exchange/test_gate.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from unittest.mock import MagicMock import pytest @@ -113,7 +113,7 @@ def test_fetch_my_trades_gate(mocker, default_conf, takerormaker, rate, cost): ) exchange = get_patched_exchange(mocker, default_conf, api_mock=api_mock, exchange="gate") exchange._trading_fees = tick - trades = exchange.get_trades_for_order("22255", "ETH/USDT:USDT", datetime.now(timezone.utc)) + trades = exchange.get_trades_for_order("22255", "ETH/USDT:USDT", datetime.now(UTC)) trade = trades[0] assert trade["fee"] assert trade["fee"]["rate"] == rate diff --git a/tests/exchange/test_hyperliquid.py b/tests/exchange/test_hyperliquid.py index 808bef802..c7924080e 100644 --- a/tests/exchange/test_hyperliquid.py +++ b/tests/exchange/test_hyperliquid.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from unittest.mock import MagicMock, PropertyMock import pytest @@ -283,7 +283,8 @@ def test_hyperliquid_dry_run_liquidation_price(default_conf, mocker): default_conf["trading_mode"] = "futures" default_conf["margin_mode"] = "isolated" default_conf["stake_currency"] = "USDC" - api_mock.load_markets = get_mock_coro(return_value=markets) + api_mock.load_markets = get_mock_coro() + api_mock.markets = markets exchange = get_patched_exchange( mocker, default_conf, api_mock, exchange="hyperliquid", mock_markets=False ) @@ -305,7 +306,7 @@ def test_hyperliquid_dry_run_liquidation_price(default_conf, mocker): def test_hyperliquid_get_funding_fees(default_conf, mocker): - now = datetime.now(timezone.utc) + now = datetime.now(UTC) exchange = get_patched_exchange(mocker, default_conf, exchange="hyperliquid") exchange._fetch_and_calculate_funding_fees = MagicMock() exchange.get_funding_fees("BTC/USDC:USDC", 1, False, now) diff --git a/tests/exchange/test_okx.py b/tests/exchange/test_okx.py index 1bf783daa..bf881163e 100644 --- a/tests/exchange/test_okx.py +++ b/tests/exchange/test_okx.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from unittest.mock import AsyncMock, MagicMock, PropertyMock import ccxt @@ -15,7 +15,7 @@ from tests.exchange.test_exchange import ccxt_exceptionhandlers def test_okx_ohlcv_candle_limit(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, exchange="okx") timeframes = ("1m", "5m", "1h") - start_time = int(datetime(2021, 1, 1, tzinfo=timezone.utc).timestamp() * 1000) + start_time = int(datetime(2021, 1, 1, tzinfo=UTC).timestamp() * 1000) for timeframe in timeframes: assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT) == 300 @@ -29,8 +29,7 @@ def test_okx_ohlcv_candle_limit(default_conf, mocker): assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 100 one_call = int( ( - datetime.now(timezone.utc) - - timedelta(minutes=290 * timeframe_to_minutes(timeframe)) + datetime.now(UTC) - timedelta(minutes=290 * timeframe_to_minutes(timeframe)) ).timestamp() * 1000 ) @@ -40,8 +39,7 @@ def test_okx_ohlcv_candle_limit(default_conf, mocker): one_call = int( ( - datetime.now(timezone.utc) - - timedelta(minutes=320 * timeframe_to_minutes(timeframe)) + datetime.now(UTC) - timedelta(minutes=320 * timeframe_to_minutes(timeframe)) ).timestamp() * 1000 ) @@ -693,7 +691,7 @@ def test_fetch_orders_okx(default_conf, mocker, limit_order): api_mock.fetch_closed_orders = MagicMock(return_value=[limit_order["buy"]]) mocker.patch(f"{EXMS}.exchange_has", return_value=True) - start_time = datetime.now(timezone.utc) - timedelta(days=20) + start_time = datetime.now(UTC) - timedelta(days=20) exchange = get_patched_exchange(mocker, default_conf, api_mock, exchange="okx") # Not available in dry-run @@ -727,7 +725,7 @@ def test_fetch_orders_okx(default_conf, mocker, limit_order): api_mock.fetch_closed_orders.reset_mock() # regular closed_orders endpoint only has history for 7 days. - exchange.fetch_orders("mocked", datetime.now(timezone.utc) - timedelta(days=6)) + exchange.fetch_orders("mocked", datetime.now(UTC) - timedelta(days=6)) assert api_mock.fetch_orders.call_count == 0 assert api_mock.fetch_open_orders.call_count == 1 assert api_mock.fetch_closed_orders.call_count == 1 diff --git a/tests/exchange_online/conftest.py b/tests/exchange_online/conftest.py index f7cf49aa4..65d11f949 100644 --- a/tests/exchange_online/conftest.py +++ b/tests/exchange_online/conftest.py @@ -408,13 +408,21 @@ EXCHANGES = { "candle_count": 200, "orderbook_max_entries": 50, }, - "htx": { - "pair": "ETH/BTC", - "stake_currency": "BTC", + "bitget": { + "pair": "BTC/USDT", + "stake_currency": "USDT", "hasQuoteVolume": True, "timeframe": "1h", "candle_count": 1000, }, + # TODO: re-enable htx once certificates work again + # "htx": { + # "pair": "ETH/BTC", + # "stake_currency": "BTC", + # "hasQuoteVolume": True, + # "timeframe": "1h", + # "candle_count": 1000, + # }, "bitvavo": { "pair": "BTC/EUR", "stake_currency": "EUR", @@ -487,10 +495,10 @@ EXCHANGES = { ], }, "hyperliquid": { - "pair": "PURR/USDC", + "pair": "UBTC/USDC", "stake_currency": "USDC", "hasQuoteVolume": False, - "timeframe": "1h", + "timeframe": "30m", "futures": True, "candle_count": 5000, "orderbook_max_entries": 20, @@ -498,6 +506,8 @@ EXCHANGES = { "hasQuoteVolumeFutures": True, "leverage_tiers_public": False, "leverage_in_spot_market": False, + # TODO: re-enable hyperliquid websocket tests + "skip_ws_tests": True, }, } @@ -568,12 +578,16 @@ def get_futures_exchange(exchange_name, exchange_conf, class_mocker): @pytest.fixture(params=EXCHANGES, scope="class") def exchange(request, exchange_conf, class_mocker): class_mocker.patch("freqtrade.exchange.bybit.Bybit.additional_exchange_init") - return get_exchange(request.param, exchange_conf) + exchange, name = get_exchange(request.param, exchange_conf) + yield exchange, name + exchange.close() @pytest.fixture(params=EXCHANGES, scope="class") def exchange_futures(request, exchange_conf, class_mocker): - return get_futures_exchange(request.param, exchange_conf, class_mocker) + exchange, name = get_futures_exchange(request.param, exchange_conf, class_mocker) + yield exchange, name + exchange.close() @pytest.fixture(params=["spot", "futures"], scope="class") @@ -599,7 +613,7 @@ def exchange_ws(request, exchange_conf, exchange_mode, class_mocker): else: pytest.skip("Exchange does not support futures.") - if not exchange._has_watch_ohlcv: + if not exchange._exchange_ws: pytest.skip("Exchange does not support watch_ohlcv.") yield exchange, name, pair exchange.close() diff --git a/tests/exchange_online/test_ccxt_compat.py b/tests/exchange_online/test_ccxt_compat.py index 85de9b5ec..c71e4809b 100644 --- a/tests/exchange_online/test_ccxt_compat.py +++ b/tests/exchange_online/test_ccxt_compat.py @@ -5,7 +5,7 @@ However, these tests should give a good idea to determine if a new exchange is suitable to run with freqtrade. """ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta import pytest @@ -248,7 +248,7 @@ class TestCCXTExchange: len(exch.klines(pair_tf)) > exch.ohlcv_candle_limit(timeframe, CandleType.SPOT) * 0.90 ) # Check if last-timeframe is within the last 2 intervals - now = datetime.now(timezone.utc) - timedelta(minutes=(timeframe_to_minutes(timeframe) * 2)) + now = datetime.now(UTC) - timedelta(minutes=(timeframe_to_minutes(timeframe) * 2)) assert exch.klines(pair_tf).iloc[-1]["date"] >= timeframe_to_prev_date(timeframe, now) def test_ccxt_fetch_ohlcv_startdate(self, exchange: EXCHANGE_FIXTURE_TYPE): @@ -266,15 +266,13 @@ class TestCCXTExchange: assert isinstance(ohlcv, dict) assert len(ohlcv[pair_tf]) == len(exch.klines(pair_tf)) # Check if last-timeframe is within the last 2 intervals - now = datetime.now(timezone.utc) - timedelta(minutes=(timeframe_to_minutes(timeframe) * 2)) + now = datetime.now(UTC) - timedelta(minutes=(timeframe_to_minutes(timeframe) * 2)) assert exch.klines(pair_tf).iloc[-1]["date"] >= timeframe_to_prev_date(timeframe, now) assert exch.klines(pair_tf)["date"].astype(int).iloc[0] // 1e6 == since_ms - def ccxt__async_get_candle_history( - self, exchange, exchangename, pair, timeframe, candle_type, factor=0.9 - ): + def _ccxt__async_get_candle_history(self, exchange, pair, timeframe, candle_type, factor=0.9): timeframe_ms = timeframe_to_msecs(timeframe) - now = timeframe_to_prev_date(timeframe, datetime.now(timezone.utc)) + now = timeframe_to_prev_date(timeframe, datetime.now(UTC)) for offset in (360, 120, 30, 10, 5, 2): since = now - timedelta(days=offset) since_ms = int(since.timestamp() * 1000) @@ -304,7 +302,7 @@ class TestCCXTExchange: pytest.skip("Exchange does not support candle history") pair = EXCHANGES[exchangename]["pair"] timeframe = EXCHANGES[exchangename]["timeframe"] - self.ccxt__async_get_candle_history(exc, exchangename, pair, timeframe, CandleType.SPOT) + self._ccxt__async_get_candle_history(exc, pair, timeframe, CandleType.SPOT) @pytest.mark.parametrize( "candle_type", @@ -315,7 +313,7 @@ class TestCCXTExchange: ], ) def test_ccxt__async_get_candle_history_futures( - self, exchange_futures: EXCHANGE_FIXTURE_TYPE, candle_type + self, exchange_futures: EXCHANGE_FIXTURE_TYPE, candle_type: CandleType ): exchange, exchangename = exchange_futures pair = EXCHANGES[exchangename].get("futures_pair", EXCHANGES[exchangename]["pair"]) @@ -324,9 +322,8 @@ class TestCCXTExchange: timeframe = exchange._ft_has.get( "funding_fee_timeframe", exchange._ft_has["mark_ohlcv_timeframe"] ) - self.ccxt__async_get_candle_history( + self._ccxt__async_get_candle_history( exchange, - exchangename, pair=pair, timeframe=timeframe, candle_type=candle_type, @@ -336,7 +333,7 @@ class TestCCXTExchange: exchange, exchangename = exchange_futures pair = EXCHANGES[exchangename].get("futures_pair", EXCHANGES[exchangename]["pair"]) - since = int((datetime.now(timezone.utc) - timedelta(days=5)).timestamp() * 1000) + since = int((datetime.now(UTC) - timedelta(days=5)).timestamp() * 1000) timeframe_ff = exchange._ft_has.get( "funding_fee_timeframe", exchange._ft_has["mark_ohlcv_timeframe"] ) @@ -371,7 +368,7 @@ class TestCCXTExchange: def test_ccxt_fetch_mark_price_history(self, exchange_futures: EXCHANGE_FIXTURE_TYPE): exchange, exchangename = exchange_futures pair = EXCHANGES[exchangename].get("futures_pair", EXCHANGES[exchangename]["pair"]) - since = int((datetime.now(timezone.utc) - timedelta(days=5)).timestamp() * 1000) + since = int((datetime.now(UTC) - timedelta(days=5)).timestamp() * 1000) pair_tf = (pair, "1h", CandleType.MARK) mark_ohlcv = exchange.refresh_latest_ohlcv([pair_tf], since_ms=since, drop_incomplete=False) @@ -383,27 +380,32 @@ class TestCCXTExchange: this_hour = timeframe_to_prev_date(expected_tf) prev_hour = timeframe_to_prev_date(expected_tf, this_hour - timedelta(minutes=1)) + # Mark price must be available for the currently open candle (as well as older candles, + # even though the test only asserts the last two). + # This is a requirement to have funding fee calculations available correctly and timely + # right as the funding fee applies (e.g. at 08:00). assert mark_candles[mark_candles["date"] == prev_hour].iloc[0]["open"] != 0.0 assert mark_candles[mark_candles["date"] == this_hour].iloc[0]["open"] != 0.0 def test_ccxt__calculate_funding_fees(self, exchange_futures: EXCHANGE_FIXTURE_TYPE): exchange, exchangename = exchange_futures pair = EXCHANGES[exchangename].get("futures_pair", EXCHANGES[exchangename]["pair"]) - since = datetime.now(timezone.utc) - timedelta(days=5) + since = datetime.now(UTC) - timedelta(days=5) funding_fee = exchange._fetch_and_calculate_funding_fees( pair, 20, is_short=False, open_date=since ) assert isinstance(funding_fee, float) - # assert funding_fee > 0 + assert funding_fee != 0 - def test_ccxt__async_get_trade_history(self, exchange: EXCHANGE_FIXTURE_TYPE): + def test_ccxt__async_get_trade_history(self, exchange: EXCHANGE_FIXTURE_TYPE, mocker): exch, exchangename = exchange if not (lookback := EXCHANGES[exchangename].get("trades_lookback_hours")): pytest.skip("test_fetch_trades not enabled for this exchange") pair = EXCHANGES[exchangename]["pair"] - since = int((datetime.now(timezone.utc) - timedelta(hours=lookback)).timestamp() * 1000) + since = int((datetime.now(UTC) - timedelta(hours=lookback)).timestamp() * 1000) + nvspy = mocker.spy(exch, "_get_trade_pagination_next_value") res = exch.loop.run_until_complete(exch._async_get_trade_history(pair, since, None, None)) assert len(res) == 2 res_pair, res_trades = res @@ -411,6 +413,14 @@ class TestCCXTExchange: assert isinstance(res_trades, list) assert res_trades[0][0] >= since assert len(res_trades) > 1200 + assert nvspy.call_count > 5 + if exchangename == "kraken": + # for Kraken, the pagination value is added to the last trade result by ccxt. + # We therefore expect that the last row has one additional field + + # Pick a random spy call + trades_orig = nvspy.call_args_list[2][0][0] + assert len(trades_orig[-1].get("info")) > len(trades_orig[-2].get("info")) def test_ccxt_get_fee(self, exchange: EXCHANGE_FIXTURE_TYPE): exch, exchangename = exchange @@ -520,3 +530,35 @@ class TestCCXTExchange: exch, exchangename = exchange for method in EXCHANGES[exchangename].get("private_methods", []): assert hasattr(exch._api, method) + + def test_ccxt_bitget_ohlcv_candle_limit(self, exchange: EXCHANGE_FIXTURE_TYPE): + exch, exchangename = exchange + if exchangename != "bitget": + pytest.skip("This test is only for the Bitget exchange") + + timeframes = ("1m", "5m", "1h") + + for timeframe in timeframes: + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 200 + + start_time = dt_ts(dt_now() - timedelta(days=17)) + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 + start_time = dt_ts(dt_now() - timedelta(days=48)) + length = 200 if timeframe in ("1m", "5m") else 1000 + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 + + start_time = dt_ts(dt_now() - timedelta(days=61)) + length = 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length + assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 diff --git a/tests/exchange_online/test_ccxt_ws_compat.py b/tests/exchange_online/test_ccxt_ws_compat.py index 6ab7600f4..a84f1e524 100644 --- a/tests/exchange_online/test_ccxt_ws_compat.py +++ b/tests/exchange_online/test_ccxt_ws_compat.py @@ -35,21 +35,22 @@ class TestCCXTExchangeWs: break sleep(1) + caplog.set_level(logging.DEBUG) res = exch.refresh_latest_ohlcv([pair_tf]) assert m_cand.call_count == 1 # Currently open candle next_candle = timeframe_to_prev_date(timeframe, dt_now()) - now = next_candle - timedelta(seconds=1) # Currently closed candle - curr_candle = timeframe_to_prev_date(timeframe, now) + curr_candle = timeframe_to_prev_date(timeframe, next_candle - timedelta(seconds=1)) assert pair_tf in exch._exchange_ws._klines_watching assert pair_tf in exch._exchange_ws._klines_scheduled assert res[pair_tf] is not None df1 = res[pair_tf] - caplog.set_level(logging.DEBUG) - assert df1.iloc[-1]["date"] == curr_candle + assert df1.iloc[-1]["date"] == curr_candle, ( + f"Expected {curr_candle}, got {df1.iloc[-1]['date']} for {pair_tf}, now: {dt_now()}" + ) # Wait until the next candle (might be up to 1 minute). while True: diff --git a/tests/freqai/test_freqai_backtesting.py b/tests/freqai/test_freqai_backtesting.py index e689d3927..fd825e106 100644 --- a/tests/freqai/test_freqai_backtesting.py +++ b/tests/freqai/test_freqai_backtesting.py @@ -1,5 +1,5 @@ from copy import deepcopy -from datetime import datetime, timezone +from datetime import UTC, datetime from pathlib import Path from unittest.mock import PropertyMock @@ -10,7 +10,6 @@ from freqtrade.configuration.timerange import TimeRange from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.enums import RunMode -from freqtrade.enums.candletype import CandleType from freqtrade.exceptions import OperationalException from freqtrade.freqai.data_kitchen import FreqaiDataKitchen from freqtrade.optimize.backtesting import Backtesting @@ -28,7 +27,7 @@ from tests.freqai.conftest import get_patched_freqai_strategy def test_freqai_backtest_start_backtest_list(freqai_conf, mocker, testdatadir, caplog): patch_exchange(mocker) - now = datetime.now(timezone.utc) + now = datetime.now(UTC) mocker.patch( "freqtrade.plugins.pairlistmanager.PairListManager.whitelist", PropertyMock(return_value=["HULUMULU/USDT", "XRP/USDT"]), @@ -73,7 +72,7 @@ def test_freqai_backtest_load_data( ): patch_exchange(mocker) - now = datetime.now(timezone.utc) + now = datetime.now(UTC) mocker.patch( "freqtrade.plugins.pairlistmanager.PairListManager.whitelist", PropertyMock(return_value=["HULUMULU/USDT", "XRP/USDT"]), @@ -98,7 +97,7 @@ def test_freqai_backtest_load_data( def test_freqai_backtest_live_models_model_not_found(freqai_conf, mocker, testdatadir, caplog): patch_exchange(mocker) - now = datetime.now(timezone.utc) + now = datetime.now(UTC) mocker.patch( "freqtrade.plugins.pairlistmanager.PairListManager.whitelist", PropertyMock(return_value=["HULUMULU/USDT", "XRP/USDT"]), @@ -142,7 +141,7 @@ def test_freqai_backtest_consistent_timerange(mocker, freqai_conf): gbs = mocker.patch("freqtrade.optimize.backtesting.generate_backtest_stats") - freqai_conf["candle_type_def"] = CandleType.FUTURES + freqai_conf["trading_mode"] = "futures" freqai_conf.get("exchange", {}).update({"pair_whitelist": ["XRP/USDT:USDT"]}) freqai_conf.get("freqai", {}).get("feature_parameters", {}).update( {"include_timeframes": ["5m", "1h"], "include_corr_pairlist": []} @@ -163,6 +162,6 @@ def test_freqai_backtest_consistent_timerange(mocker, freqai_conf): backtesting = Backtesting(deepcopy(freqai_conf)) backtesting.start() - assert gbs.call_args[1]["min_date"] == datetime(2021, 11, 20, 0, 0, tzinfo=timezone.utc) - assert gbs.call_args[1]["max_date"] == datetime(2021, 11, 21, 0, 0, tzinfo=timezone.utc) + assert gbs.call_args[1]["min_date"] == datetime(2021, 11, 20, 0, 0, tzinfo=UTC) + assert gbs.call_args[1]["max_date"] == datetime(2021, 11, 21, 0, 0, tzinfo=UTC) Backtesting.cleanup() diff --git a/tests/freqai/test_freqai_datakitchen.py b/tests/freqai/test_freqai_datakitchen.py index 2e92ae447..d974ac801 100644 --- a/tests/freqai/test_freqai_datakitchen.py +++ b/tests/freqai/test_freqai_datakitchen.py @@ -1,5 +1,5 @@ import shutil -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from unittest.mock import MagicMock @@ -67,9 +67,9 @@ def test_split_timerange( def test_check_if_model_expired(mocker, freqai_conf): dk = get_patched_data_kitchen(mocker, freqai_conf) - now = datetime.now(tz=timezone.utc).timestamp() + now = datetime.now(tz=UTC).timestamp() assert dk.check_if_model_expired(now) is False - now = (datetime.now(tz=timezone.utc) - timedelta(hours=2)).timestamp() + now = (datetime.now(tz=UTC) - timedelta(hours=2)).timestamp() assert dk.check_if_model_expired(now) is True shutil.rmtree(Path(dk.full_path)) diff --git a/tests/freqtradebot/test_freqtradebot.py b/tests/freqtradebot/test_freqtradebot.py index 3ff8fcb5e..2db24cdb9 100644 --- a/tests/freqtradebot/test_freqtradebot.py +++ b/tests/freqtradebot/test_freqtradebot.py @@ -43,7 +43,6 @@ from tests.conftest import ( get_patched_worker, log_has, log_has_re, - patch_edge, patch_exchange, patch_get_signal, patch_wallet, @@ -253,92 +252,6 @@ def test_check_available_stake_amount( freqtrade.wallets.get_trade_stake_amount("ETH/USDT", 1) -def test_edge_called_in_process(mocker, edge_conf) -> None: - patch_RPCManager(mocker) - patch_edge(mocker) - - patch_exchange(mocker) - freqtrade = FreqtradeBot(edge_conf) - patch_get_signal(freqtrade) - freqtrade.process() - assert freqtrade.active_pair_whitelist == ["NEO/BTC", "LTC/BTC"] - - -def test_edge_overrides_stake_amount(mocker, edge_conf) -> None: - patch_RPCManager(mocker) - patch_exchange(mocker) - patch_edge(mocker) - edge_conf["dry_run_wallet"] = 999.9 - freqtrade = FreqtradeBot(edge_conf) - - assert ( - freqtrade.wallets.get_trade_stake_amount("NEO/BTC", 1, freqtrade.edge) - == (999.9 * 0.5 * 0.01) / 0.20 - ) - assert ( - freqtrade.wallets.get_trade_stake_amount("LTC/BTC", 1, freqtrade.edge) - == (999.9 * 0.5 * 0.01) / 0.21 - ) - - -@pytest.mark.parametrize( - "buy_price_mult,ignore_strat_sl", - [ - (0.79, False), # Override stoploss - (0.85, True), # Override strategy stoploss - ], -) -def test_edge_overrides_stoploss( - limit_order, fee, caplog, mocker, buy_price_mult, ignore_strat_sl, edge_conf -) -> None: - patch_RPCManager(mocker) - patch_exchange(mocker) - patch_edge(mocker) - edge_conf["max_open_trades"] = float("inf") - - # Strategy stoploss is -0.1 but Edge imposes a stoploss at -0.2 - # Thus, if price falls 21%, stoploss should be triggered - # - # mocking the ticker: price is falling ... - enter_price = limit_order["buy"]["price"] - ticker_val = { - "bid": enter_price, - "ask": enter_price, - "last": enter_price, - } - mocker.patch.multiple( - EXMS, - fetch_ticker=MagicMock(return_value=ticker_val), - get_fee=fee, - ) - ############################################# - - # Create a trade with "limit_buy_order_usdt" price - freqtrade = FreqtradeBot(edge_conf) - freqtrade.active_pair_whitelist = ["NEO/BTC"] - patch_get_signal(freqtrade) - freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.enter_positions() - trade = Trade.session.scalars(select(Trade)).first() - caplog.clear() - ############################################# - ticker_val.update( - { - "bid": enter_price * buy_price_mult, - "ask": enter_price * buy_price_mult, - "last": enter_price * buy_price_mult, - } - ) - - # stoploss should be hit - assert freqtrade.handle_trade(trade) is not ignore_strat_sl - if not ignore_strat_sl: - assert log_has_re("Exit for NEO/BTC detected. Reason: stop_loss.*", caplog) - assert trade.exit_reason == ExitType.STOP_LOSS.value - # Test compatibility ... - assert trade.sell_reason == ExitType.STOP_LOSS.value - - def test_total_open_trades_stakes(mocker, default_conf_usdt, ticker_usdt, fee) -> None: patch_RPCManager(mocker) patch_exchange(mocker) @@ -483,7 +396,7 @@ def test_create_trade_minimal_amount( if not max_open_trades: assert ( freqtrade.wallets.get_trade_stake_amount( - "ETH/USDT", default_conf_usdt["max_open_trades"], freqtrade.edge + "ETH/USDT", default_conf_usdt["max_open_trades"] ) == 0 ) @@ -1615,6 +1528,25 @@ def test_handle_trade( assert trade.close_date is not None assert trade.exit_reason == "sell_signal1" + correct_profit_ratio = trade.calc_profit_ratio( + rate=trade.close_rate, amount=trade.amount, open_rate=trade.open_rate + ) + profit_ratio_1 = trade.calc_profit_ratio(rate=trade.close_rate, open_rate=trade.open_rate) + profit_ratio_2 = trade.calc_profit_ratio( + rate=trade.close_rate, open_rate=trade.open_rate * 1.02 + ) + profit_ratio_3 = trade.calc_profit_ratio(rate=trade.close_rate, amount=trade.amount) + profit_ratio_4 = trade.calc_profit_ratio(rate=trade.close_rate) + profit_ratio_5 = trade.calc_profit_ratio( + rate=trade.close_rate, amount=trade.amount, open_rate=trade.open_rate * 1.02 + ) + assert correct_profit_ratio == close_profit + assert correct_profit_ratio == profit_ratio_1 + assert correct_profit_ratio != profit_ratio_2 + assert correct_profit_ratio == profit_ratio_3 + assert correct_profit_ratio == profit_ratio_4 + assert correct_profit_ratio != profit_ratio_5 + @pytest.mark.parametrize("is_short", [False, True]) def test_handle_overlapping_signals( @@ -4479,7 +4411,7 @@ def test_startup_state(default_conf_usdt, mocker): assert worker.freqtrade.state is State.RUNNING -def test_startup_trade_reinit(default_conf_usdt, edge_conf, mocker): +def test_startup_trade_reinit(default_conf_usdt, mocker): mocker.patch(f"{EXMS}.exchange_has", MagicMock(return_value=True)) reinit_mock = MagicMock() mocker.patch("freqtrade.persistence.Trade.stoploss_reinitialization", reinit_mock) @@ -4488,12 +4420,6 @@ def test_startup_trade_reinit(default_conf_usdt, edge_conf, mocker): ftbot.startup() assert reinit_mock.call_count == 1 - reinit_mock.reset_mock() - - ftbot = get_patched_freqtradebot(mocker, edge_conf) - ftbot.startup() - assert reinit_mock.call_count == 0 - @pytest.mark.usefixtures("init_persistence") def test_sync_wallet_dry_run( @@ -5822,7 +5748,7 @@ def test_position_adjust2(mocker, default_conf_usdt, fee) -> None: @pytest.mark.parametrize( "data", [ - # tuple 1 - side amount, price + # tuple 1 - side, amount, price # tuple 2 - amount, open_rate, stake_amount, cumulative_profit, realized_profit, rel_profit ( (("buy", 100, 10), (100.0, 10.0, 1000.0, 0.0, None, None)), diff --git a/tests/freqtradebot/test_stoploss_on_exchange.py b/tests/freqtradebot/test_stoploss_on_exchange.py index c5dc01b7e..c71621620 100644 --- a/tests/freqtradebot/test_stoploss_on_exchange.py +++ b/tests/freqtradebot/test_stoploss_on_exchange.py @@ -16,7 +16,6 @@ from tests.conftest import ( get_patched_freqtradebot, log_has, log_has_re, - patch_edge, patch_exchange, patch_get_signal, patch_whitelist, @@ -971,128 +970,6 @@ def test_handle_stoploss_on_exchange_custom_stop( assert freqtrade.handle_trade(trade) is True -def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, limit_order) -> None: - enter_order = limit_order["buy"] - exit_order = limit_order["sell"] - enter_order["average"] = 2.19 - # When trailing stoploss is set - stoploss = MagicMock(return_value={"id": "13434334", "status": "open"}) - patch_RPCManager(mocker) - patch_exchange(mocker) - patch_edge(mocker) - edge_conf["max_open_trades"] = float("inf") - edge_conf["dry_run_wallet"] = 999.9 - edge_conf["exchange"]["name"] = "binance" - mocker.patch.multiple( - EXMS, - fetch_ticker=MagicMock(return_value={"bid": 2.19, "ask": 2.2, "last": 2.19}), - create_order=MagicMock( - side_effect=[ - enter_order, - exit_order, - ] - ), - get_fee=fee, - create_stoploss=stoploss, - ) - - # enabling TSL - edge_conf["trailing_stop"] = True - edge_conf["trailing_stop_positive"] = 0.01 - edge_conf["trailing_stop_positive_offset"] = 0.011 - - # disabling ROI - edge_conf["minimal_roi"]["0"] = 999999999 - - freqtrade = FreqtradeBot(edge_conf) - - # enabling stoploss on exchange - freqtrade.strategy.order_types["stoploss_on_exchange"] = True - - # setting stoploss - freqtrade.strategy.stoploss = -0.02 - - # setting stoploss_on_exchange_interval to 0 seconds - freqtrade.strategy.order_types["stoploss_on_exchange_interval"] = 0 - - patch_get_signal(freqtrade) - - freqtrade.active_pair_whitelist = freqtrade.edge.adjust(freqtrade.active_pair_whitelist) - - freqtrade.enter_positions() - trade = Trade.session.scalars(select(Trade)).first() - trade.is_open = True - - trade.stoploss_last_update = dt_now() - trade.orders.append( - Order( - ft_order_side="stoploss", - ft_pair=trade.pair, - ft_is_open=True, - ft_amount=trade.amount, - ft_price=trade.stop_loss, - order_id="100", - ) - ) - - stoploss_order_hanging = MagicMock( - return_value={ - "id": "100", - "status": "open", - "type": "stop_loss_limit", - "price": 3, - "average": 2, - "stopPrice": "2.178", - } - ) - - mocker.patch(f"{EXMS}.fetch_stoploss_order", stoploss_order_hanging) - - # stoploss initially at 20% as edge dictated it. - assert freqtrade.handle_trade(trade) is False - assert freqtrade.handle_stoploss_on_exchange(trade) is False - assert pytest.approx(trade.stop_loss) == 1.76 - - cancel_order_mock = MagicMock() - stoploss_order_mock = MagicMock() - mocker.patch(f"{EXMS}.cancel_stoploss_order", cancel_order_mock) - mocker.patch(f"{EXMS}.create_stoploss", stoploss_order_mock) - - # price goes down 5% - mocker.patch( - f"{EXMS}.fetch_ticker", - MagicMock(return_value={"bid": 2.19 * 0.95, "ask": 2.2 * 0.95, "last": 2.19 * 0.95}), - ) - assert freqtrade.handle_trade(trade) is False - assert freqtrade.handle_stoploss_on_exchange(trade) is False - - # stoploss should remain the same - assert pytest.approx(trade.stop_loss) == 1.76 - - # stoploss on exchange should not be canceled - cancel_order_mock.assert_not_called() - - # price jumped 2x - mocker.patch( - f"{EXMS}.fetch_ticker", MagicMock(return_value={"bid": 4.38, "ask": 4.4, "last": 4.38}) - ) - - assert freqtrade.handle_trade(trade) is False - assert freqtrade.handle_stoploss_on_exchange(trade) is False - - # stoploss should be set to 1% as trailing is on - assert trade.stop_loss == 4.4 * 0.99 - cancel_order_mock.assert_called_once_with("100", "NEO/BTC") - stoploss_order_mock.assert_called_once_with( - amount=30, - pair="NEO/BTC", - order_types=freqtrade.strategy.order_types, - stop_price=4.4 * 0.99, - side="sell", - leverage=1.0, - ) - - @pytest.mark.parametrize("is_short", [False, True]) def test_execute_trade_exit_down_stoploss_on_exchange_dry_run( default_conf_usdt, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index d5bc7d5b4..292ee92aa 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -3,7 +3,7 @@ import random from collections import defaultdict from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from unittest.mock import ANY, MagicMock, PropertyMock @@ -22,6 +22,7 @@ from freqtrade.data.history import get_timerange from freqtrade.enums import CandleType, ExitType, RunMode from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import timeframe_to_next_date, timeframe_to_prev_date +from freqtrade.exchange.exchange_utils import DECIMAL_PLACES, TICK_SIZE from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename, get_strategy_run_id from freqtrade.optimize.backtesting import Backtesting from freqtrade.persistence import LocalTrade, Trade @@ -348,6 +349,29 @@ def test_data_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: assert processed["UNITTEST/BTC"].equals(processed2["UNITTEST/BTC"]) +def test_get_pair_precision_bt(default_conf, mocker) -> None: + patch_exchange(mocker) + default_conf["timeframe"] = "30m" + backtesting = Backtesting(default_conf) + backtesting._set_strategy(backtesting.strategylist[0]) + pair = "UNITTEST/BTC" + backtesting.pairlists._whitelist = [pair] + ex_mock = mocker.patch(f"{EXMS}.get_precision_price", return_value=1e-5) + data, timerange = backtesting.load_bt_data() + assert data + + assert backtesting.get_pair_precision(pair, dt_utc(2018, 1, 1)) == (1e-8, TICK_SIZE) + assert ex_mock.call_count == 0 + assert backtesting.get_pair_precision(pair, dt_utc(2017, 12, 15)) == (1e-8, TICK_SIZE) + assert ex_mock.call_count == 0 + + # Fallback to exchange logic + assert backtesting.get_pair_precision(pair, dt_utc(2017, 1, 15)) == (1e-5, DECIMAL_PLACES) + assert ex_mock.call_count == 1 + assert backtesting.get_pair_precision("ETH/BTC", dt_utc(2017, 1, 15)) == (1e-5, DECIMAL_PLACES) + assert ex_mock.call_count == 2 + + def test_backtest_abort(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) backtesting = Backtesting(default_conf) @@ -663,7 +687,7 @@ def test_backtest__check_trade_exit(default_conf, mocker) -> None: backtesting._set_strategy(backtesting.strategylist[0]) pair = "UNITTEST/BTC" row = [ - pd.Timestamp(year=2020, month=1, day=1, hour=4, minute=55, tzinfo=timezone.utc), + pd.Timestamp(year=2020, month=1, day=1, hour=4, minute=55, tzinfo=UTC), 200, # Open 201.5, # High 195, # Low @@ -681,7 +705,7 @@ def test_backtest__check_trade_exit(default_conf, mocker) -> None: assert isinstance(trade, LocalTrade) row_sell = [ - pd.Timestamp(year=2020, month=1, day=1, hour=5, minute=0, tzinfo=timezone.utc), + pd.Timestamp(year=2020, month=1, day=1, hour=5, minute=0, tzinfo=UTC), 200, # Open 210.5, # High 195, # Low @@ -699,7 +723,7 @@ def test_backtest__check_trade_exit(default_conf, mocker) -> None: res = backtesting._check_trade_exit(trade, row_sell, row_sell[0].to_pydatetime()) assert res is not None assert res.exit_reason == ExitType.ROI.value - assert res.close_date_utc == datetime(2020, 1, 1, 5, 0, tzinfo=timezone.utc) + assert res.close_date_utc == datetime(2020, 1, 1, 5, 0, tzinfo=UTC) # Enter new trade trade = backtesting._enter_trade(pair, row=row, direction="long") @@ -828,6 +852,7 @@ def test_backtest_one(default_conf, mocker, testdatadir) -> None: }, ], ], + "funding_fees": [0.0, 0.0], } ) pd.testing.assert_frame_equal(results, expected) @@ -903,7 +928,7 @@ def test_backtest_one_detail(default_conf_usdt, mocker, testdatadir, use_detail) assert len(t["orders"]) == 2 entryo = t["orders"][0] - entry_ts = datetime.fromtimestamp(entryo["order_filled_timestamp"] // 1000, tz=timezone.utc) + entry_ts = datetime.fromtimestamp(entryo["order_filled_timestamp"] // 1000, tz=UTC) if entry_ts > t["open_date"]: late_entry += 1 @@ -991,7 +1016,7 @@ def test_backtest_one_detail_futures( timerange=timerange, candle_type=CandleType.FUTURES, ) - backtesting.load_bt_data_detail() + backtesting._load_bt_data_detail() processed = backtesting.strategy.advise_all_indicators(data) min_date, max_date = get_timerange(processed) @@ -1014,7 +1039,7 @@ def test_backtest_one_detail_futures( assert len(t["orders"]) == 2 entryo = t["orders"][0] - entry_ts = datetime.fromtimestamp(entryo["order_filled_timestamp"] // 1000, tz=timezone.utc) + entry_ts = datetime.fromtimestamp(entryo["order_filled_timestamp"] // 1000, tz=UTC) if entry_ts > t["open_date"]: late_entry += 1 @@ -1096,7 +1121,7 @@ def test_backtest_one_detail_futures_funding_fees( return df def adjust_trade_position(trade, current_time, **kwargs): - if current_time > datetime(2021, 11, 18, 2, 0, 0, tzinfo=timezone.utc): + if current_time > datetime(2021, 11, 18, 2, 0, 0, tzinfo=UTC): return None return default_conf_usdt["stake_amount"] @@ -1119,7 +1144,7 @@ def test_backtest_one_detail_futures_funding_fees( timerange=timerange, candle_type=CandleType.FUTURES, ) - backtesting.load_bt_data_detail() + backtesting._load_bt_data_detail() processed = backtesting.strategy.advise_all_indicators(data) min_date, max_date = get_timerange(processed) @@ -2539,7 +2564,7 @@ def test_backtest_start_multi_strat_caching( mocker.patch("freqtrade.optimize.backtesting.Backtesting.backtest", backtestmock) mocker.patch("freqtrade.optimize.backtesting.show_backtest_results", MagicMock()) - now = min_backtest_date = datetime.now(tz=timezone.utc) + now = min_backtest_date = datetime.now(tz=UTC) start_time = now - timedelta(**start_delta) + timedelta(hours=1) if cache == "none": min_backtest_date = now + timedelta(days=1) @@ -2576,7 +2601,7 @@ def test_backtest_start_multi_strat_caching( ], ) mocker.patch.multiple( - "freqtrade.data.btanalysis", + "freqtrade.data.btanalysis.bt_fileutils", load_backtest_metadata=load_backtest_metadata, load_backtest_stats=load_backtest_stats, ) diff --git a/tests/optimize/test_backtesting_adjust_position.py b/tests/optimize/test_backtesting_adjust_position.py index c9e8c9eeb..ea7d94d4d 100644 --- a/tests/optimize/test_backtesting_adjust_position.py +++ b/tests/optimize/test_backtesting_adjust_position.py @@ -80,6 +80,7 @@ def test_backtest_position_adjustment(default_conf, fee, mocker, testdatadir) -> "is_short": [False, False], "open_timestamp": [1517251200000, 1517283000000], "close_timestamp": [1517263200000, 1517285400000], + "funding_fees": [0.0, 0.0], } ) results_no = results.drop(columns=["orders"]) diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py deleted file mode 100644 index 3f515bebe..000000000 --- a/tests/optimize/test_edge_cli.py +++ /dev/null @@ -1,133 +0,0 @@ -# pragma pylint: disable=missing-docstring, C0103, C0330 -# pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments - -from unittest.mock import MagicMock - -from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_edge -from freqtrade.enums import RunMode -from freqtrade.optimize.edge_cli import EdgeCli -from tests.conftest import ( - CURRENT_TEST_STRATEGY, - EXMS, - get_args, - log_has, - patch_exchange, - patched_configuration_load_config_file, -) - - -def test_setup_optimize_configuration_without_arguments(mocker, default_conf, caplog) -> None: - patched_configuration_load_config_file(mocker, default_conf) - - args = [ - "edge", - "--config", - "config.json", - "--strategy", - CURRENT_TEST_STRATEGY, - ] - - config = setup_optimize_configuration(get_args(args), RunMode.EDGE) - assert config["runmode"] == RunMode.EDGE - - assert "max_open_trades" in config - assert "stake_currency" in config - assert "stake_amount" in config - assert "exchange" in config - assert "pair_whitelist" in config["exchange"] - assert "datadir" in config - assert log_has("Using data directory: {} ...".format(config["datadir"]), caplog) - assert "timeframe" in config - - assert "timerange" not in config - assert "stoploss_range" not in config - - -def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> None: - patched_configuration_load_config_file(mocker, edge_conf) - mocker.patch("freqtrade.configuration.configuration.create_datadir", lambda c, x: x) - - args = [ - "edge", - "--config", - "config.json", - "--strategy", - CURRENT_TEST_STRATEGY, - "--datadir", - "/foo/bar", - "--timeframe", - "1m", - "--timerange", - ":100", - "--stoplosses=-0.01,-0.10,-0.001", - ] - - config = setup_optimize_configuration(get_args(args), RunMode.EDGE) - assert "max_open_trades" in config - assert "stake_currency" in config - assert "stake_amount" in config - assert "exchange" in config - assert "pair_whitelist" in config["exchange"] - assert "datadir" in config - assert config["runmode"] == RunMode.EDGE - assert log_has("Using data directory: {} ...".format(config["datadir"]), caplog) - assert "timeframe" in config - assert log_has("Parameter -i/--timeframe detected ... Using timeframe: 1m ...", caplog) - - assert "timerange" in config - assert log_has("Parameter --timerange detected: {} ...".format(config["timerange"]), caplog) - - -def test_start(mocker, fee, edge_conf, caplog) -> None: - start_mock = MagicMock() - mocker.patch(f"{EXMS}.get_fee", fee) - patch_exchange(mocker) - mocker.patch("freqtrade.optimize.edge_cli.EdgeCli.start", start_mock) - patched_configuration_load_config_file(mocker, edge_conf) - - args = [ - "edge", - "--config", - "config.json", - "--strategy", - CURRENT_TEST_STRATEGY, - ] - pargs = get_args(args) - start_edge(pargs) - assert log_has("Starting freqtrade in Edge mode", caplog) - assert start_mock.call_count == 1 - - -def test_edge_init(mocker, edge_conf) -> None: - patch_exchange(mocker) - edge_conf["stake_amount"] = 20 - edge_cli = EdgeCli(edge_conf) - assert edge_cli.config == edge_conf - assert edge_cli.config["stake_amount"] == "unlimited" - assert callable(edge_cli.edge.calculate) - assert edge_cli.strategy.bot_started is True - - -def test_edge_init_fee(mocker, edge_conf) -> None: - patch_exchange(mocker) - edge_conf["fee"] = 0.01234 - edge_conf["stake_amount"] = 20 - fee_mock = mocker.patch(f"{EXMS}.get_fee", return_value=0.5) - edge_cli = EdgeCli(edge_conf) - assert edge_cli.edge.fee == 0.01234 - assert fee_mock.call_count == 0 - - -def test_edge_start(mocker, edge_conf) -> None: - mock_calculate = mocker.patch( - "freqtrade.edge.edge_positioning.Edge.calculate", return_value=True - ) - table_mock = mocker.patch("freqtrade.optimize.edge_cli.generate_edge_table") - - patch_exchange(mocker) - edge_conf["stake_amount"] = 20 - - edge_cli = EdgeCli(edge_conf) - edge_cli.start() - assert mock_calculate.call_count == 1 - assert table_mock.call_count == 1 diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 8bd2e95e0..4d9d68eae 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,13 +1,12 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 from datetime import datetime, timedelta -from functools import wraps +from functools import partial, wraps from pathlib import Path from unittest.mock import ANY, MagicMock, PropertyMock import pandas as pd import pytest from filelock import Timeout -from skopt.space import Integer from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt from freqtrade.data.history import load_data @@ -17,7 +16,7 @@ from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.optimize.hyperopt.hyperopt_auto import HyperOptAuto from freqtrade.optimize.hyperopt_tools import HyperoptTools from freqtrade.optimize.optimize_reports import generate_strategy_stats -from freqtrade.optimize.space import SKDecimal +from freqtrade.optimize.space import SKDecimal, ft_IntDistribution from freqtrade.strategy import IntParameter from freqtrade.util import dt_utc from tests.conftest import ( @@ -171,6 +170,48 @@ def test_setup_hyperopt_configuration_stake_amount(mocker, default_conf) -> None setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) +def test_setup_hyperopt_early_stop_setup(mocker, default_conf, caplog) -> None: + patched_configuration_load_config_file(mocker, default_conf) + + args = [ + "hyperopt", + "--config", + "config.json", + "--strategy", + "HyperoptableStrategy", + "--early-stop", + "1", + ] + conf = setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) + assert isinstance(conf, dict) + assert conf["early_stop"] == 20 + msg = ( + r"Parameter --early-stop detected ... " + r"Will early stop hyperopt if no improvement after (20|25) epochs ..." + ) + msg_adjust = r"Early stop epochs .* lower than 20. It will be replaced with 20." + assert log_has_re(msg_adjust, caplog) + assert log_has_re(msg, caplog) + + caplog.clear() + + args = [ + "hyperopt", + "--config", + "config.json", + "--strategy", + CURRENT_TEST_STRATEGY, + "--early-stop", + "25", + ] + conf1 = setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) + assert isinstance(conf1, dict) + + assert conf1["early_stop"] == 25 + assert not log_has_re(msg_adjust, caplog) + assert log_has_re(msg, caplog) + + def test_start_not_installed(mocker, default_conf, import_fails) -> None: start_mock = MagicMock() patched_configuration_load_config_file(mocker, default_conf) @@ -578,7 +619,7 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None: "buy_plusdi": 0.02, "buy_rsi": 35, }, - "roi": {"0": 0.12000000000000001, "20.0": 0.02, "50.0": 0.01, "110.0": 0}, + "roi": {"0": 0.12, "20.0": 0.02, "50.0": 0.01, "110.0": 0}, "protection": { "protection_cooldown_lookback": 20, "protection_enabled": True, @@ -606,9 +647,7 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None: hyperopt.hyperopter.min_date = dt_utc(2017, 12, 10) hyperopt.hyperopter.max_date = dt_utc(2017, 12, 13) hyperopt.hyperopter.init_spaces() - generate_optimizer_value = hyperopt.hyperopter.generate_optimizer( - list(optimizer_param.values()) - ) + generate_optimizer_value = hyperopt.hyperopter.generate_optimizer(optimizer_param) assert generate_optimizer_value == response_expected @@ -1088,8 +1127,8 @@ def test_in_strategy_auto_hyperopt(mocker, hyperopt_conf, tmp_path, fee) -> None assert opt.backtesting.strategy.max_open_trades != 1 opt.custom_hyperopt.generate_estimator = lambda *args, **kwargs: "ET1" - with pytest.raises(OperationalException, match="Estimator ET1 not supported."): - opt.get_optimizer(2, 42, 2, 2) + with pytest.raises(OperationalException, match="Optuna Sampler ET1 not supported."): + opt.get_optimizer(42) @pytest.mark.filterwarnings("ignore::DeprecationWarning") @@ -1186,19 +1225,27 @@ def test_in_strategy_auto_hyperopt_per_epoch(mocker, hyperopt_conf, tmp_path, fe def test_SKDecimal(): space = SKDecimal(1, 2, decimals=2) - assert 1.5 in space - assert 2.5 not in space - assert space.low == 100 - assert space.high == 200 + assert space._contains(1.5) + assert not space._contains(2.5) + assert space.low == 1 + assert space.high == 2 - assert space.inverse_transform([200]) == [2.0] - assert space.inverse_transform([100]) == [1.0] - assert space.inverse_transform([150, 160]) == [1.5, 1.6] + assert space._contains(1.51) + assert space._contains(1.01) + # Falls out of the space with 2 decimals + assert not space._contains(1.511) + assert not space._contains(1.111222) - assert space.transform([1.5]) == [150] - assert space.transform([2.0]) == [200] - assert space.transform([1.0]) == [100] - assert space.transform([1.5, 1.6]) == [150, 160] + with pytest.raises(ValueError): + SKDecimal(1, 2, step=5, decimals=0.2) + + with pytest.raises(ValueError): + SKDecimal(1, 2, step=None, decimals=None) + + s = SKDecimal(1, 2, step=0.1, decimals=None) + assert s.step == 0.1 + assert s._contains(1.1) + assert not s._contains(1.11) def test_stake_amount_unlimited_max_open_trades(mocker, hyperopt_conf, tmp_path, fee) -> None: @@ -1217,10 +1264,6 @@ def test_stake_amount_unlimited_max_open_trades(mocker, hyperopt_conf, tmp_path, } ) hyperopt = Hyperopt(hyperopt_conf) - mocker.patch( - "freqtrade.optimize.hyperopt.hyperopt_optimizer.HyperOptimizer._get_params_dict", - return_value={"max_open_trades": -1}, - ) assert isinstance(hyperopt.hyperopter.custom_hyperopt, HyperOptAuto) @@ -1228,7 +1271,7 @@ def test_stake_amount_unlimited_max_open_trades(mocker, hyperopt_conf, tmp_path, hyperopt.start() - assert hyperopt.hyperopter.backtesting.strategy.max_open_trades == 1 + assert hyperopt.hyperopter.backtesting.strategy.max_open_trades == 3 def test_max_open_trades_dump(mocker, hyperopt_conf, tmp_path, fee, capsys) -> None: @@ -1246,9 +1289,15 @@ def test_max_open_trades_dump(mocker, hyperopt_conf, tmp_path, fee, capsys) -> N } ) hyperopt = Hyperopt(hyperopt_conf) + + def optuna_mock(hyperopt, *args, **kwargs): + a = hyperopt.get_optuna_asked_points(*args, **kwargs) + a[0]._cached_frozen_trial.params["max_open_trades"] = -1 + return a, [True] + mocker.patch( - "freqtrade.optimize.hyperopt.hyperopt_optimizer.HyperOptimizer._get_params_dict", - return_value={"max_open_trades": -1}, + "freqtrade.optimize.hyperopt.Hyperopt.get_asked_points", + side_effect=partial(optuna_mock, hyperopt), ) assert isinstance(hyperopt.hyperopter.custom_hyperopt, HyperOptAuto) @@ -1266,8 +1315,8 @@ def test_max_open_trades_dump(mocker, hyperopt_conf, tmp_path, fee, capsys) -> N hyperopt = Hyperopt(hyperopt_conf) mocker.patch( - "freqtrade.optimize.hyperopt.hyperopt_optimizer.HyperOptimizer._get_params_dict", - return_value={"max_open_trades": -1}, + "freqtrade.optimize.hyperopt.Hyperopt.get_asked_points", + side_effect=partial(optuna_mock, hyperopt), ) assert isinstance(hyperopt.hyperopter.custom_hyperopt, HyperOptAuto) @@ -1304,7 +1353,7 @@ def test_max_open_trades_consistency(mocker, hyperopt_conf, tmp_path, fee) -> No assert isinstance(hyperopt.hyperopter.custom_hyperopt, HyperOptAuto) hyperopt.hyperopter.custom_hyperopt.max_open_trades_space = lambda: [ - Integer(1, 10, name="max_open_trades") + ft_IntDistribution(1, 10, "max_open_trades") ] first_time_evaluated = False @@ -1313,9 +1362,10 @@ def test_max_open_trades_consistency(mocker, hyperopt_conf, tmp_path, fee) -> No @wraps(func) def wrapper(*args, **kwargs): nonlocal first_time_evaluated + stake_amount = func(*args, **kwargs) if first_time_evaluated is False: - assert stake_amount == 1 + assert stake_amount == 2 first_time_evaluated = True return stake_amount @@ -1329,5 +1379,5 @@ def test_max_open_trades_consistency(mocker, hyperopt_conf, tmp_path, fee) -> No hyperopt.start() - assert hyperopt.hyperopter.backtesting.strategy.max_open_trades == 8 - assert hyperopt.config["max_open_trades"] == 8 + assert hyperopt.hyperopter.backtesting.strategy.max_open_trades == 4 + assert hyperopt.config["max_open_trades"] == 4 diff --git a/tests/optimize/test_lookahead_analysis.py b/tests/optimize/test_lookahead_analysis.py index 67c83762a..3ecabc0b1 100644 --- a/tests/optimize/test_lookahead_analysis.py +++ b/tests/optimize/test_lookahead_analysis.py @@ -490,4 +490,4 @@ def test_config_overrides(lookahead_conf): lookahead_conf = LookaheadAnalysisSubFunctions.calculate_config_overrides(lookahead_conf) assert lookahead_conf["dry_run_wallet"] == 1000000000 - assert lookahead_conf["max_open_trades"] == 3 + assert lookahead_conf["max_open_trades"] == -1 diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 8943a7467..3cd89245b 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -18,12 +18,10 @@ from freqtrade.data.btanalysis import ( load_backtest_data, load_backtest_stats, ) -from freqtrade.edge import PairInfo from freqtrade.enums import ExitType from freqtrade.optimize.optimize_reports import ( generate_backtest_stats, generate_daily_stats, - generate_edge_table, generate_pair_metrics, generate_periodic_breakdown_stats, generate_strategy_comparison, @@ -40,7 +38,7 @@ from freqtrade.optimize.optimize_reports.optimize_reports import ( generate_tag_metrics, ) from freqtrade.resolvers.strategy_resolver import StrategyResolver -from freqtrade.util import dt_ts +from freqtrade.util import dt_ts, format_duration from freqtrade.util.datetime_helpers import dt_from_ts, dt_utc from tests.conftest import CURRENT_TEST_STRATEGY, log_has_re from tests.data.test_history import _clean_test_file @@ -238,7 +236,7 @@ def test_generate_backtest_stats(default_conf, testdatadir, tmp_path): filename_last = tmp_path / LAST_BT_RESULT_FN _backup_file(filename_last, copy_file=True) assert not filename.is_file() - default_conf["exportfilename"] = filename + default_conf["exportdirectory"] = filename store_backtest_results(default_conf, stats, "2022_01_01_15_05_13") @@ -265,7 +263,7 @@ def test_store_backtest_results(testdatadir, mocker): zip_mock = mocker.patch("freqtrade.optimize.optimize_reports.bt_storage.ZipFile") data = {"metadata": {}, "strategy": {}, "strategy_comparison": []} store_backtest_results( - {"exportfilename": testdatadir, "original_config": {}}, data, "2022_01_01_15_05_13" + {"exportdirectory": testdatadir, "original_config": {}}, data, "2022_01_01_15_05_13" ) assert dump_mock.call_count == 2 @@ -277,7 +275,7 @@ def test_store_backtest_results(testdatadir, mocker): zip_mock.reset_mock() filename = testdatadir / "testresult.json" store_backtest_results( - {"exportfilename": filename, "original_config": {}}, data, "2022_01_01_15_05_13" + {"exportdirectory": filename, "original_config": {}}, data, "2022_01_01_15_05_13" ) assert dump_mock.call_count == 2 assert zip_mock.call_count == 1 @@ -289,7 +287,7 @@ def test_store_backtest_results(testdatadir, mocker): def test_store_backtest_results_real(tmp_path, caplog): data = {"metadata": {}, "strategy": {}, "strategy_comparison": []} config = { - "exportfilename": tmp_path, + "exportdirectory": tmp_path, "original_config": {}, } store_backtest_results( @@ -358,7 +356,7 @@ def test_write_read_backtest_candles(tmp_path): bt_results = {"metadata": {}, "strategy": {}, "strategy_comparison": []} mock_conf = { - "exportfilename": tmp_path, + "exportdirectory": tmp_path, "export": "signals", "runmode": "backtest", "original_config": {}, @@ -395,33 +393,6 @@ def test_write_read_backtest_candles(tmp_path): _clean_test_file(stored_file) - # test file exporting - filename = tmp_path / "testresult" - mock_conf["exportfilename"] = filename - store_backtest_results(mock_conf, bt_results, sample_date, analysis_results=data) - stored_file = tmp_path / f"testresult-{sample_date}.zip" - signals_pkl = f"testresult-{sample_date}_signals.pkl" - rejected_pkl = f"testresult-{sample_date}_rejected.pkl" - exited_pkl = f"testresult-{sample_date}_exited.pkl" - assert not (tmp_path / signals_pkl).is_file() - assert stored_file.is_file() - - with ZipFile(stored_file, "r") as zipf: - assert signals_pkl in zipf.namelist() - assert rejected_pkl in zipf.namelist() - assert exited_pkl in zipf.namelist() - - with zipf.open(signals_pkl) as scp: - pickled_signal_candles2 = joblib.load(scp) - - assert pickled_signal_candles2.keys() == candle_dict.keys() - assert pickled_signal_candles2["DefStrat"].keys() == pickled_signal_candles2["DefStrat"].keys() - assert pickled_signal_candles2["DefStrat"]["UNITTEST/BTC"].equals( - pickled_signal_candles2["DefStrat"]["UNITTEST/BTC"] - ) - - _clean_test_file(stored_file) - def test_generate_pair_metrics(): results = pd.DataFrame( @@ -454,7 +425,6 @@ def test_generate_pair_metrics(): assert ( pytest.approx(pair_results[-1]["profit_mean_pct"]) == pair_results[-1]["profit_mean"] * 100 ) - assert pytest.approx(pair_results[-1]["profit_sum_pct"]) == pair_results[-1]["profit_sum"] * 100 def test_generate_daily_stats(testdatadir): @@ -482,8 +452,8 @@ def test_generate_trading_stats(testdatadir): bt_data = load_backtest_data(filename) res = generate_trading_stats(bt_data) assert isinstance(res, dict) - assert res["winner_holding_avg"] == timedelta(seconds=1440) - assert res["loser_holding_avg"] == timedelta(days=1, seconds=21420) + assert res["winner_holding_avg"] == format_duration(timedelta(seconds=1440)) + assert res["loser_holding_avg"] == format_duration(timedelta(days=1, seconds=21420)) assert "wins" in res assert "losses" in res assert "draws" in res @@ -646,15 +616,6 @@ def test_text_table_strategy(testdatadir, capsys): ) -def test_generate_edge_table(capsys): - results = {} - results["ETH/BTC"] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60) - generate_edge_table(results) - text = capsys.readouterr().out - assert re.search(r".* ETH/BTC .*", text) - assert re.search(r".* Risk Reward Ratio .* Required Risk Reward .* Expectancy .*", text) - - def test_generate_periodic_breakdown_stats(testdatadir): filename = testdatadir / "backtest_results/backtest-result.json" bt_data = load_backtest_data(filename).to_dict(orient="records") diff --git a/tests/persistence/test_key_value_store.py b/tests/persistence/test_key_value_store.py index e69ae0220..71411513d 100644 --- a/tests/persistence/test_key_value_store.py +++ b/tests/persistence/test_key_value_store.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta import pytest @@ -8,19 +8,19 @@ from tests.conftest import create_mock_trades_usdt @pytest.mark.usefixtures("init_persistence") def test_key_value_store(time_machine): - start = datetime(2023, 1, 1, 4, tzinfo=timezone.utc) + start = datetime(2023, 1, 1, 4, tzinfo=UTC) time_machine.move_to(start, tick=False) KeyValueStore.store_value("test", "testStringValue") - KeyValueStore.store_value("test_dt", datetime.now(timezone.utc)) + KeyValueStore.store_value("test_dt", datetime.now(UTC)) KeyValueStore.store_value("test_float", 22.51) KeyValueStore.store_value("test_int", 15) assert KeyValueStore.get_value("test") == "testStringValue" assert KeyValueStore.get_value("test") == "testStringValue" assert KeyValueStore.get_string_value("test") == "testStringValue" - assert KeyValueStore.get_value("test_dt") == datetime.now(timezone.utc) - assert KeyValueStore.get_datetime_value("test_dt") == datetime.now(timezone.utc) + assert KeyValueStore.get_value("test_dt") == datetime.now(UTC) + assert KeyValueStore.get_datetime_value("test_dt") == datetime.now(UTC) assert KeyValueStore.get_string_value("test_dt") is None assert KeyValueStore.get_float_value("test_dt") is None assert KeyValueStore.get_int_value("test_dt") is None @@ -31,11 +31,11 @@ def test_key_value_store(time_machine): assert KeyValueStore.get_datetime_value("test_int") is None time_machine.move_to(start + timedelta(days=20, hours=5), tick=False) - assert KeyValueStore.get_value("test_dt") != datetime.now(timezone.utc) + assert KeyValueStore.get_value("test_dt") != datetime.now(UTC) assert KeyValueStore.get_value("test_dt") == start # Test update works - KeyValueStore.store_value("test_dt", datetime.now(timezone.utc)) - assert KeyValueStore.get_value("test_dt") == datetime.now(timezone.utc) + KeyValueStore.store_value("test_dt", datetime.now(UTC)) + assert KeyValueStore.get_value("test_dt") == datetime.now(UTC) KeyValueStore.store_value("test_float", 23.51) assert KeyValueStore.get_value("test_float") == 23.51 @@ -52,7 +52,7 @@ def test_key_value_store(time_machine): @pytest.mark.usefixtures("init_persistence") def test_set_startup_time(fee, time_machine): create_mock_trades_usdt(fee) - start = datetime.now(timezone.utc) + start = datetime.now(UTC) time_machine.move_to(start, tick=False) set_startup_time() diff --git a/tests/persistence/test_persistence.py b/tests/persistence/test_persistence.py index d07bd7192..5ec1a05d2 100644 --- a/tests/persistence/test_persistence.py +++ b/tests/persistence/test_persistence.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring, C0103 -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from types import FunctionType import pytest @@ -265,7 +265,7 @@ def test_interest(fee, exchange, is_short, lev, minutes, rate, interest, trading stake_amount=20.0, amount=30.0, open_rate=2.0, - open_date=datetime.now(timezone.utc) - timedelta(minutes=minutes), + open_date=datetime.now(UTC) - timedelta(minutes=minutes), fee_open=fee.return_value, fee_close=fee.return_value, exchange=exchange, @@ -605,7 +605,7 @@ def test_calc_open_close_trade_price( stake_amount=60.0, open_rate=2.0, amount=30.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10), + open_date=datetime.now(tz=UTC) - timedelta(minutes=10), interest_rate=0.0005, fee_open=fee.return_value, fee_close=fee.return_value, @@ -812,7 +812,7 @@ def test_calc_open_trade_value( stake_amount=60.0, amount=30.0, open_rate=2.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10), + open_date=datetime.now(tz=UTC) - timedelta(minutes=10), fee_open=fee_rate, fee_close=fee_rate, exchange=exchange, @@ -863,7 +863,7 @@ def test_calc_close_trade_price( stake_amount=60.0, amount=30.0, open_rate=open_rate, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10), + open_date=datetime.now(tz=UTC) - timedelta(minutes=10), fee_open=fee_rate, fee_close=fee_rate, exchange=exchange, @@ -1164,7 +1164,7 @@ def test_calc_profit( stake_amount=60.0, amount=30.0 * lev, open_rate=2.0, - open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=10), + open_date=datetime.now(tz=UTC) - timedelta(minutes=10), interest_rate=0.0005, exchange=exchange, is_short=is_short, @@ -1882,7 +1882,7 @@ def test_get_trades_proxy(fee, use_db, is_short): assert len(trades) == 2 assert not trades[0].is_open - opendate = datetime.now(tz=timezone.utc) - timedelta(minutes=15) + opendate = datetime.now(tz=UTC) - timedelta(minutes=15) assert len(Trade.get_trades_proxy(open_date=opendate)) == 3 @@ -1989,7 +1989,7 @@ def test_fully_canceled_entry_order_count(fee, is_short): @pytest.mark.usefixtures("init_persistence") def test_update_order_from_ccxt(caplog, time_machine): - start = datetime(2023, 1, 1, 4, tzinfo=timezone.utc) + start = datetime(2023, 1, 1, 4, tzinfo=UTC) time_machine.move_to(start, tick=False) # Most basic order return (only has orderid) @@ -2172,7 +2172,7 @@ def test_trade_truncates_string_fields(): stake_amount=20.0, amount=30.0, open_rate=2.0, - open_date=datetime.now(timezone.utc) - timedelta(minutes=20), + open_date=datetime.now(UTC) - timedelta(minutes=20), fee_open=0.001, fee_close=0.001, exchange="binance", diff --git a/tests/persistence/test_trade_fromjson.py b/tests/persistence/test_trade_fromjson.py index ff717751e..1154751bd 100644 --- a/tests/persistence/test_trade_fromjson.py +++ b/tests/persistence/test_trade_fromjson.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, timezone +from datetime import UTC, datetime import pytest @@ -182,7 +182,7 @@ def test_trade_fromjson(): assert trade.id == 25 assert trade.pair == "ETH/USDT" - assert trade.open_date_utc == datetime(2022, 10, 18, 9, 12, 42, tzinfo=timezone.utc) + assert trade.open_date_utc == datetime(2022, 10, 18, 9, 12, 42, tzinfo=UTC) assert isinstance(trade.open_date, datetime) assert trade.exit_reason == "no longer good" assert trade.realized_profit == 2.76315361 @@ -192,7 +192,7 @@ def test_trade_fromjson(): assert len(trade.orders) == 5 last_o = trade.orders[-1] - assert last_o.order_filled_utc == datetime(2022, 10, 18, 9, 45, 22, tzinfo=timezone.utc) + assert last_o.order_filled_utc == datetime(2022, 10, 18, 9, 45, 22, tzinfo=UTC) assert isinstance(last_o.order_date, datetime) assert last_o.funding_fee == -0.055 diff --git a/tests/plugins/test_pairlist.py b/tests/plugins/test_pairlist.py index 0f133242b..f2c3c69e3 100644 --- a/tests/plugins/test_pairlist.py +++ b/tests/plugins/test_pairlist.py @@ -1883,7 +1883,12 @@ def test_pairlistmanager_no_pairlist(mocker, whitelist_conf): whitelist_conf["pairlists"] = [] - with pytest.raises(OperationalException, match=r"No Pairlist Handlers defined"): + with pytest.raises(OperationalException, match=r"\[\] should be non-empty"): + get_patched_freqtradebot(mocker, whitelist_conf) + + del whitelist_conf["pairlists"] + + with pytest.raises(OperationalException, match=r"'pairlists' is a required property"): get_patched_freqtradebot(mocker, whitelist_conf) @@ -2404,7 +2409,7 @@ def test_MarketCapPairList_timing(mocker, default_conf_usdt, markets, time_machi pm = PairListManager(exchange, default_conf_usdt) markets_mock.reset_mock() pm.refresh_pairlist() - assert markets_mock.call_count == 3 + assert markets_mock.call_count == 4 markets_mock.reset_mock() time_machine.move_to(start_dt + timedelta(hours=20)) @@ -2416,7 +2421,52 @@ def test_MarketCapPairList_timing(mocker, default_conf_usdt, markets, time_machi time_machine.move_to(start_dt + timedelta(days=2)) pm.refresh_pairlist() # No longer cached pairlist ... - assert markets_mock.call_count == 3 + assert markets_mock.call_count == 4 + + +def test_MarketCapPairList_1000_K_fillup(mocker, default_conf_usdt, markets, time_machine): + test_value = [ + {"symbol": "btc"}, + {"symbol": "eth"}, + {"symbol": "usdt"}, + {"symbol": "bnb"}, + {"symbol": "sol"}, + {"symbol": "xrp"}, + {"symbol": "usdc"}, + {"symbol": "steth"}, + {"symbol": "ada"}, + {"symbol": "avax"}, + ] + + default_conf_usdt["trading_mode"] = "spot" + default_conf_usdt["exchange"]["pair_whitelist"] = [] + default_conf_usdt["pairlists"] = [{"method": "MarketCapPairList", "number_assets": 3}] + markets["1000ETH/USDT"] = markets["ETH/USDT"] + markets["KXRP/USDT"] = markets["XRP/USDT"] + del markets["ETH/USDT"] + del markets["XRP/USDT"] + + markets_mock = MagicMock(return_value=markets) + mocker.patch.multiple( + EXMS, + get_markets=markets_mock, + exchange_has=MagicMock(return_value=True), + ) + + mocker.patch( + "freqtrade.plugins.pairlist.MarketCapPairList.FtCoinGeckoApi.get_coins_markets", + return_value=test_value, + ) + + start_dt = dt_now() + + exchange = get_patched_exchange(mocker, default_conf_usdt) + time_machine.move_to(start_dt) + + pm = PairListManager(exchange, default_conf_usdt) + markets_mock.reset_mock() + pm.refresh_pairlist() + assert pm.whitelist == ["BTC/USDT", "1000ETH/USDT", "KXRP/USDT"] def test_MarketCapPairList_filter_special_no_pair_from_coingecko( diff --git a/tests/plugins/test_pairlocks.py b/tests/plugins/test_pairlocks.py index f227818b3..678355f1c 100644 --- a/tests/plugins/test_pairlocks.py +++ b/tests/plugins/test_pairlocks.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta import pytest @@ -62,7 +62,7 @@ def test_PairLocks(use_db): pair = "BTC/USDT" # Lock until 14:30 - lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) + lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=UTC) PairLocks.lock_pair(pair, lock_time) assert not PairLocks.is_pair_locked(pair) @@ -121,15 +121,15 @@ def test_PairLocks_getlongestlock(use_db): assert PairLocks.is_pair_locked(pair) lock = PairLocks.get_pair_longest_lock(pair) - assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=3) - assert lock.lock_end_time.replace(tzinfo=timezone.utc) < dt_now() + timedelta(minutes=14) + assert lock.lock_end_time.replace(tzinfo=UTC) > dt_now() + timedelta(minutes=3) + assert lock.lock_end_time.replace(tzinfo=UTC) < dt_now() + timedelta(minutes=14) PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=15)) assert PairLocks.is_pair_locked(pair) lock = PairLocks.get_pair_longest_lock(pair) # Must be longer than above - assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=14) + assert lock.lock_end_time.replace(tzinfo=UTC) > dt_now() + timedelta(minutes=14) PairLocks.reset_locks() PairLocks.use_db = True diff --git a/tests/plugins/test_percentchangepairlist.py b/tests/plugins/test_percentchangepairlist.py index 7c2f16d76..7bbf92e5d 100644 --- a/tests/plugins/test_percentchangepairlist.py +++ b/tests/plugins/test_percentchangepairlist.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import UTC, datetime from unittest.mock import MagicMock import pandas as pd @@ -141,7 +141,7 @@ def test_gen_pairlist_with_valid_change_pair_list_config(mocker, rpl_config, tic "lookback_days": 4, } ] - start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc) + start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC) time_machine.move_to(start, tick=False) mock_ohlcv_data = { @@ -224,7 +224,7 @@ def test_filter_pairlist_with_empty_ticker(mocker, rpl_config, tickers, time_mac "lookback_days": 4, } ] - start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc) + start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC) time_machine.move_to(start, tick=False) mock_ohlcv_data = { @@ -291,7 +291,7 @@ def test_filter_pairlist_with_max_value_set(mocker, rpl_config, tickers, time_ma } ] - start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=timezone.utc) + start = datetime(2024, 8, 1, 0, 0, 0, 0, tzinfo=UTC) time_machine.move_to(start, tick=False) mock_ohlcv_data = { diff --git a/tests/plugins/test_protections.py b/tests/plugins/test_protections.py index ef2c7e1d3..164fdbb08 100644 --- a/tests/plugins/test_protections.py +++ b/tests/plugins/test_protections.py @@ -1,5 +1,5 @@ import random -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta import pytest @@ -31,8 +31,8 @@ def generate_mock_trade( stake_amount=0.01, fee_open=fee, fee_close=fee, - open_date=datetime.now(timezone.utc) - timedelta(minutes=min_ago_open or 200), - close_date=datetime.now(timezone.utc) - timedelta(minutes=min_ago_close or 30), + open_date=datetime.now(UTC) - timedelta(minutes=min_ago_open or 200), + close_date=datetime.now(UTC) - timedelta(minutes=min_ago_close or 30), open_rate=open_rate, is_open=is_open, amount=0.01 / open_rate, @@ -99,9 +99,9 @@ def test_protectionmanager(mocker, default_conf): for handler in freqtrade.protections._protection_handlers: assert handler.name in AVAILABLE_PROTECTIONS if not handler.has_global_stop: - assert handler.global_stop(datetime.now(timezone.utc), "*") is None + assert handler.global_stop(datetime.now(UTC), "*") is None if not handler.has_local_stop: - assert handler.stop_per_pair("XRP/BTC", datetime.now(timezone.utc), "*") is None + assert handler.stop_per_pair("XRP/BTC", datetime.now(UTC), "*") is None @pytest.mark.parametrize( @@ -499,7 +499,7 @@ def test_CooldownPeriod_unlock_at(mocker, default_conf, fee, caplog, time_machin assert not log_has_re(message, caplog) caplog.clear() - start_dt = datetime(2024, 5, 2, 0, 30, 0, tzinfo=timezone.utc) + start_dt = datetime(2024, 5, 2, 0, 30, 0, tzinfo=UTC) time_machine.move_to(start_dt, tick=False) generate_mock_trade( @@ -527,7 +527,7 @@ def test_CooldownPeriod_unlock_at(mocker, default_conf, fee, caplog, time_machin assert not PairLocks.is_global_lock() # Force rollover to the next day. - start_dt = datetime(2024, 5, 2, 22, 00, 0, tzinfo=timezone.utc) + start_dt = datetime(2024, 5, 2, 22, 00, 0, tzinfo=UTC) time_machine.move_to(start_dt, tick=False) generate_mock_trade( "ETH/BTC", diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a57053210..3c8490d44 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -1,12 +1,11 @@ from copy import deepcopy -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from unittest.mock import ANY, MagicMock, PropertyMock import pytest from numpy import isnan from sqlalchemy import select -from freqtrade.edge import PairInfo from freqtrade.enums import SignalDirection, State, TradingMode from freqtrade.exceptions import ExchangeError, InvalidOrderException, TemporaryError from freqtrade.persistence import Order, Trade @@ -228,7 +227,8 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: assert results[0] == response_norate -def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: +def test_rpc_status_table(default_conf, ticker, fee, mocker, time_machine) -> None: + time_machine.move_to("2024-05-10 11:15:00 +00:00", tick=False) mocker.patch.multiple( "freqtrade.rpc.fiat_convert.FtCoinGeckoApi", get_price=MagicMock(return_value={"bitcoin": {"usd": 15000.0}}), @@ -347,7 +347,7 @@ def test__rpc_timeunit_profit( assert day["starting_balance"] in (pytest.approx(1062.37), pytest.approx(1066.46)) assert day["fiat_value"] in (0.0,) # ensure first day is current date - assert str(days["data"][0]["date"]) == str(datetime.now(timezone.utc).date()) + assert str(days["data"][0]["date"]) == str(datetime.now(UTC).date()) # Try invalid data with pytest.raises(RPCException, match=r".*must be an integer greater than 0*"): @@ -393,7 +393,7 @@ def test_rpc_delete_trade(mocker, default_conf, fee, markets, caplog, is_short): freqtradebot.strategy.order_types["stoploss_on_exchange"] = True create_mock_trades(fee, is_short) rpc = RPC(freqtradebot) - with pytest.raises(RPCException, match="invalid argument"): + with pytest.raises(RPCException, match="Trade with id '200' not found."): rpc._rpc_delete("200") trades = Trade.session.scalars(select(Trade)).all() @@ -1296,9 +1296,9 @@ def test_rpc_add_and_delete_lock(mocker, default_conf): rpc = RPC(freqtradebot) pair = "ETH/BTC" - rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=4), "", "*") - rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=5), "", "*") - rpc._rpc_add_lock(pair, datetime.now(timezone.utc) + timedelta(minutes=10), "", "*") + rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=4), "", "*") + rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=5), "", "*") + rpc._rpc_add_lock(pair, datetime.now(UTC) + timedelta(minutes=10), "", "*") locks = rpc._rpc_locks() assert locks["lock_count"] == 3 @@ -1392,36 +1392,6 @@ def test_rpc_blacklist(mocker, default_conf) -> None: assert isinstance(ret["errors"], dict) -def test_rpc_edge_disabled(mocker, default_conf) -> None: - mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock()) - freqtradebot = get_patched_freqtradebot(mocker, default_conf) - rpc = RPC(freqtradebot) - with pytest.raises(RPCException, match=r"Edge is not enabled."): - rpc._rpc_edge() - - -def test_rpc_edge_enabled(mocker, edge_conf) -> None: - mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock()) - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.02, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - freqtradebot = get_patched_freqtradebot(mocker, edge_conf) - - rpc = RPC(freqtradebot) - ret = rpc._rpc_edge() - - assert len(ret) == 1 - assert ret[0]["Pair"] == "E/F" - assert ret[0]["Winrate"] == 0.66 - assert ret[0]["Expectancy"] == 1.71 - assert ret[0]["Stoploss"] == -0.02 - - def test_rpc_health(mocker, default_conf) -> None: mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock()) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 6261f1ae1..56068e6fe 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -5,7 +5,7 @@ Unit test file for rpc/api_server.py import asyncio import logging import time -from datetime import datetime, timedelta, timezone +from datetime import UTC, datetime, timedelta from pathlib import Path from unittest.mock import ANY, MagicMock, PropertyMock @@ -637,12 +637,12 @@ def test_api_locks(botclient): [ { "pair": "ETH/BTC", - "until": f"{format_date(datetime.now(timezone.utc) + timedelta(minutes=4))}Z", + "until": f"{format_date(datetime.now(UTC) + timedelta(minutes=4))}Z", "reason": "randreason", }, { "pair": "XRP/BTC", - "until": f"{format_date(datetime.now(timezone.utc) + timedelta(minutes=20))}Z", + "until": f"{format_date(datetime.now(UTC) + timedelta(minutes=20))}Z", "reason": "deadbeef", }, ], @@ -711,7 +711,7 @@ def test_api_daily(botclient, mocker, ticker, fee, markets): assert len(response["data"]) == 7 assert response["stake_currency"] == "BTC" assert response["fiat_display_currency"] == "USD" - assert response["data"][0]["date"] == str(datetime.now(timezone.utc).date()) + assert response["data"][0]["date"] == str(datetime.now(UTC).date()) def test_api_weekly(botclient, mocker, ticker, fee, markets, time_machine): @@ -776,12 +776,28 @@ def test_api_trades(botclient, mocker, fee, markets, is_short): assert rc.json()["trades_count"] == 2 assert rc.json()["total_trades"] == 2 assert rc.json()["trades"][0]["is_short"] == is_short + # Ensure the trades are sorted by trade_id (the default, see below) + assert rc.json()["trades"][0]["trade_id"] == 2 + assert rc.json()["trades"][1]["trade_id"] == 3 + rc = client_get(client, f"{BASE_URI}/trades?limit=1") assert_response(rc) assert len(rc.json()["trades"]) == 1 assert rc.json()["trades_count"] == 1 assert rc.json()["total_trades"] == 2 + # Test ascending order (default) + rc = client_get(client, f"{BASE_URI}/trades?order_by_id=true") + assert_response(rc) + assert rc.json()["trades"][0]["trade_id"] == 2 + assert rc.json()["trades"][1]["trade_id"] == 3 + + # Test descending order + rc = client_get(client, f"{BASE_URI}/trades?order_by_id=false") + assert_response(rc) + assert rc.json()["trades"][0]["trade_id"] == 3 + assert rc.json()["trades"][1]["trade_id"] == 2 + @pytest.mark.parametrize("is_short", [True, False]) def test_api_trade_single(botclient, mocker, fee, ticker, markets, is_short): @@ -1032,7 +1048,7 @@ def test_api_delete_trade(botclient, mocker, fee, markets, is_short): rc = client_delete(client, f"{BASE_URI}/trades/1") assert_response(rc) - assert rc.json()["result_msg"] == "Deleted trade 1. Closed 1 open orders." + assert rc.json()["result_msg"] == "Deleted trade #1 for pair ETH/BTC. Closed 1 open orders." assert len(trades) - 1 == len(Trade.session.scalars(select(Trade)).all()) assert cancel_mock.call_count == 1 @@ -1045,7 +1061,7 @@ def test_api_delete_trade(botclient, mocker, fee, markets, is_short): assert len(trades) - 1 == len(Trade.session.scalars(select(Trade)).all()) rc = client_delete(client, f"{BASE_URI}/trades/5") assert_response(rc) - assert rc.json()["result_msg"] == "Deleted trade 5. Closed 1 open orders." + assert rc.json()["result_msg"] == "Deleted trade #5 for pair XRP/BTC. Closed 1 open orders." assert len(trades) - 2 == len(Trade.session.scalars(select(Trade)).all()) assert stoploss_mock.call_count == 1 @@ -1151,21 +1167,6 @@ def test_api_logs(botclient): assert len(rc1.json()["logs"]) == rc1.json()["log_count"] -def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): - ftbot, client = botclient - patch_get_signal(ftbot) - mocker.patch.multiple( - EXMS, - get_balances=MagicMock(return_value=ticker), - fetch_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets), - ) - rc = client_get(client, f"{BASE_URI}/edge") - assert_response(rc, 502) - assert rc.json() == {"error": "Error querying /api/v1/edge: Edge is not enabled."} - - @pytest.mark.parametrize( "is_short,expected", [ @@ -1331,12 +1332,55 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, is_short, expected) "max_drawdown_start_timestamp": ANY, "max_drawdown_end": ANY, "max_drawdown_end_timestamp": ANY, + "current_drawdown": ANY, + "current_drawdown_abs": ANY, + "current_drawdown_high": ANY, + "current_drawdown_start": ANY, + "current_drawdown_start_timestamp": ANY, "trading_volume": expected["trading_volume"], "bot_start_timestamp": 0, "bot_start_date": "", } +def test_api_profit_all(botclient, mocker, ticker, fee, markets): + ftbot, client = botclient + ftbot.config["tradable_balance_ratio"] = 1 + ftbot.config["trading_mode"] = TradingMode.FUTURES + patch_get_signal(ftbot) + mocker.patch.multiple( + EXMS, + get_balances=MagicMock(return_value=ticker), + fetch_ticker=ticker, + get_fee=fee, + markets=PropertyMock(return_value=markets), + ) + + rc = client_get(client, f"{BASE_URI}/profit_all") + assert_response(rc, 200) + response = rc.json() + assert "all" in response + assert "long" in response + assert "short" in response + + assert response["all"]["trade_count"] == 0 + create_mock_trades_usdt(fee, is_short=None) + + rc = client_get(client, f"{BASE_URI}/profit_all") + assert_response(rc, 200) + response = rc.json() + assert response["all"]["trade_count"] == 7 + assert response["long"]["trade_count"] == 2 + assert response["short"]["trade_count"] == 5 + assert pytest.approx(response["all"]["profit_all_coin"]) == 22.58997755 + assert pytest.approx(response["long"]["profit_all_coin"]) == -20.0498903 + assert pytest.approx(response["short"]["profit_all_coin"]) == 42.639867 + + assert response["all"]["best_pair"] == "NEO/USDT" + assert response["long"]["best_pair"] == "" + assert response["short"]["best_pair"] == "NEO/USDT" + + @pytest.mark.parametrize("is_short", [True, False]) def test_api_stats(botclient, mocker, ticker, fee, markets, is_short): ftbot, client = botclient @@ -1694,7 +1738,7 @@ def test_api_force_entry(botclient, mocker, fee, endpoint): exchange="binance", stake_amount=1, open_rate=0.245441, - open_date=datetime.now(timezone.utc), + open_date=datetime.now(UTC), is_open=False, is_short=False, fee_close=fee.return_value, @@ -1848,7 +1892,21 @@ def test_api_pair_candles(botclient, ohlcv_history): ohlcv_history["exit_short"] = 0 ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history, CandleType.SPOT) + fake_plot_annotations = [ + { + "type": "area", + "start": "2024-01-01 15:00:00", + "end": "2024-01-01 16:00:00", + "y_start": 94000.2, + "y_end": 98000, + "color": "", + "label": "some label", + } + ] + plot_annotations_mock = MagicMock(return_value=fake_plot_annotations) + ftbot.strategy.plot_annotations = plot_annotations_mock for call in ("get", "post"): + plot_annotations_mock.reset_mock() if call == "get": rc = client_get( client, @@ -1878,6 +1936,8 @@ def test_api_pair_candles(botclient, ohlcv_history): assert resp["data_start_ts"] == 1511686200000 assert resp["data_stop"] == "2017-11-26 09:00:00+00:00" assert resp["data_stop_ts"] == 1511686800000 + assert resp["annotations"] == fake_plot_annotations + assert plot_annotations_mock.call_count == 1 assert isinstance(resp["columns"], list) base_cols = { "date", @@ -2219,6 +2279,7 @@ def test_api_pair_history(botclient, tmp_path, mocker): assert result["data_start_ts"] == 1515628800000 assert result["data_stop"] == "2018-01-12 00:00:00+00:00" assert result["data_stop_ts"] == 1515715200000 + assert result["annotations"] == [] lfm.reset_mock() # No data found @@ -2741,8 +2802,8 @@ def test_api_backtesting(botclient, mocker, fee, caplog, tmp_path): ftbot.config["export"] = "trades" ftbot.config["backtest_cache"] = "day" ftbot.config["user_data_dir"] = tmp_path - ftbot.config["exportfilename"] = tmp_path / "backtest_results" - ftbot.config["exportfilename"].mkdir() + ftbot.config["exportdirectory"] = tmp_path / "backtest_results" + ftbot.config["exportdirectory"].mkdir() # start backtesting data = { @@ -2853,7 +2914,7 @@ def test_api_backtesting(botclient, mocker, fee, caplog, tmp_path): def test_api_backtest_history(botclient, mocker, testdatadir): ftbot, client = botclient mocker.patch( - "freqtrade.data.btanalysis._get_backtest_files", + "freqtrade.data.btanalysis.bt_fileutils._get_backtest_files", return_value=[ testdatadir / "backtest_results/backtest-result_multistrat.json", testdatadir / "backtest_results/backtest-result.json", diff --git a/tests/rpc/test_rpc_emc.py b/tests/rpc/test_rpc_emc.py index 678379e68..ef4bbad5e 100644 --- a/tests/rpc/test_rpc_emc.py +++ b/tests/rpc/test_rpc_emc.py @@ -4,7 +4,7 @@ Unit test file for rpc/external_message_consumer.py import asyncio import logging -from datetime import datetime, timezone +from datetime import UTC, datetime from unittest.mock import MagicMock import pytest @@ -99,7 +99,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history): "data": { "key": ("BTC/USDT", "5m", "spot"), "df": ohlcv_history, - "la": datetime.now(timezone.utc), + "la": datetime.now(UTC), }, } patched_emc.handle_producer_message(test_producer, df_message) @@ -123,7 +123,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history): malformed_message = { "type": "analyzed_df", - "data": {"key": "BTC/USDT", "df": ohlcv_history, "la": datetime.now(timezone.utc)}, + "data": {"key": "BTC/USDT", "df": ohlcv_history, "la": datetime.now(UTC)}, } patched_emc.handle_producer_message(test_producer, malformed_message) @@ -137,7 +137,7 @@ def test_emc_handle_producer_message(patched_emc, caplog, ohlcv_history): "data": { "key": ("BTC/USDT", "5m", "spot"), "df": ohlcv_history.loc[ohlcv_history["open"] < 0], - "la": datetime.now(timezone.utc), + "la": datetime.now(UTC), }, } patched_emc.handle_producer_message(test_producer, malformed_message) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 3409cc0e5..e2540e885 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -21,7 +21,6 @@ from telegram.error import BadRequest, NetworkError, TelegramError from freqtrade import __version__ from freqtrade.constants import CANCEL_REASON -from freqtrade.edge import PairInfo from freqtrade.enums import ( ExitType, MarketDirection, @@ -79,18 +78,18 @@ def update(): def patch_eventloop_threading(telegrambot): - is_init = False + init_event = threading.Event() def thread_fuck(): - nonlocal is_init telegrambot._loop = asyncio.new_event_loop() - is_init = True + init_event.set() telegrambot._loop.run_forever() x = threading.Thread(target=thread_fuck, daemon=True) x.start() - while not is_init: - pass + # Wait for thread to be properly initialized with timeout + if not init_event.wait(timeout=5.0): + raise RuntimeError("Failed to initialize event loop thread") class DummyCls(Telegram): @@ -171,8 +170,8 @@ def test_telegram_init(default_conf, mocker, caplog) -> None: "['reload_conf', 'reload_config'], ['show_conf', 'show_config'], " "['pause', 'stopbuy', 'stopentry'], ['whitelist'], ['blacklist'], " "['bl_delete', 'blacklist_delete'], " - "['logs'], ['edge'], ['health'], ['help'], ['version'], ['marketdir'], " - "['order'], ['list_custom_data'], ['tg_info']]" + "['logs'], ['health'], ['help'], ['version'], ['marketdir'], " + "['order'], ['list_custom_data'], ['tg_info'], ['profit_long'], ['profit_short']]" ) assert log_has(message_str, caplog) @@ -944,7 +943,7 @@ async def test_telegram_profit_handle( trade.is_open = False Trade.commit() - context.args = [3] + context.args = ["3"] await telegram._profit(update=update, context=context) assert msg_mock.call_count == 1 assert "*ROI:* Closed trades" in msg_mock.call_args_list[-1][0][0] @@ -968,6 +967,92 @@ async def test_telegram_profit_handle( assert "*Trading volume:* `126 USDT`" in msg_mock.call_args_list[-1][0][0] +@pytest.mark.asyncio +async def test_telegram_profit_long_short_handle( + default_conf_usdt, update, ticker_usdt, fee, mocker +): + """ + Test the /profit_long and /profit_short commands to ensure the output content + is consistent with /profit, covering both no trades and trades present cases. + """ + + mocker.patch("freqtrade.rpc.rpc.CryptoToFiatConverter._find_price", return_value=1.1) + mocker.patch.multiple(EXMS, fetch_ticker=ticker_usdt, get_fee=fee) + telegram, freqtradebot, msg_mock = get_telegram_testobject(mocker, default_conf_usdt) + + # When there are no trades + await telegram._profit_long(update=update, context=MagicMock()) + assert msg_mock.call_count == 1 + assert "No long trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + + # Test support with "/profit long" + context = MagicMock() + context.args = ["long"] + await telegram._profit(update=update, context=context) + assert msg_mock.call_count == 1 + assert "No long trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + + await telegram._profit_short(update=update, context=MagicMock()) + assert msg_mock.call_count == 1 + assert "No short trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + + # Test support with "/profit short" + context = MagicMock() + context.args = ["short"] + await telegram._profit(update=update, context=context) + assert msg_mock.call_count == 1 + assert "No short trades yet." in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + + # When there are trades + create_mock_trades_usdt(fee) + + # Keep only long trades + for t in Trade.get_trades_proxy(): + t.is_short = False + Trade.commit() + await telegram._profit_long(update=update, context=MagicMock()) + msg = msg_mock.call_args_list[0][0][0] + assert "*ROI:* Closed long trades" in msg + assert "*ROI:* All long trades" in msg + assert "*Total Trade Count:*" in msg + assert "*Winrate:*" in msg + assert "*Expectancy (Ratio):*" in msg + assert "*Best Performing:*" in msg + assert "*Profit factor:*" in msg + assert "*Max Drawdown:*" in msg + assert "*Current Drawdown:*" in msg + msg_mock.reset_mock() + + # Keep only short trades + for t in Trade.get_trades_proxy(): + t.is_short = True + Trade.commit() + await telegram._profit_short(update=update, context=MagicMock()) + msg = msg_mock.call_args_list[0][0][0] + assert "*ROI:* Closed short trades" in msg + assert "*ROI:* All short trades" in msg + assert "*Total Trade Count:*" in msg + assert "*Winrate:*" in msg + assert "*Expectancy (Ratio):*" in msg + assert "*Best Performing:*" in msg + assert "*Profit factor:*" in msg + assert "*Max Drawdown:*" in msg + assert "*Current Drawdown:*" in msg + msg_mock.reset_mock() + + # Test parameter passing + context = MagicMock() + context.args = ["2"] + await telegram._profit_long(update=update, context=context) + assert msg_mock.call_count == 1 + await telegram._profit_short(update=update, context=context) + assert msg_mock.call_count == 2 + + @pytest.mark.parametrize("is_short", [True, False]) async def test_telegram_stats(default_conf, update, ticker, fee, mocker, is_short) -> None: mocker.patch("freqtrade.rpc.rpc.CryptoToFiatConverter._find_price", return_value=15000.0) @@ -1952,40 +2037,6 @@ async def test_telegram_logs(default_conf, update, mocker) -> None: assert msg_mock.call_count >= 2 -async def test_edge_disabled(default_conf, update, mocker) -> None: - telegram, _, msg_mock = get_telegram_testobject(mocker, default_conf) - - await telegram._edge(update=update, context=MagicMock()) - assert msg_mock.call_count == 1 - assert "Edge is not enabled." in msg_mock.call_args_list[0][0][0] - - -async def test_edge_enabled(edge_conf, update, mocker) -> None: - mocker.patch( - "freqtrade.edge.Edge._cached_pairs", - mocker.PropertyMock( - return_value={ - "E/F": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60), - } - ), - ) - - telegram, _, msg_mock = get_telegram_testobject(mocker, edge_conf) - - await telegram._edge(update=update, context=MagicMock()) - assert msg_mock.call_count == 1 - assert "Edge only validated following pairs:\n
" in msg_mock.call_args_list[0][0][0]
-    assert "Pair      Winrate    Expectancy    Stoploss" in msg_mock.call_args_list[0][0][0]
-
-    msg_mock.reset_mock()
-
-    mocker.patch("freqtrade.edge.Edge._cached_pairs", mocker.PropertyMock(return_value={}))
-    await telegram._edge(update=update, context=MagicMock())
-    assert msg_mock.call_count == 1
-    assert "Edge only validated following pairs:" in msg_mock.call_args_list[0][0][0]
-    assert "Winrate" not in msg_mock.call_args_list[0][0][0]
-
-
 @pytest.mark.parametrize(
     "is_short,regex_pattern",
     [(True, r"now[ ]*XRP\/BTC \(#3\)  -1.00% \("), (False, r"now[ ]*XRP\/BTC \(#3\)  1.00% \(")],
@@ -2036,7 +2087,7 @@ async def test_telegram_delete_trade(mocker, update, default_conf, fee, is_short
     context.args = [1]
     await telegram._delete_trade(update=update, context=context)
     assert msg_mock.call_count == 1
-    assert "Deleted trade 1." in msg_mock.call_args_list[0][0][0]
+    assert "Deleted trade #1" in msg_mock.call_args_list[0][0][0]
     assert "Please make sure to take care of this asset" in msg_mock.call_args_list[0][0][0]
 
 
@@ -2925,7 +2976,7 @@ async def test_telegram_list_custom_data(default_conf_usdt, update, ticker, fee,
     msg_mock.reset_mock()
 
 
-def test_noficiation_settings(default_conf_usdt, mocker):
+def test_notification_settings(default_conf_usdt, mocker):
     (telegram, _, _) = get_telegram_testobject(mocker, default_conf_usdt)
     telegram._config["telegram"].update(
         {
diff --git a/tests/strategy/strats/__init__.py b/tests/strategy/strats/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py
index 494e374c4..27153c4de 100644
--- a/tests/strategy/test_default_strategy.py
+++ b/tests/strategy/test_default_strategy.py
@@ -1,4 +1,4 @@
-from datetime import datetime, timezone
+from datetime import UTC, datetime
 
 import pytest
 from pandas import DataFrame
@@ -47,7 +47,7 @@ def test_strategy_test_v3(dataframe_1m, fee, is_short, side):
             amount=0.1,
             rate=20000,
             time_in_force="gtc",
-            current_time=datetime.now(timezone.utc),
+            current_time=datetime.now(UTC),
             side=side,
             entry_tag=None,
         )
@@ -63,7 +63,7 @@ def test_strategy_test_v3(dataframe_1m, fee, is_short, side):
             time_in_force="gtc",
             exit_reason="roi",
             sell_reason="roi",
-            current_time=datetime.now(timezone.utc),
+            current_time=datetime.now(UTC),
             side=side,
         )
         is True
diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py
index 647484535..f06248166 100644
--- a/tests/strategy/test_interface.py
+++ b/tests/strategy/test_interface.py
@@ -1,32 +1,26 @@
 # pragma pylint: disable=missing-docstring, C0103
 import logging
 import math
-from datetime import datetime, timedelta, timezone
+from datetime import UTC, datetime, timedelta
 from pathlib import Path
 from unittest.mock import MagicMock
 
 import pytest
-from pandas import DataFrame
+from pandas import DataFrame, concat
 
 from freqtrade.configuration import TimeRange
 from freqtrade.constants import CUSTOM_TAG_MAX_LENGTH
 from freqtrade.data.dataprovider import DataProvider
 from freqtrade.data.history import load_data
-from freqtrade.enums import ExitCheckTuple, ExitType, HyperoptState, SignalDirection
+from freqtrade.enums import ExitCheckTuple, ExitType, SignalDirection
 from freqtrade.exceptions import OperationalException, StrategyError
-from freqtrade.optimize.hyperopt_tools import HyperoptStateContainer
-from freqtrade.optimize.space import SKDecimal
 from freqtrade.persistence import PairLocks, Trade
 from freqtrade.resolvers import StrategyResolver
 from freqtrade.strategy.hyper import detect_parameters
 from freqtrade.strategy.parameters import (
-    BaseParameter,
-    BooleanParameter,
-    CategoricalParameter,
-    DecimalParameter,
     IntParameter,
-    RealParameter,
 )
+from freqtrade.strategy.strategy_validation import StrategyResultValidator
 from freqtrade.util import dt_now
 from tests.conftest import CURRENT_TEST_STRATEGY, TRADE_SIDES, log_has, log_has_re
 
@@ -124,7 +118,7 @@ def test_returns_latest_signal(ohlcv_history):
 def test_analyze_pair_empty(mocker, caplog, ohlcv_history):
     mocker.patch.object(_STRATEGY.dp, "ohlcv", return_value=ohlcv_history)
     mocker.patch.object(_STRATEGY, "_analyze_ticker_internal", return_value=DataFrame([]))
-    mocker.patch.object(_STRATEGY, "assert_df")
+    mocker.patch("freqtrade.strategy.interface.StrategyResultValidator.assert_df")
 
     _STRATEGY.analyze_pair("ETH/BTC")
 
@@ -174,7 +168,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history):
     mocked_history.loc[1, "enter_long"] = 1
 
     caplog.set_level(logging.INFO)
-    mocker.patch.object(_STRATEGY, "assert_df")
+    mocker.patch("freqtrade.strategy.interface.StrategyResultValidator.assert_df")
 
     assert (None, None) == _STRATEGY.get_latest_candle(
         "xyz", default_conf["timeframe"], mocked_history
@@ -194,7 +188,9 @@ def test_get_signal_no_sell_column(default_conf, mocker, caplog, ohlcv_history):
     mocked_history.loc[1, "enter_long"] = 1
 
     caplog.set_level(logging.INFO)
-    mocker.patch.object(_STRATEGY, "assert_df")
+    mocker.patch(
+        "freqtrade.strategy.interface.StrategyResultValidator.assert_df",
+    )
 
     assert (SignalDirection.LONG, None) == _STRATEGY.get_entry_signal(
         "xyz", default_conf["timeframe"], mocked_history
@@ -205,7 +201,7 @@ def test_ignore_expired_candle(default_conf):
     strategy = StrategyResolver.load_strategy(default_conf)
     strategy.ignore_buying_expired_candle_after = 60
 
-    latest_date = datetime(2020, 12, 30, 7, 0, 0, tzinfo=timezone.utc)
+    latest_date = datetime(2020, 12, 30, 7, 0, 0, tzinfo=UTC)
     # Add 1 candle length as the "latest date" defines candle open.
     current_time = latest_date + timedelta(seconds=80 + 300)
 
@@ -237,7 +233,10 @@ def test_assert_df_raise(mocker, caplog, ohlcv_history):
     caplog.set_level(logging.INFO)
     mocker.patch.object(_STRATEGY.dp, "ohlcv", return_value=ohlcv_history)
     mocker.patch.object(_STRATEGY.dp, "get_analyzed_dataframe", return_value=(mocked_history, 0))
-    mocker.patch.object(_STRATEGY, "assert_df", side_effect=StrategyError("Dataframe returned..."))
+    mocker.patch(
+        "freqtrade.strategy.interface.StrategyResultValidator.assert_df",
+        side_effect=StrategyError("Dataframe returned..."),
+    )
     _STRATEGY.analyze_pair("xyz")
     assert log_has(
         "Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...", caplog
@@ -248,59 +247,39 @@ def test_assert_df(ohlcv_history, caplog):
     df_len = len(ohlcv_history) - 1
     ohlcv_history.loc[:, "enter_long"] = 0
     ohlcv_history.loc[:, "exit_long"] = 0
+    validator = StrategyResultValidator(ohlcv_history, warn_only=False)
     # Ensure it's running when passed correctly
-    _STRATEGY.assert_df(
-        ohlcv_history,
-        len(ohlcv_history),
-        ohlcv_history.loc[df_len, "close"],
-        ohlcv_history.loc[df_len, "date"],
-    )
+    validator.assert_df(ohlcv_history)
 
     with pytest.raises(StrategyError, match=r"Dataframe returned from strategy.*length\."):
-        _STRATEGY.assert_df(
-            ohlcv_history,
-            len(ohlcv_history) + 1,
-            ohlcv_history.loc[df_len, "close"],
-            ohlcv_history.loc[df_len, "date"],
-        )
+        validator.assert_df(concat([ohlcv_history, ohlcv_history]))
 
     with pytest.raises(
         StrategyError, match=r"Dataframe returned from strategy.*last close price\."
     ):
-        _STRATEGY.assert_df(
-            ohlcv_history,
-            len(ohlcv_history),
-            ohlcv_history.loc[df_len, "close"] + 0.01,
-            ohlcv_history.loc[df_len, "date"],
-        )
+        df = ohlcv_history.copy()
+        df.loc[df_len, "close"] += 0.01
+        validator.assert_df(df)
+
     with pytest.raises(StrategyError, match=r"Dataframe returned from strategy.*last date\."):
-        _STRATEGY.assert_df(
-            ohlcv_history,
-            len(ohlcv_history),
-            ohlcv_history.loc[df_len, "close"],
-            ohlcv_history.loc[0, "date"],
-        )
+        df = ohlcv_history.copy()
+        df.loc[df_len, "date"] = ohlcv_history.loc[0, "date"] - timedelta(days=1)
+        validator.assert_df(df)
+
     with pytest.raises(
         StrategyError, match=r"No dataframe returned \(return statement missing\?\)."
     ):
-        _STRATEGY.assert_df(
-            None,
-            len(ohlcv_history),
-            ohlcv_history.loc[df_len, "close"],
-            ohlcv_history.loc[0, "date"],
-        )
+        validator.assert_df(None)
+
+    validator = StrategyResultValidator(ohlcv_history, warn_only=True)
 
-    _STRATEGY.disable_dataframe_checks = True
     caplog.clear()
-    _STRATEGY.assert_df(
-        ohlcv_history,
-        len(ohlcv_history),
-        ohlcv_history.loc[2, "close"],
-        ohlcv_history.loc[0, "date"],
-    )
+    df = ohlcv_history.copy()
+    df.loc[df_len, "date"] = ohlcv_history.loc[0, "date"] - timedelta(days=1)
+
+    validator.assert_df(df)
     assert log_has_re(r"Dataframe returned from strategy.*last date\.", caplog)
     # reset to avoid problems in other tests due to test leakage
-    _STRATEGY.disable_dataframe_checks = False
 
 
 def test_advise_all_indicators(default_conf, testdatadir) -> None:
@@ -425,6 +404,57 @@ def test_min_roi_reached3(default_conf, fee) -> None:
     assert strategy.min_roi_reached(trade, 0.31, dt_now() - timedelta(minutes=2))
 
 
+def test_min_roi_reached_custom_roi(default_conf, fee) -> None:
+    strategy = StrategyResolver.load_strategy(default_conf)
+    # Move traditional ROI out of the way
+    strategy.minimal_roi = {0: 2000}
+    strategy.use_custom_roi = True
+
+    def custom_roi(*args, trade: Trade, current_time: datetime, **kwargs):
+        trade_dur = int((current_time.timestamp() - trade.open_date_utc.timestamp()) // 60)
+        # Profit is reduced after 30 minutes.
+        if trade.pair == "XRP/BTC":
+            return 0.2
+        if trade_dur > 30:
+            return 0.05
+        return 0.1
+
+    strategy.custom_roi = MagicMock(side_effect=custom_roi)
+
+    trade = Trade(
+        pair="ETH/BTC",
+        stake_amount=0.001,
+        amount=5,
+        open_date=dt_now() - timedelta(hours=1),
+        fee_open=fee.return_value,
+        fee_close=fee.return_value,
+        exchange="binance",
+        open_rate=1,
+    )
+
+    assert not strategy.min_roi_reached(trade, 0.02, dt_now() - timedelta(minutes=56))
+    assert strategy.custom_roi.call_count == 1
+    assert strategy.min_roi_reached(trade, 0.12, dt_now() - timedelta(minutes=56))
+
+    # after 30 minutes, the profit is reduced to 5%
+    assert strategy.min_roi_reached(trade, 0.12, dt_now() - timedelta(minutes=29))
+    assert strategy.min_roi_reached(trade, 0.06, dt_now() - timedelta(minutes=29))
+    assert strategy.min_roi_reached(trade, 0.051, dt_now() - timedelta(minutes=29))
+    # Comparison to exactly 5% should not trigger
+    assert not strategy.min_roi_reached(trade, 0.05, dt_now() - timedelta(minutes=29))
+
+    # XRP/BTC has a custom roi of 20%.
+
+    trade.pair = "XRP/BTC"
+    assert not strategy.min_roi_reached(trade, 0.12, dt_now() - timedelta(minutes=56))
+    assert not strategy.min_roi_reached(trade, 0.12, dt_now() - timedelta(minutes=1))
+    # XRP/BTC is not time related
+    assert strategy.min_roi_reached(trade, 0.201, dt_now() - timedelta(minutes=1))
+    assert strategy.min_roi_reached(trade, 0.201, dt_now() - timedelta(minutes=56))
+
+    assert strategy.custom_roi.call_count == 10
+
+
 @pytest.mark.parametrize(
     "profit,adjusted,expected,liq,trailing,custom,profit2,adjusted2,expected2,custom_stop",
     [
@@ -728,7 +758,7 @@ def test_leverage_callback(default_conf, side) -> None:
     assert (
         strategy.leverage(
             pair="XRP/USDT",
-            current_time=datetime.now(timezone.utc),
+            current_time=datetime.now(UTC),
             current_rate=2.2,
             proposed_leverage=1.0,
             max_leverage=5.0,
@@ -743,7 +773,7 @@ def test_leverage_callback(default_conf, side) -> None:
     assert (
         strategy.leverage(
             pair="XRP/USDT",
-            current_time=datetime.now(timezone.utc),
+            current_time=datetime.now(UTC),
             current_rate=2.2,
             proposed_leverage=1.0,
             max_leverage=5.0,
@@ -860,7 +890,7 @@ def test_is_pair_locked(default_conf):
 
     pair = "BTC/USDT"
     # Lock until 14:30
-    lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc)
+    lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=UTC)
     # Subtract 2 seconds, as locking rounds up to the next candle.
     strategy.lock_pair(pair, lock_time - timedelta(seconds=2))
 
@@ -893,95 +923,6 @@ def test_is_informative_pairs_callback(default_conf):
     assert [] == strategy.gather_informative_pairs()
 
 
-def test_hyperopt_parameters():
-    HyperoptStateContainer.set_state(HyperoptState.INDICATORS)
-    from skopt.space import Categorical, Integer, Real
-
-    with pytest.raises(OperationalException, match=r"Name is determined.*"):
-        IntParameter(low=0, high=5, default=1, name="hello")
-
-    with pytest.raises(OperationalException, match=r"IntParameter space must be.*"):
-        IntParameter(low=0, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"RealParameter space must be.*"):
-        RealParameter(low=0, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"DecimalParameter space must be.*"):
-        DecimalParameter(low=0, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"IntParameter space invalid\."):
-        IntParameter([0, 10], high=7, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"RealParameter space invalid\."):
-        RealParameter([0, 10], high=7, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"DecimalParameter space invalid\."):
-        DecimalParameter([0, 10], high=7, default=5, space="buy")
-
-    with pytest.raises(OperationalException, match=r"CategoricalParameter space must.*"):
-        CategoricalParameter(["aa"], default="aa", space="buy")
-
-    with pytest.raises(TypeError):
-        BaseParameter(opt_range=[0, 1], default=1, space="buy")
-
-    intpar = IntParameter(low=0, high=5, default=1, space="buy")
-    assert intpar.value == 1
-    assert isinstance(intpar.get_space(""), Integer)
-    assert isinstance(intpar.range, range)
-    assert len(list(intpar.range)) == 1
-    # Range contains ONLY the default / value.
-    assert list(intpar.range) == [intpar.value]
-    intpar.in_space = True
-
-    assert len(list(intpar.range)) == 6
-    assert list(intpar.range) == [0, 1, 2, 3, 4, 5]
-
-    fltpar = RealParameter(low=0.0, high=5.5, default=1.0, space="buy")
-    assert fltpar.value == 1
-    assert isinstance(fltpar.get_space(""), Real)
-
-    fltpar = DecimalParameter(low=0.0, high=0.5, default=0.14, decimals=1, space="buy")
-    assert fltpar.value == 0.1
-    assert isinstance(fltpar.get_space(""), SKDecimal)
-    assert isinstance(fltpar.range, list)
-    assert len(list(fltpar.range)) == 1
-    # Range contains ONLY the default / value.
-    assert list(fltpar.range) == [fltpar.value]
-    fltpar.in_space = True
-    assert len(list(fltpar.range)) == 6
-    assert list(fltpar.range) == [0.0, 0.1, 0.2, 0.3, 0.4, 0.5]
-
-    catpar = CategoricalParameter(
-        ["buy_rsi", "buy_macd", "buy_none"], default="buy_macd", space="buy"
-    )
-    assert catpar.value == "buy_macd"
-    assert isinstance(catpar.get_space(""), Categorical)
-    assert isinstance(catpar.range, list)
-    assert len(list(catpar.range)) == 1
-    # Range contains ONLY the default / value.
-    assert list(catpar.range) == [catpar.value]
-    catpar.in_space = True
-    assert len(list(catpar.range)) == 3
-    assert list(catpar.range) == ["buy_rsi", "buy_macd", "buy_none"]
-
-    boolpar = BooleanParameter(default=True, space="buy")
-    assert boolpar.value is True
-    assert isinstance(boolpar.get_space(""), Categorical)
-    assert isinstance(boolpar.range, list)
-    assert len(list(boolpar.range)) == 1
-
-    boolpar.in_space = True
-    assert len(list(boolpar.range)) == 2
-
-    assert list(boolpar.range) == [True, False]
-
-    HyperoptStateContainer.set_state(HyperoptState.OPTIMIZE)
-    assert len(list(intpar.range)) == 1
-    assert len(list(fltpar.range)) == 1
-    assert len(list(catpar.range)) == 1
-    assert len(list(boolpar.range)) == 1
-
-
 def test_auto_hyperopt_interface(default_conf):
     default_conf.update({"strategy": "HyperoptableStrategyV2"})
     PairLocks.timeframe = default_conf["timeframe"]
diff --git a/tests/strategy/test_strategy_helpers.py b/tests/strategy/test_strategy_helpers.py
index aeb46a4e4..605579191 100644
--- a/tests/strategy/test_strategy_helpers.py
+++ b/tests/strategy/test_strategy_helpers.py
@@ -354,6 +354,7 @@ def test_informative_decorator(mocker, default_conf_usdt, trading_mode):
     default_conf_usdt["strategy"] = "InformativeDecoratorTest"
     strategy = StrategyResolver.load_strategy(default_conf_usdt)
     exchange = get_patched_exchange(mocker, default_conf_usdt)
+    default_conf_usdt["candle_type_def"] = candle_def
     strategy.dp = DataProvider({}, exchange, None)
     mocker.patch.object(
         strategy.dp, "current_whitelist", return_value=["XRP/USDT", "LTC/USDT", "NEO/USDT"]
diff --git a/tests/strategy/test_strategy_loading.py b/tests/strategy/test_strategy_loading.py
index 927f33461..30aa56f7e 100644
--- a/tests/strategy/test_strategy_loading.py
+++ b/tests/strategy/test_strategy_loading.py
@@ -154,7 +154,7 @@ def test_strategy_can_short(caplog, default_conf):
     strat = StrategyResolver.load_strategy(default_conf)
     assert isinstance(strat, IStrategy)
     default_conf["strategy"] = "StrategyTestV3Futures"
-    with pytest.raises(ImportError, match=""):
+    with pytest.raises(ImportError, match="Short strategies cannot run in spot markets"):
         StrategyResolver.load_strategy(default_conf)
 
     default_conf["trading_mode"] = "futures"
@@ -385,6 +385,17 @@ def test_strategy_max_open_trades_infinity_from_strategy(caplog, default_conf):
     assert strategy.max_open_trades == float("inf")
     assert default_conf["max_open_trades"] == float("inf")
 
+    # test if the default value is set to infinity (V2 doesn't set max_open_trades explicitly)
+    del default_conf["max_open_trades"]
+    default_conf.update(
+        {
+            "strategy": "StrategyTestV2",
+        }
+    )
+    strategy2 = StrategyResolver.load_strategy(default_conf)
+    assert strategy2.max_open_trades == float("inf")
+    assert default_conf["max_open_trades"] == float("inf")
+
 
 def test_strategy_max_open_trades_infinity_from_config(caplog, default_conf, mocker):
     caplog.set_level(logging.INFO)
diff --git a/tests/strategy/test_strategy_parameters.py b/tests/strategy/test_strategy_parameters.py
new file mode 100644
index 000000000..e46129622
--- /dev/null
+++ b/tests/strategy/test_strategy_parameters.py
@@ -0,0 +1,136 @@
+# pragma pylint: disable=missing-docstring, C0103
+
+import pytest
+
+from freqtrade.enums import HyperoptState
+from freqtrade.exceptions import OperationalException
+from freqtrade.optimize.hyperopt_tools import HyperoptStateContainer
+from freqtrade.strategy.parameters import (
+    BaseParameter,
+    BooleanParameter,
+    CategoricalParameter,
+    DecimalParameter,
+    IntParameter,
+    RealParameter,
+)
+
+
+def test_hyperopt_int_parameter():
+    from optuna.distributions import IntDistribution
+
+    HyperoptStateContainer.set_state(HyperoptState.INDICATORS)
+
+    with pytest.raises(OperationalException, match=r"Name is determined.*"):
+        IntParameter(low=0, high=5, default=1, name="hello")
+
+    with pytest.raises(OperationalException, match=r"IntParameter space must be.*"):
+        IntParameter(low=0, default=5, space="buy")
+
+    with pytest.raises(OperationalException, match=r"IntParameter space invalid\."):
+        IntParameter([0, 10], high=7, default=5, space="buy")
+
+    intpar = IntParameter(low=0, high=5, default=1, space="buy")
+    assert intpar.value == 1
+    assert isinstance(intpar.get_space(""), IntDistribution)
+    assert isinstance(intpar.range, range)
+    assert len(list(intpar.range)) == 1
+    # Range contains ONLY the default / value.
+    assert list(intpar.range) == [intpar.value]
+    intpar.in_space = True
+
+    assert len(list(intpar.range)) == 6
+    assert list(intpar.range) == [0, 1, 2, 3, 4, 5]
+
+    HyperoptStateContainer.set_state(HyperoptState.OPTIMIZE)
+    assert len(list(intpar.range)) == 1
+
+
+def test_hyperopt_real_parameter():
+    HyperoptStateContainer.set_state(HyperoptState.INDICATORS)
+    from optuna.distributions import FloatDistribution
+
+    with pytest.raises(OperationalException, match=r"RealParameter space must be.*"):
+        RealParameter(low=0, default=5, space="buy")
+
+    with pytest.raises(OperationalException, match=r"RealParameter space invalid\."):
+        RealParameter([0, 10], high=7, default=5, space="buy")
+
+    fltpar = RealParameter(low=0.0, high=5.5, default=1.0, space="buy")
+    assert fltpar.value == 1.0
+    assert isinstance(fltpar.get_space(""), FloatDistribution)
+
+    assert not hasattr(fltpar, "range")
+
+
+def test_hyperopt_decimal_parameter():
+    HyperoptStateContainer.set_state(HyperoptState.INDICATORS)
+    # TODO: Check for get_space??
+    from freqtrade.optimize.space import SKDecimal
+
+    with pytest.raises(OperationalException, match=r"DecimalParameter space must be.*"):
+        DecimalParameter(low=0, default=5, space="buy")
+
+    with pytest.raises(OperationalException, match=r"DecimalParameter space invalid\."):
+        DecimalParameter([0, 10], high=7, default=5, space="buy")
+
+    decimalpar = DecimalParameter(low=0.0, high=0.5, default=0.14, decimals=1, space="buy")
+    assert decimalpar.value == 0.1
+    assert isinstance(decimalpar.get_space(""), SKDecimal)
+    assert isinstance(decimalpar.range, list)
+    assert len(list(decimalpar.range)) == 1
+    # Range contains ONLY the default / value.
+    assert list(decimalpar.range) == [decimalpar.value]
+    decimalpar.in_space = True
+    assert len(list(decimalpar.range)) == 6
+    assert list(decimalpar.range) == [0.0, 0.1, 0.2, 0.3, 0.4, 0.5]
+
+    decimalpar2 = DecimalParameter(low=0.01, high=0.03, decimals=3, default=0.02, space="buy")
+    decimalpar2.in_space = True
+    assert len(list(decimalpar2.range)) == 21
+    expected_range = [round(0.01 + i * 0.001, 3) for i in range(21)]
+    assert list(decimalpar2.range) == expected_range
+    assert decimalpar2.value == 0.02
+    decimalpar2.value = 0.022222
+    assert decimalpar2.value == 0.022
+
+    HyperoptStateContainer.set_state(HyperoptState.OPTIMIZE)
+    assert len(list(decimalpar.range)) == 1
+
+
+def test_hyperopt_categorical_parameter():
+    HyperoptStateContainer.set_state(HyperoptState.INDICATORS)
+    from optuna.distributions import CategoricalDistribution
+
+    with pytest.raises(OperationalException, match=r"CategoricalParameter space must.*"):
+        CategoricalParameter(["aa"], default="aa", space="buy")
+
+    with pytest.raises(TypeError):
+        BaseParameter(opt_range=[0, 1], default=1, space="buy")
+
+    catpar = CategoricalParameter(
+        ["buy_rsi", "buy_macd", "buy_none"], default="buy_macd", space="buy"
+    )
+    assert catpar.value == "buy_macd"
+    assert isinstance(catpar.get_space(""), CategoricalDistribution)
+    assert isinstance(catpar.range, list)
+    assert len(list(catpar.range)) == 1
+    # Range contains ONLY the default / value.
+    assert list(catpar.range) == [catpar.value]
+    catpar.in_space = True
+    assert len(list(catpar.range)) == 3
+    assert list(catpar.range) == ["buy_rsi", "buy_macd", "buy_none"]
+
+    boolpar = BooleanParameter(default=True, space="buy")
+    assert boolpar.value is True
+    assert isinstance(boolpar.get_space(""), CategoricalDistribution)
+    assert isinstance(boolpar.range, list)
+    assert len(list(boolpar.range)) == 1
+
+    boolpar.in_space = True
+    assert len(list(boolpar.range)) == 2
+
+    assert list(boolpar.range) == [True, False]
+
+    HyperoptStateContainer.set_state(HyperoptState.OPTIMIZE)
+    assert len(list(catpar.range)) == 1
+    assert len(list(boolpar.range)) == 1
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 6c54ad350..66d039845 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -6,11 +6,14 @@ from pathlib import Path
 from unittest.mock import MagicMock
 
 import pytest
-from jsonschema import ValidationError
 
 from freqtrade.commands import Arguments
-from freqtrade.configuration import Configuration, validate_config_consistency
-from freqtrade.configuration.config_secrets import sanitize_config
+from freqtrade.configuration import (
+    Configuration,
+    remove_exchange_credentials,
+    sanitize_config,
+    validate_config_consistency,
+)
 from freqtrade.configuration.config_validation import validate_config_schema
 from freqtrade.configuration.deprecated_settings import (
     check_conflicting_settings,
@@ -47,20 +50,20 @@ def test_load_config_missing_attributes(default_conf) -> None:
     conf = deepcopy(default_conf)
     conf.pop("exchange")
 
-    with pytest.raises(ValidationError, match=r".*'exchange' is a required property.*"):
+    with pytest.raises(ConfigurationError, match=r".*'exchange' is a required property.*"):
         validate_config_schema(conf)
 
     conf = deepcopy(default_conf)
     conf.pop("stake_currency")
     conf["runmode"] = RunMode.DRY_RUN
-    with pytest.raises(ValidationError, match=r".*'stake_currency' is a required property.*"):
+    with pytest.raises(ConfigurationError, match=r".*'stake_currency' is a required property.*"):
         validate_config_schema(conf)
 
 
 def test_load_config_incorrect_stake_amount(default_conf) -> None:
     default_conf["stake_amount"] = "fake"
 
-    with pytest.raises(ValidationError, match=r".*'fake' does not match 'unlimited'.*"):
+    with pytest.raises(ConfigurationError, match=r".*'fake' does not match 'unlimited'.*"):
         validate_config_schema(default_conf)
 
 
@@ -756,27 +759,6 @@ def test_validate_tsl(default_conf):
         validate_config_consistency(default_conf)
 
 
-def test_validate_edge2(edge_conf):
-    edge_conf.update(
-        {
-            "use_exit_signal": True,
-        }
-    )
-    # Passes test
-    validate_config_consistency(edge_conf)
-
-    edge_conf.update(
-        {
-            "use_exit_signal": False,
-        }
-    )
-    with pytest.raises(
-        OperationalException,
-        match="Edge requires `use_exit_signal` to be True, otherwise no sells will happen.",
-    ):
-        validate_config_consistency(edge_conf)
-
-
 def test_validate_whitelist(default_conf):
     default_conf["runmode"] = RunMode.DRY_RUN
     # Test regular case - has whitelist and uses StaticPairlist
@@ -1062,6 +1044,17 @@ def test__validate_orderflow(default_conf) -> None:
     validate_config_consistency(conf)
 
 
+def test_validate_edge_removal(default_conf):
+    default_conf["edge"] = {
+        "enabled": True,
+    }
+    with pytest.raises(
+        ConfigurationError,
+        match="Edge is no longer supported and has been removed from Freqtrade with 2025.6.",
+    ):
+        validate_config_consistency(default_conf)
+
+
 def test_load_config_test_comments() -> None:
     """
     Load config with comments
@@ -1081,7 +1074,7 @@ def test_load_config_default_exchange(all_conf) -> None:
 
     assert "exchange" not in all_conf
 
-    with pytest.raises(ValidationError, match=r"'exchange' is a required property"):
+    with pytest.raises(ConfigurationError, match=r"'exchange' is a required property"):
         validate_config_schema(all_conf)
 
 
@@ -1094,14 +1087,14 @@ def test_load_config_default_exchange_name(all_conf) -> None:
 
     assert "name" not in all_conf["exchange"]
 
-    with pytest.raises(ValidationError, match=r"'name' is a required property"):
+    with pytest.raises(ConfigurationError, match=r"'name' is a required property"):
         validate_config_schema(all_conf)
 
 
 def test_load_config_stoploss_exchange_limit_ratio(all_conf) -> None:
     all_conf["order_types"]["stoploss_on_exchange_limit_ratio"] = 1.15
 
-    with pytest.raises(ValidationError, match=r"1.15 is greater than the maximum"):
+    with pytest.raises(ConfigurationError, match=r"1.15 is greater than the maximum"):
         validate_config_schema(all_conf)
 
 
@@ -1315,23 +1308,6 @@ def test_process_removed_settings(mocker, default_conf, setting):
         process_temporary_deprecated_settings(default_conf)
 
 
-def test_process_deprecated_setting_edge(mocker, edge_conf):
-    patched_configuration_load_config_file(mocker, edge_conf)
-    edge_conf.update(
-        {
-            "edge": {
-                "enabled": True,
-                "capital_available_percentage": 0.5,
-            }
-        }
-    )
-
-    with pytest.raises(
-        OperationalException, match=r"DEPRECATED.*Using 'edge.capital_available_percentage'*"
-    ):
-        process_temporary_deprecated_settings(edge_conf)
-
-
 def test_check_conflicting_settings(mocker, default_conf, caplog):
     patched_configuration_load_config_file(mocker, default_conf)
 
@@ -1477,7 +1453,9 @@ def test_flat_vars_to_nested_dict(caplog):
     test_args = {
         "FREQTRADE__EXCHANGE__SOME_SETTING": "true",
         "FREQTRADE__EXCHANGE__SOME_FALSE_SETTING": "false",
-        "FREQTRADE__EXCHANGE__CONFIG__whatever": "sometime",
+        "FREQTRADE__EXCHANGE__CONFIG__whatEver": "sometime",  # Lowercased
+        # Preserve case for ccxt_config
+        "FREQTRADE__EXCHANGE__CCXT_CONFIG__httpsProxy": "something",
         "FREQTRADE__EXIT_PRICING__PRICE_SIDE": "bid",
         "FREQTRADE__EXIT_PRICING__cccc": "500",
         "FREQTRADE__STAKE_AMOUNT": "200.05",
@@ -1500,6 +1478,9 @@ def test_flat_vars_to_nested_dict(caplog):
             "config": {
                 "whatever": "sometime",
             },
+            "ccxt_config": {
+                "httpsProxy": "something",
+            },
             "some_setting": True,
             "some_false_setting": False,
             "pair_whitelist": ["BTC/USDT", "ETH/USDT"],
@@ -1609,3 +1590,17 @@ def test_sanitize_config(default_conf_usdt):
     res = sanitize_config(default_conf_usdt, show_sensitive=True)
     assert res["exchange"]["key"] == default_conf_usdt["exchange"]["key"]
     assert res["exchange"]["secret"] == default_conf_usdt["exchange"]["secret"]
+
+
+def test_remove_exchange_credentials(default_conf) -> None:
+    conf = deepcopy(default_conf)
+    remove_exchange_credentials(conf["exchange"], False)
+
+    assert conf["exchange"]["key"] != ""
+    assert conf["exchange"]["secret"] != ""
+
+    remove_exchange_credentials(conf["exchange"], True)
+    assert conf["exchange"]["key"] == ""
+    assert conf["exchange"]["secret"] == ""
+    assert conf["exchange"].get("password", "") == ""
+    assert conf["exchange"].get("uid", "") == ""
diff --git a/tests/test_docs.sh b/tests/test_docs.sh
index 09e142b99..9b85b027a 100755
--- a/tests/test_docs.sh
+++ b/tests/test_docs.sh
@@ -2,9 +2,51 @@
 # Test Documentation boxes -
 # !!! : is not allowed!
 # !!!  "title" - Title needs to be quoted!
-grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/*
+# Same for ???
+grep -Er '^(!{3}|\?{3})\s\S+:|^(!{3}|\?{3})\s\S+\s[^"]' docs/*
+format_issues=$?
 
-if  [ $? -ne 0 ]; then
+failed=0
+
+# Check for the presence of the "!!!" or "???" markers in the files
+# the consecutive non-empty line must begin with 4 spaces
+while read -r file; do
+    awk -v fname="$file" '
+    /^(!!!|\?\?\?)/ {
+        current_line_number = NR
+        current_line = $0
+        found_next_content = 0
+        while (getline nextLine > 0) {
+            # Skip empty lines
+            if (nextLine ~ /^$/) {
+                continue
+            }
+            found_next_content = 1
+            if (nextLine !~ /^    /) {
+                print "File:", fname
+                print "Error in Line ", current_line_number, "Expected next non-empty line to start with 4 spaces"
+                print ">>", current_line
+                print "------"
+                exit 1
+            }
+            break
+        }
+        if (!found_next_content) {
+            print "File:", fname
+            print "Error in Line ", current_line_number, "Found marker but no content following it"
+            print ">>", current_line
+            print "------"
+            exit 1
+        }
+    }
+    ' "$file"
+
+    if [ $? -ne 0 ]; then
+        failed=1
+    fi
+done < <(find . -type f -name "*.md")
+
+if  [ $format_issues -eq 1 ] && [ $failed -eq 0 ]; then
     echo "Docs test success."
     exit 0
 fi
diff --git a/tests/test_strategy_updater.py b/tests/test_strategy_updater.py
index 96daee973..48f1d27d7 100644
--- a/tests/test_strategy_updater.py
+++ b/tests/test_strategy_updater.py
@@ -42,8 +42,10 @@ def test_strategy_updater_methods(default_conf, caplog) -> None:
     instance_strategy_updater = StrategyUpdater()
     modified_code1 = instance_strategy_updater.update_code(
         """
+import numpy as np
 class testClass(IStrategy):
     def populate_buy_trend():
+        some_variable = np.NaN
         pass
     def populate_sell_trend():
         pass
@@ -62,6 +64,7 @@ class testClass(IStrategy):
     assert "check_exit_timeout" in modified_code1
     assert "custom_exit" in modified_code1
     assert "INTERFACE_VERSION = 3" in modified_code1
+    assert "np.nan" in modified_code1
 
 
 def test_strategy_updater_params(default_conf, caplog) -> None:
diff --git a/tests/test_talib.py b/tests/test_talib.py
index 97551bec9..81208a67c 100644
--- a/tests/test_talib.py
+++ b/tests/test_talib.py
@@ -5,11 +5,11 @@ import talib.abstract as ta
 def test_talib_bollingerbands_near_zero_values():
     inputs = pd.DataFrame(
         [
-            {"close": 0.00000010},
-            {"close": 0.00000011},
-            {"close": 0.00000012},
-            {"close": 0.00000013},
-            {"close": 0.00000014},
+            {"close": 0.000010},
+            {"close": 0.000011},
+            {"close": 0.000012},
+            {"close": 0.000013},
+            {"close": 0.000014},
         ]
     )
     bollinger = ta.BBANDS(inputs, matype=0, timeperiod=2)
diff --git a/tests/test_timerange.py b/tests/test_timerange.py
index c7471e263..c0f44f2b7 100644
--- a/tests/test_timerange.py
+++ b/tests/test_timerange.py
@@ -1,5 +1,5 @@
 # pragma pylint: disable=missing-docstring, C0103
-from datetime import datetime, timezone
+from datetime import UTC, datetime
 
 import pytest
 
@@ -29,8 +29,8 @@ def test_parse_timerange_incorrect():
     assert TimeRange("date", "date", 1231006505, 1233360000) == timerange
     assert isinstance(timerange.startdt, datetime)
     assert isinstance(timerange.stopdt, datetime)
-    assert timerange.startdt == datetime.fromtimestamp(1231006505, tz=timezone.utc)
-    assert timerange.stopdt == datetime.fromtimestamp(1233360000, tz=timezone.utc)
+    assert timerange.startdt == datetime.fromtimestamp(1231006505, tz=UTC)
+    assert timerange.stopdt == datetime.fromtimestamp(1233360000, tz=UTC)
     assert timerange.timerange_str == "20090103-20090131"
 
     timerange = TimeRange.parse_timerange("1231006505000-1233360000000")
@@ -68,7 +68,7 @@ def test_subtract_start():
 
 
 def test_adjust_start_if_necessary():
-    min_date = datetime(2017, 11, 14, 21, 15, 00, tzinfo=timezone.utc)
+    min_date = datetime(2017, 11, 14, 21, 15, 00, tzinfo=UTC)
 
     x = TimeRange("date", "date", 1510694100, 1510780500)
     # Adjust by 20 candles - min_date == startts
diff --git a/tests/util/test_datetime_helpers.py b/tests/util/test_datetime_helpers.py
index 258c5a0b9..82dd6dbf6 100644
--- a/tests/util/test_datetime_helpers.py
+++ b/tests/util/test_datetime_helpers.py
@@ -1,4 +1,4 @@
-from datetime import datetime, timedelta, timezone
+from datetime import UTC, datetime, timedelta
 
 import pytest
 import time_machine
@@ -21,14 +21,14 @@ from freqtrade.util.datetime_helpers import dt_humanize_delta
 
 def test_dt_now():
     with time_machine.travel("2021-09-01 05:01:00 +00:00", tick=False) as t:
-        now = datetime.now(timezone.utc)
+        now = datetime.now(UTC)
         assert dt_now() == now
         assert dt_ts() == int(now.timestamp() * 1000)
         assert dt_ts(now) == int(now.timestamp() * 1000)
 
         t.shift(timedelta(hours=5))
         assert dt_now() >= now
-        assert dt_now() == datetime.now(timezone.utc)
+        assert dt_now() == datetime.now(UTC)
         assert dt_ts() == int(dt_now().timestamp() * 1000)
         # Test with different time than now
         assert dt_ts(now) == int(now.timestamp() * 1000)
@@ -37,42 +37,38 @@ def test_dt_now():
 def test_dt_ts_def():
     assert dt_ts_def(None) == 0
     assert dt_ts_def(None, 123) == 123
-    assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
-    assert dt_ts_def(datetime(2023, 5, 5, tzinfo=timezone.utc), 123) == 1683244800000
+    assert dt_ts_def(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
+    assert dt_ts_def(datetime(2023, 5, 5, tzinfo=UTC), 123) == 1683244800000
 
 
 def test_dt_ts_none():
     assert dt_ts_none(None) is None
     assert dt_ts_none(None) is None
-    assert dt_ts_none(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
-    assert dt_ts_none(datetime(2023, 5, 5, tzinfo=timezone.utc)) == 1683244800000
+    assert dt_ts_none(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
+    assert dt_ts_none(datetime(2023, 5, 5, tzinfo=UTC)) == 1683244800000
 
 
 def test_dt_utc():
-    assert dt_utc(2023, 5, 5) == datetime(2023, 5, 5, tzinfo=timezone.utc)
-    assert dt_utc(2023, 5, 5, 0, 0, 0, 555500) == datetime(
-        2023, 5, 5, 0, 0, 0, 555500, tzinfo=timezone.utc
-    )
+    assert dt_utc(2023, 5, 5) == datetime(2023, 5, 5, tzinfo=UTC)
+    assert dt_utc(2023, 5, 5, 0, 0, 0, 555500) == datetime(2023, 5, 5, 0, 0, 0, 555500, tzinfo=UTC)
 
 
 @pytest.mark.parametrize("as_ms", [True, False])
 def test_dt_from_ts(as_ms):
     multi = 1000 if as_ms else 1
-    assert dt_from_ts(1683244800.0 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
-    assert dt_from_ts(1683244800.5555 * multi) == datetime(
-        2023, 5, 5, 0, 0, 0, 555500, tzinfo=timezone.utc
-    )
+    assert dt_from_ts(1683244800.0 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
+    assert dt_from_ts(1683244800.5555 * multi) == datetime(2023, 5, 5, 0, 0, 0, 555500, tzinfo=UTC)
     # As int
-    assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
+    assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
     # As milliseconds
-    assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=timezone.utc)
-    assert dt_from_ts(1683242400 * multi) == datetime(2023, 5, 4, 23, 20, tzinfo=timezone.utc)
+    assert dt_from_ts(1683244800 * multi) == datetime(2023, 5, 5, tzinfo=UTC)
+    assert dt_from_ts(1683242400 * multi) == datetime(2023, 5, 4, 23, 20, tzinfo=UTC)
 
 
 def test_dt_floor_day():
-    now = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=timezone.utc)
+    now = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=UTC)
 
-    assert dt_floor_day(now) == datetime(2023, 9, 1, tzinfo=timezone.utc)
+    assert dt_floor_day(now) == datetime(2023, 9, 1, tzinfo=UTC)
 
 
 def test_shorten_date() -> None:
@@ -95,21 +91,21 @@ def test_format_ms_time() -> None:
     date_in_epoch_ms = 1523383321132
     date = format_ms_time(date_in_epoch_ms)
     assert isinstance(date, str)
-    res = datetime(2018, 4, 10, 18, 2, 1, tzinfo=timezone.utc)
+    res = datetime(2018, 4, 10, 18, 2, 1, tzinfo=UTC)
     assert date == res.strftime("%Y-%m-%dT%H:%M:%S")
     assert date == "2018-04-10T18:02:01"
-    res = datetime(2017, 12, 13, 8, 2, 1, tzinfo=timezone.utc)
+    res = datetime(2017, 12, 13, 8, 2, 1, tzinfo=UTC)
     # Date 2017-12-13 08:02:01
     date_in_epoch_ms = 1513152121000
     assert format_ms_time(date_in_epoch_ms) == res.strftime("%Y-%m-%dT%H:%M:%S")
 
 
 def test_format_date() -> None:
-    date = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=timezone.utc)
+    date = datetime(2023, 9, 1, 5, 2, 3, 455555, tzinfo=UTC)
     assert format_date(date) == "2023-09-01 05:02:03"
     assert format_date(None) == ""
 
-    date = datetime(2021, 9, 30, 22, 59, 3, 455555, tzinfo=timezone.utc)
+    date = datetime(2021, 9, 30, 22, 59, 3, 455555, tzinfo=UTC)
     assert format_date(date) == "2021-09-30 22:59:03"
     assert format_date(None) == ""
 
@@ -119,10 +115,10 @@ def test_format_ms_time_detailed() -> None:
     date_in_epoch_ms = 1523383321132
     date = format_ms_time_det(date_in_epoch_ms)
     assert isinstance(date, str)
-    res = datetime(2018, 4, 10, 18, 2, 1, 132145, tzinfo=timezone.utc)
+    res = datetime(2018, 4, 10, 18, 2, 1, 132145, tzinfo=UTC)
     assert date == res.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
     assert date == "2018-04-10T18:02:01.132"
-    res = datetime(2017, 12, 13, 8, 2, 1, 512321, tzinfo=timezone.utc)
+    res = datetime(2017, 12, 13, 8, 2, 1, 512321, tzinfo=UTC)
     # Date 2017-12-13 08:02:01
     date_in_epoch_ms = 1513152121512
     assert format_ms_time_det(date_in_epoch_ms) == res.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3]
diff --git a/tests/util/test_formatters.py b/tests/util/test_formatters.py
index ba77eb9a6..8872137a0 100644
--- a/tests/util/test_formatters.py
+++ b/tests/util/test_formatters.py
@@ -1,5 +1,6 @@
-from freqtrade.util import decimals_per_coin, fmt_coin, round_value
-from freqtrade.util.formatters import fmt_coin2
+from datetime import timedelta
+
+from freqtrade.util import decimals_per_coin, fmt_coin, fmt_coin2, format_duration, round_value
 
 
 def test_decimals_per_coin():
@@ -45,3 +46,12 @@ def test_round_value():
     assert round_value(0.1274512123, 5) == "0.12745"
     assert round_value(222.2, 3, True) == "222.200"
     assert round_value(222.2, 0, True) == "222"
+
+
+def test_format_duration():
+    assert format_duration(timedelta(minutes=5)) == "0d 00:05"
+    assert format_duration(timedelta(minutes=75)) == "0d 01:15"
+    assert format_duration(timedelta(minutes=1440)) == "1d 00:00"
+    assert format_duration(timedelta(minutes=1445)) == "1d 00:05"
+    assert format_duration(timedelta(minutes=11445)) == "7d 22:45"
+    assert format_duration(timedelta(minutes=101445)) == "70d 10:45"
diff --git a/tests/util/test_wallet_util.py b/tests/util/test_wallet_util.py
new file mode 100644
index 000000000..75e489fce
--- /dev/null
+++ b/tests/util/test_wallet_util.py
@@ -0,0 +1,19 @@
+import pytest
+
+from freqtrade.util import get_dry_run_wallet
+
+
+@pytest.mark.parametrize(
+    "wallet,stake_currency,expected",
+    [
+        (1000, "USDT", 1000),
+        ({"USDT": 1000, "USDC": 500}, "USDT", 1000),
+        ({"USDT": 1000, "USDC": 500}, "USDC", 500),
+        ({"USDT": 1000, "USDC": 500}, "NOCURR", 0.0),
+    ],
+)
+def test_get_dry_run_wallet(default_conf_usdt, wallet, stake_currency, expected):
+    # As int
+    default_conf_usdt["dry_run_wallet"] = wallet
+    default_conf_usdt["stake_currency"] = stake_currency
+    assert get_dry_run_wallet(default_conf_usdt) == expected