<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HMwork</title>
    <description>The latest articles on DEV Community by HMwork (@hmwork_2c698b7158d3).</description>
    <link>https://dev.to/hmwork_2c698b7158d3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4102105%2F42afa6af-4e7c-4604-8f43-cc5d89f31c77.png</url>
      <title>DEV Community: HMwork</title>
      <link>https://dev.to/hmwork_2c698b7158d3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hmwork_2c698b7158d3"/>
    <language>en</language>
    <item>
      <title>One Concept, Four Field Names, Three Numbers: The Funding-Rate Ceiling on the Same BTC Perp</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:46:34 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/one-concept-four-field-names-three-numbers-the-funding-rate-ceiling-on-the-same-btc-perp-1293</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/one-concept-four-field-names-three-numbers-the-funding-rate-ceiling-on-the-same-btc-perp-1293</guid>
      <description>&lt;h1&gt;
  
  
  One Concept, Four Field Names, Three Numbers: The Funding-Rate Ceiling on the Same BTC Perp
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this article was researched and drafted with AI assistance, using public exchange APIs and documentation, and reviewed for accuracy against the sources cited below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not financial advice.&lt;/strong&gt; All numbers below are parameter values read from public exchange APIs at a specific moment in time. Exchanges can and do change these values without notice. Always verify against the official sources listed at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The number everyone quotes doesn't exist
&lt;/h2&gt;

&lt;p&gt;Ask five traders what the maximum funding rate on a Bitcoin perpetual is and you'll get a confident shrug. There is no industry-wide ceiling. Funding-rate caps are per-exchange, per-contract parameters — and even for the single most liquid contract in crypto, the BTC/USDT perpetual, the four venues examined here publish &lt;strong&gt;three different answers&lt;/strong&gt; under &lt;strong&gt;four different field names&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I pulled all of them live, without an API key, from official public endpoints on &lt;strong&gt;October 4, 2026 at 13:37 UTC&lt;/strong&gt;. Here is what the same concept looks like at four exchanges.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four readings, side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Venue&lt;/th&gt;
&lt;th&gt;Field name(s)&lt;/th&gt;
&lt;th&gt;BTC perp cap&lt;/th&gt;
&lt;th&gt;ETH perp cap&lt;/th&gt;
&lt;th&gt;Settlement interval&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gate&lt;/td&gt;
&lt;td&gt;&lt;code&gt;funding_rate_limit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;±0.30%&lt;/td&gt;
&lt;td&gt;±0.30%&lt;/td&gt;
&lt;td&gt;28800 s (8 h)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KuCoin&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;fundingRateCap&lt;/code&gt; / &lt;code&gt;fundingRateFloor&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;±0.30%&lt;/td&gt;
&lt;td&gt;±0.375%&lt;/td&gt;
&lt;td&gt;28800000 ms (8 h)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bybit&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;upperFundingRate&lt;/code&gt; / &lt;code&gt;lowerFundingRate&lt;/code&gt; (specs) + &lt;code&gt;fundingCap&lt;/code&gt; (tickers)&lt;/td&gt;
&lt;td&gt;±0.333%&lt;/td&gt;
&lt;td&gt;±0.333%&lt;/td&gt;
&lt;td&gt;480 min (8 h)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OKX&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;maxFundingRate&lt;/code&gt; / &lt;code&gt;minFundingRate&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;±0.375%&lt;/td&gt;
&lt;td&gt;±0.75%&lt;/td&gt;
&lt;td&gt;8 h&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three numerical answers for the identical underlying exposure: 0.30%, 0.333%, and 0.375%. The spread between the lowest and highest cap is 25% — small in absolute terms, but it defines how far an overheated or capitulating market can push the cost of holding a position before the ceiling bites.&lt;/p&gt;

&lt;p&gt;Live funding values at the same moment, for context (these change every interval and are not the point of this article): Gate BTC perp −0.0017%/8h, Bybit +0.006547%/8h, OKX +0.0027116%/8h, KuCoin −0.0002%/8h.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four names for one concept
&lt;/h2&gt;

&lt;p&gt;If you are writing any tooling that compares funding terms across venues, the field names alone will humble you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gate&lt;/strong&gt; exposes &lt;code&gt;funding_rate_limit&lt;/code&gt; in its futures contracts model. The field's meaning is confirmed in Gate's own public API documentation changelog, which added the field "to indicate funding rate cap value."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bybit&lt;/strong&gt; publishes the same parameter twice under two names: &lt;code&gt;upperFundingRate&lt;/code&gt;/&lt;code&gt;lowerFundingRate&lt;/code&gt; in the instruments-specification endpoint, and &lt;code&gt;fundingCap&lt;/code&gt; in the tickers endpoint. On October 4 both endpoints returned 0.00333 for BTCUSDT — a useful internal cross-check you can reproduce yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OKX&lt;/strong&gt; calls it &lt;code&gt;maxFundingRate&lt;/code&gt;/&lt;code&gt;minFundingRate&lt;/code&gt; on its funding-rate endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KuCoin&lt;/strong&gt; uses &lt;code&gt;fundingRateCap&lt;/code&gt;/&lt;code&gt;fundingRateFloor&lt;/code&gt; — and note the data types differ too: KuCoin returns numbers, while Gate, Bybit, and OKX return strings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One concept, four spellings, two data types. There is no standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ETH side is where the philosophies split
&lt;/h2&gt;

&lt;p&gt;The BTC caps differ, but the more interesting divergence is on the second-most liquid contract. At the same moment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OKX&lt;/strong&gt; sets ETH's cap at ±0.75% — exactly double its own BTC cap of ±0.375%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KuCoin&lt;/strong&gt; sets ETH at ±0.375% — exactly double its own BTC cap of ±0.30%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gate&lt;/strong&gt; (±0.30%) and &lt;strong&gt;Bybit&lt;/strong&gt; (±0.333%) give ETH the same ceiling as BTC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So two venues deliberately price volatility headroom by asset, and two treat majors as one class. Neither approach is right or wrong — but it means "the cap on this exchange" is not a single number you can memorize per venue. It is a matrix: venue × contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the ceiling matters even if you never see it
&lt;/h2&gt;

&lt;p&gt;Most funding intervals settle near zero — a few basis points every eight hours. The caps are invisible in calm markets. They matter in the tails: when a crowded position unwinds, funding can pin at the cap for consecutive intervals, and that pinned value &lt;em&gt;is&lt;/em&gt; your holding cost, compounding every settlement period. A position on the venue with a 0.30% cap faces a structurally different worst-case carrying cost than the same position where the cap is 0.375% — and, as previous measurements in this series have shown, some exchanges settle smaller contracts hourly or every four hours, where the same cap applied more often multiplies the effect.&lt;/p&gt;

&lt;p&gt;Two caveats that deserve repetition: the caps are parameters exchanges can adjust at will, and the interval length is a separate field you must read before comparing any two caps. "0.333% every 8 hours" and "2.5% every 1 hour" are not comparable numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to verify every number in this article
&lt;/h2&gt;

&lt;p&gt;No login or API key is needed for any of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gate: &lt;code&gt;GET https://api.gateio.ws/api/v4/futures/usdt/contracts/BTC_USDT&lt;/code&gt; (and &lt;code&gt;ETH_USDT&lt;/code&gt;) — read &lt;code&gt;funding_rate_limit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Bybit: &lt;code&gt;GET https://api.bybit.com/v5/market/instruments-info?category=linear&amp;amp;symbol=BTCUSDT&lt;/code&gt; — read &lt;code&gt;upperFundingRate&lt;/code&gt;; cross-check &lt;code&gt;GET https://api.bybit.com/v5/market/tickers?category=linear&amp;amp;symbol=BTCUSDT&lt;/code&gt; — read &lt;code&gt;fundingCap&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;OKX: &lt;code&gt;GET https://www.okx.com/api/v5/public/funding-rate?instId=BTC-USDT-SWAP&lt;/code&gt; (and &lt;code&gt;ETH-USDT-SWAP&lt;/code&gt;) — read &lt;code&gt;maxFundingRate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;KuCoin: &lt;code&gt;GET https://api-futures.kucoin.com/api/v1/contracts/XBTUSDTM&lt;/code&gt; (and &lt;code&gt;ETHUSDTM&lt;/code&gt;) — read &lt;code&gt;fundingRateCap&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Snapshot taken 2026-10-04 13:37 UTC. If you re-run these calls next week and the numbers moved, that is the exchange exercising the very parameter this article describes — not an error in the measurements.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Not financial advice.&lt;/strong&gt; This article describes publicly published contract parameters. It makes no recommendation to trade, hold, or move positions on any venue named. Perpetual futures involve substantial risk of loss. Funding rates, caps, and settlement intervals change without notice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#ad — affiliate disclosure:&lt;/strong&gt; no sponsored or tracked links appear in this article; no exchange named here has paid for inclusion. If this publication adds such links in the future, they will be marked the same way, before the link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify official sources:&lt;/strong&gt; always confirm current terms directly on each exchange's official API documentation and fee pages before relying on any number — exchanges revise these parameters at their discretion.&lt;/p&gt;

</description>
      <category>api</category>
      <category>bitcoin</category>
      <category>crypto</category>
    </item>
    <item>
      <title>Your Dollar Is Not a Dollar: USDT Trades at a Measurable Discount Right Now</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Fri, 25 Sep 2026 02:13:55 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/your-dollar-is-not-a-dollar-usdt-trades-at-a-measurable-discount-right-now-384g</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/your-dollar-is-not-a-dollar-usdt-trades-at-a-measurable-discount-right-now-384g</guid>
      <description>&lt;h1&gt;
  
  
  Your "Dollar" Is Not a Dollar: USDT Trades at a Measurable Discount Right Now
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was researched and drafted with AI assistance, then checked against primary sources listed at the end. Nothing here is investment advice — this is an observation of publicly available numbers. This publication may carry affiliate links in the future; at the time of writing, this article contains no affiliate or sponsored links (#ad disclosure: none present).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you hold stablecoins, you probably treat one USDT as one dollar. The market disagrees — not dramatically, not dangerously, but consistently. Right now, at the moment of writing, three independent price sources all say the same thing: USDT trades a few basis points under the face value of a US dollar, and the exact discount depends on where you ask.&lt;/p&gt;

&lt;p&gt;This is not a prediction about depegs, solvency, or risk. It is simply a measurement, taken live from public endpoints, of a friction that sits below most people's radar — and next to your fee schedule, it is a real cost line.&lt;/p&gt;

&lt;h2&gt;
  
  
  The measurement: three sources, one minute apart
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;2026-09-25 at 02:07–02:08 UTC&lt;/strong&gt;, we queried three independent public sources within one minute of each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Kraken spot market (USDT/USD).&lt;/strong&gt; The official public ticker endpoint returned a bid of &lt;strong&gt;0.99967&lt;/strong&gt; and an ask of &lt;strong&gt;0.99968&lt;/strong&gt;. The midpoint is &lt;strong&gt;0.999675&lt;/strong&gt; — about &lt;strong&gt;3.3 basis points&lt;/strong&gt; below par. The 24-hour range printed on the same response was tight: low 0.99964, high 0.99971.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Coinbase Exchange (USDT-USD).&lt;/strong&gt; The official public ticker endpoint returned bid &lt;strong&gt;0.99971&lt;/strong&gt; / ask &lt;strong&gt;0.99972&lt;/strong&gt;, a midpoint of &lt;strong&gt;0.999715&lt;/strong&gt; — about &lt;strong&gt;2.9 basis points&lt;/strong&gt; below par. The stats endpoint for the same product showed a 24-hour open of 0.99983 and a low of &lt;strong&gt;0.99875&lt;/strong&gt;: at its worst moment of the day, USDT sold at a &lt;strong&gt;12.5 basis point&lt;/strong&gt; discount on this venue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. CoinGecko (aggregated reference price).&lt;/strong&gt; The simple-price endpoint returned Tether at &lt;strong&gt;$0.999725&lt;/strong&gt; (about 2.75 bps under), alongside &lt;strong&gt;USDC at $0.999809&lt;/strong&gt; and &lt;strong&gt;DAI at $0.999957&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We repeated the two exchange queries twice each, two seconds apart; the numbers came back identical, so this is not a one-frame fluke of a single request.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers actually say
&lt;/h2&gt;

&lt;p&gt;Three independent sources — two exchange order books and one aggregator — agree on direction and magnitude: &lt;strong&gt;USDT currently changes hands for roughly 0.9997 US dollars&lt;/strong&gt;. The order books are extremely tight (Kraken's bid-ask spread is one ten-thousandth of a dollar wide), so this is not a liquidity artifact. It is simply where the "dollar" that is USDT clears.&lt;/p&gt;

&lt;p&gt;Two subtleties worth naming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The discount is small but persistent.&lt;/strong&gt; At the moment of writing it is ~3 bps; earlier the same day, Coinbase's own stats show it briefly reaching ~12.5 bps. Stablecoin discounts breathe with market stress and tend to widen exactly when holders want out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The discount is not uniform.&lt;/strong&gt; USDC's aggregated price ($0.999809) and DAI's ($0.999957) show smaller haircuts than USDT's ($0.999725) at the same minute. Different "dollars", slightly different discounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this belongs next to the fee table
&lt;/h2&gt;

&lt;p&gt;Most people compare exchanges by maker/taker fees. But if your balance sheet is denominated in USDT and your life is denominated in USD, then every round trip — sell your USDT to withdraw to a bank, for example — starts from a number below 1.0000. Three basis points sounds trivial until you notice it is the &lt;em&gt;same order of magnitude&lt;/em&gt; as the maker fees on the deepest trading pairs. On the same day, the best-published maker tiers at major venues run in the tens of basis points, so the stablecoin discount is a meaningful fraction of a full trading cost stack — and unlike a fee schedule, it is invisible because no invoice ever shows it.&lt;/p&gt;

&lt;p&gt;For context (measured in our earlier work, same kind of public-endpoint snapshots): a USDC/USDT cross also refuses to trade at exactly par, printing about 2–3 bps the other way. In other words, &lt;em&gt;none&lt;/em&gt; of the "dollars" in crypto are interchangeable at exactly 1:1 with each other, or with the real one. They are all just very well-behaved, very slightly discounted claims.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we deliberately do not claim
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No depeg prediction.&lt;/strong&gt; A 2–5 bps discount is normal, observable behavior; nothing here says anything about future stability of any token.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No ranking of venues.&lt;/strong&gt; Kraken printing 3.3 bps and Coinbase 2.9 bps is within the noise of different order books at different seconds; it is not evidence that one venue is "cheaper".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No snapshot longevity.&lt;/strong&gt; These numbers were true at 02:08 UTC on 2026-09-25. Stablecoin premia move constantly. Re-measure before acting on any of this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This is not financial advice.&lt;/strong&gt; It is a reading of public data, offered so that the number 1.0000 stops being an assumption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;Every number above came from an unauthenticated public API — you can reproduce all of it in a terminal or a browser in under a minute: Kraken's &lt;code&gt;Ticker&lt;/code&gt; endpoint for the pair &lt;code&gt;USDTZUSD&lt;/code&gt;, Coinbase Exchange's &lt;code&gt;/products/USDT-USD/ticker&lt;/code&gt; and &lt;code&gt;/products/USDT-USD/stats&lt;/code&gt;, and CoinGecko's &lt;code&gt;simple/price&lt;/code&gt; endpoint for &lt;code&gt;tether,usd-coin,dai&lt;/code&gt;. Take the midpoint of each bid/ask, subtract from 1.0000, multiply by 10,000, and you have the discount in basis points. If your numbers differ from ours, that is the point: the discount is a live number, not a constant.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Verify official sources.&lt;/strong&gt; All figures in this article are quoted from the primary sources themselves, timestamped 2026-09-25 02:07–02:08 UTC, and readers are encouraged to re-fetch them directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kraken public ticker API: &lt;a href="https://api.kraken.com/0/public/Ticker?pair=USDTZUSD" rel="noopener noreferrer"&gt;https://api.kraken.com/0/public/Ticker?pair=USDTZUSD&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Coinbase Exchange public ticker: &lt;a href="https://api.exchange.coinbase.com/products/USDT-USD/ticker" rel="noopener noreferrer"&gt;https://api.exchange.coinbase.com/products/USDT-USD/ticker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Coinbase Exchange public stats: &lt;a href="https://api.exchange.coinbase.com/products/USDT-USD/stats" rel="noopener noreferrer"&gt;https://api.exchange.coinbase.com/products/USDT-USD/stats&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CoinGecko public price endpoint: &lt;a href="https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai&amp;amp;vs_currencies=usd" rel="noopener noreferrer"&gt;https://api.coingecko.com/api/v3/simple/price?ids=tether,usd-coin,dai&amp;amp;vs_currencies=usd&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;AI-assisted content. Market data snapshots are momentary and change constantly. Nothing in this article is investment advice, a recommendation, or a solicitation to trade any asset. No affiliate links are present in this article.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>stablecoin</category>
      <category>trading</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Same Bitcoin Answers to Three Tickers — and One Exchange Uses Two of Them Under Its Own Roof</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Tue, 22 Sep 2026 02:26:18 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/the-same-bitcoin-answers-to-three-tickers-and-one-exchange-uses-two-of-them-under-its-own-roof-3pn6</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/the-same-bitcoin-answers-to-three-tickers-and-one-exchange-uses-two-of-them-under-its-own-roof-3pn6</guid>
      <description>&lt;p&gt;&lt;em&gt;By FeeAtlas — neutral exchange-plumbing research. No sponsored placements in this article.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ask three exchanges for the price of Bitcoin and you will get three numbers within a few basis points of each other. Ask their APIs for Bitcoin itself, and you will get three different words back — and one of those exchanges uses two different words depending on which product you touch. This is not a trivia question. It is the first wall every cross-exchange script hits, and it is documented in none of the fee tables.&lt;/p&gt;

&lt;p&gt;On 2026-09-22 we queried the public, no-key endpoints of Kraken, KuCoin and Coinbase Exchange in the same session. Everything below is a literal field value or a literal error string from those endpoints, so you can repeat every check yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kraken: the asset is XXBT, the label is XBT
&lt;/h2&gt;

&lt;p&gt;Kraken's asset registry returns the canonical code &lt;code&gt;XXBT&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /0/public/Assets?asset=XXBT&lt;/code&gt; returns a record whose &lt;code&gt;altname&lt;/code&gt; field is &lt;code&gt;XBT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /0/public/AssetPairs?pair=XXBTZUSD&lt;/code&gt; returns a pair whose &lt;code&gt;base&lt;/code&gt; is &lt;code&gt;XXBT&lt;/code&gt;, whose &lt;code&gt;altname&lt;/code&gt; is &lt;code&gt;XBTUSD&lt;/code&gt;, and whose WebSocket name (&lt;code&gt;wsname&lt;/code&gt;) is &lt;code&gt;XBT/USD&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So under one roof there are already two spellings: &lt;code&gt;XXBT&lt;/code&gt; in the REST asset/pair identifiers, &lt;code&gt;XBT&lt;/code&gt; in display names and the WebSocket stream names. A REST script that hard-codes &lt;code&gt;BTC&lt;/code&gt; gets nothing; a WebSocket script that hard-codes &lt;code&gt;XXBT/USD&lt;/code&gt; gets rejected. Both spellings are "correct" — in different halves of the same API.&lt;/p&gt;

&lt;h2&gt;
  
  
  KuCoin: spot says BTC, futures say XBT — and each half rejects the other's spelling
&lt;/h2&gt;

&lt;p&gt;KuCoin is the most instructive case, because the split runs through the middle of one company's product line.&lt;/p&gt;

&lt;p&gt;Spot side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /api/v1/currencies/BTC&lt;/code&gt; returns a normal record (&lt;code&gt;precision&lt;/code&gt; 8, withdrawal fields present).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/v1/currencies/XBT&lt;/code&gt; returns error code &lt;code&gt;900003&lt;/code&gt; with the literal message: &lt;code&gt;"XBT currency does not exist."&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Derivatives side (a different host, &lt;code&gt;api-futures.kucoin.com&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /api/v1/contracts/XBTUSDTM&lt;/code&gt; returns the perpetual with &lt;code&gt;symbol: "XBTUSDTM"&lt;/code&gt; and &lt;code&gt;baseCurrency: "XBT"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/v1/contracts/BTCUSDTM&lt;/code&gt; returns error code &lt;code&gt;404000&lt;/code&gt; with the literal message: &lt;code&gt;"The contract information you requested does not exist."&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read those two negative responses together with the two positive ones and the picture is unambiguous: the same company calls spot Bitcoin &lt;code&gt;BTC&lt;/code&gt; and futures Bitcoin &lt;code&gt;XBT&lt;/code&gt;, and each service will tell you, in as many words, that the other service's spelling does not exist. There is no alias translation layer between them. A portfolio tool that resolves "BTC" once and reuses the result across spot and perpetuals must special-case this venue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coinbase Exchange: only BTC-USD has ever lived here
&lt;/h2&gt;

&lt;p&gt;Coinbase Exchange keeps it simple, in its own way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /products/BTC-USD&lt;/code&gt; returns an online product with &lt;code&gt;base_currency: "BTC"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /products/XBT-USD&lt;/code&gt; returns HTTP 404 with the body &lt;code&gt;{"message":"NotFound"}&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No XBT spelling exists on this venue at all. The full product list (public, no key) contains no XBT-prefixed pairs — the ticker namespace is consistently &lt;code&gt;BTC&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters beyond trivia
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Cross-venue mapping is not optional.&lt;/strong&gt; Three independent venues, three regimes: &lt;code&gt;XXBT&lt;/code&gt;/&lt;code&gt;XBT&lt;/code&gt; (Kraken, REST vs WebSocket), &lt;code&gt;BTC&lt;/code&gt; on spot but &lt;code&gt;XBT&lt;/code&gt; on perpetuals (KuCoin, spot vs derivatives), and plain &lt;code&gt;BTC&lt;/code&gt; everywhere (Coinbase). A symbol-resolution table is table stakes before any comparison logic — fee, spread, or depth — can run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The split can happen inside one roof.&lt;/strong&gt; The KuCoin case is the genuinely surprising finding: you cannot even cache "what does this venue call Bitcoin" at the venue level. The correct answer is per-product-line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Error handling tells you the truth.&lt;/strong&gt; Both KuCoin negatives come back as explicit, greppable error strings ("XBT currency does not exist." / "The contract information you requested does not exist."). If you are building the mapping table from scratch, probing candidate spellings and reading the error messages is a legitimate discovery method — it is exactly what we did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. This is not a one-token problem.&lt;/strong&gt; If Bitcoin — the most liquid, most-listed asset in the industry — cannot settle on one symbol, assume nothing about the long tail. Stablecoins, wrapped tokens and tokenized equities inherit the same naming autonomy, often worse.&lt;/p&gt;

&lt;p&gt;What we deliberately did &lt;strong&gt;not&lt;/strong&gt; do: explain &lt;em&gt;why&lt;/em&gt; the three-letter code XBT exists at all. That story gets retold often, but we could not verify it against two reachable primary sources today, and FeeAtlas does not publish what it cannot cross-check. The observable facts — which endpoints accept which spelling, and what the rejection messages say — stand on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method and reproducibility
&lt;/h2&gt;

&lt;p&gt;All values above were captured on 2026-09-22 (around 02:2x UTC) from the public, authentication-free endpoints of the three venues, with repeat fetches confirming identical responses. Ticker conventions can change without notice; re-run the calls before building anything on them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-assisted research and drafting; human-owned channel reviewed the output.&lt;/li&gt;
&lt;li&gt;This article contains &lt;strong&gt;no affiliate links&lt;/strong&gt; — there are currently no sponsored placements or referral arrangements attached to it. Any future sponsored content will be labeled with #ad.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not financial advice.&lt;/strong&gt; This is a technical observation about public API interfaces, nothing more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Verify with official sources
&lt;/h2&gt;

&lt;p&gt;Do not take our word for any of it — every claim is one unauthenticated request away:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kraken public API: &lt;code&gt;api.kraken.com/0/public/Assets&lt;/code&gt; and &lt;code&gt;/0/public/AssetPairs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;KuCoin spot API: &lt;code&gt;api.kucoin.com/api/v1/currencies/{currency}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;KuCoin futures API: &lt;code&gt;api-futures.kucoin.com/api/v1/contracts/{symbol}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Coinbase Exchange API: &lt;code&gt;api.exchange.coinbase.com/products/{product-id}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The index is public; the recipes are yours to check.&lt;/p&gt;

</description>
      <category>api</category>
      <category>crypto</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>One Page, Two Pricing Philosophies: 0.25% Flat on Perps, Tiered 0.40%/0.80% on Spot</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Fri, 18 Sep 2026 02:22:48 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/one-page-two-pricing-philosophies-025-flat-on-perps-tiered-040080-on-spot-26d7</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/one-page-two-pricing-philosophies-025-flat-on-perps-tiered-040080-on-spot-26d7</guid>
      <description>&lt;h1&gt;
  
  
  One Page, Two Pricing Philosophies: Kraken Charges 0.25% Flat on Perps but Tiered 0.40%/0.80% on Spot
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;A neutral fee-research note — no sponsored content, no position held.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; This article was researched and drafted with AI assistance under human editorial review. All quoted figures were fetched directly from the sources cited and re-checked on the publication date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure (#ad / affiliate):&lt;/strong&gt; This article currently contains no affiliate or sponsored links. If that ever changes, a visible #ad / affiliate disclosure will be placed before any such link.&lt;/p&gt;




&lt;p&gt;Most people read an exchange fee page looking for one number. Kraken's fee page is interesting precisely because it refuses to give you one: on the same URL, at the same time, the same company publishes &lt;strong&gt;two completely different pricing philosophies&lt;/strong&gt; — a flat fee on one product and a two-axis tiered ladder on another. Both are quoted verbatim below, and you can verify every figure yourself in about two minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The flat side: "simple" Perps cost 0.25% per side
&lt;/h2&gt;

&lt;p&gt;Kraken's fee schedule page (kraken.com/features/fee-schedule, fetched 2026-09-18) describes its simple perpetuals product in two sentences:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A 0.25% fee is applied to the notional value of the trade to open the position. A 0.25% fee is applied to the closed notional value of the trade to close the position."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice what that structure means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Round trip = 0.50% of notional&lt;/strong&gt;, paid whether you opened as a maker or a taker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No maker discount.&lt;/strong&gt; Resting liquidity earns nothing extra here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No volume discount.&lt;/strong&gt; The rate does not step down as you trade more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a cross-check on stability, the same sentences appear word-for-word in an Internet Archive snapshot of the same page from 2026-08-20 (snapshot id 20260820055608) — so this is not a one-day promotion, it is a standing product design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tiered side: the order-book ladder
&lt;/h2&gt;

&lt;p&gt;Scroll a little further on the same page and you are in a different world. Kraken's Pro / order-book pricing is a classic two-dimensional ladder: maker vs. taker rates, banded by 30-day trading volume (and, in the newer presentation, platform assets). The page currently prints &lt;strong&gt;two tier tables side by side&lt;/strong&gt; — a legacy table and the "Cross-platform fee tiers" table that the page announces was "recently introduced". Both begin like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Spot 30-day volume&lt;/th&gt;
&lt;th&gt;Legacy Maker / Taker&lt;/th&gt;
&lt;th&gt;Cross-platform Maker / Taker&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tier 1&lt;/td&gt;
&lt;td&gt;$0+&lt;/td&gt;
&lt;td&gt;0.40% / 0.80%&lt;/td&gt;
&lt;td&gt;0.38% / 0.80%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tier 2&lt;/td&gt;
&lt;td&gt;$2.5K+&lt;/td&gt;
&lt;td&gt;0.30% / 0.60%&lt;/td&gt;
&lt;td&gt;0.28% / 0.60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tier 3&lt;/td&gt;
&lt;td&gt;$10K+&lt;/td&gt;
&lt;td&gt;0.22% / 0.38%&lt;/td&gt;
&lt;td&gt;0.20% / 0.38%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(Both tables, including the small maker-rate difference at Tier 1-2 between them, are visible in the live page and in the 2026-08-20 archive snapshot. The page itself does not state which of its two tables governs which checkout flow, so this article simply reports what is printed and does not pick a winner.)&lt;/p&gt;

&lt;p&gt;The ladder keeps descending: by the higher tiers the maker rate reaches 0.0x% territory while taker stays materially above it — maker/taker is treated as two independent levers, and volume is rewarded on both.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the same page admits about "simple"
&lt;/h2&gt;

&lt;p&gt;Put the two halves next to each other and the marketing framing of a flat 0.25% "simple perps" fee starts to look like a trade-off rather than a discount:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A high-volume maker on the order-book side pays &lt;strong&gt;0.22% or less&lt;/strong&gt; from just $10K of monthly volume (Tier 3) — already cheaper than the flat 0.25%, and the ladder keeps going down while the flat fee never moves.&lt;/li&gt;
&lt;li&gt;At Tier 1, the flat 0.25% is actually &lt;strong&gt;cheaper than the 0.80% taker rate&lt;/strong&gt; on spot's first tier. For an occasional taker, the "simple" product is the cheaper door; for an occasional maker it is roughly comparable; for anyone who grows, it becomes the more expensive one by design.&lt;/li&gt;
&lt;li&gt;The real cost of the simple product is not the headline number — it is the &lt;strong&gt;forfeited option&lt;/strong&gt; to earn maker pricing and to graduate down a ladder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this makes one product "better." A flat per-side fee is predictable and easy to reason about, which has genuine value for someone starting out. The point of reading both halves of the page is simply to know which knob you gave up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest footnote
&lt;/h2&gt;

&lt;p&gt;For completeness: Kraken's public asset-pairs API has historically exposed a separate fee-ladder field whose numbers did not match either table on the fee page, and this observer has previously seen the page and the API disagree. This article deliberately relies &lt;strong&gt;only on the fee page text&lt;/strong&gt; (live fetch plus an archive snapshot from a different date), and flags the API/page mismatch as an unresolved transparency wrinkle rather than using any of those API numbers as a comparison. Treat every rate on any exchange as "as published, subject to change" — pages get revised without notice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not financial advice
&lt;/h2&gt;

&lt;p&gt;This article is fee-schedule journalism for developers and cost-aware users. It is &lt;strong&gt;not financial advice, not investment advice, and not a recommendation&lt;/strong&gt; to trade perpetuals, use any named exchange, or adopt any order strategy. Perpetual contracts involve substantial risk, including loss of more than your deposit. Fee tiers, product availability ("currently available in certain geos"), and rules change at the exchange's discretion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify with official sources
&lt;/h2&gt;

&lt;p&gt;Do not take this article's word for anything. Before acting on any number here, check the primary sources directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kraken fee schedule page: &lt;code&gt;https://www.kraken.com/features/fee-schedule&lt;/code&gt; (the perps paragraph and both tier tables)&lt;/li&gt;
&lt;li&gt;Internet Archive snapshot 20260820055608 of the same page (independent earlier time point)&lt;/li&gt;
&lt;li&gt;Kraken's own support articles, linked from the fee page itself, for tier-eligibility details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data snapshot: live page fetched 2026-09-18; all quotations re-checked on that date.&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>beginners</category>
      <category>trading</category>
      <category>data</category>
    </item>
    <item>
      <title>Four Exchanges, Three Timestamp Units: Seconds, Milliseconds, Nanoseconds — and One Gives You Two at Once</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Tue, 15 Sep 2026 02:17:53 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/four-exchanges-three-timestamp-units-seconds-milliseconds-nanoseconds-and-one-gives-you-two-14jh</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/four-exchanges-three-timestamp-units-seconds-milliseconds-nanoseconds-and-one-gives-you-two-14jh</guid>
      <description>&lt;h1&gt;
  
  
  Four Exchanges, Three Timestamp Units: Seconds, Milliseconds, Nanoseconds — and One Gives You Two at Once
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this article was researched and drafted with AI assistance, then checked against primary sources listed at the end. All figures below were pulled live from official public API endpoints on 2026-09-15 between 02:09:16 and 02:09:22 UTC.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you have ever written code that talks to more than one crypto exchange, you have probably hit this bug: your signed request is rejected with something like "signature does not match" or "timestamp outside recvWindow", even though your key is correct, your signature algorithm is correct, and your clock is perfectly synchronized. Nine times out of ten, the problem is not your signature. It is your &lt;strong&gt;unit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There is no industry standard for what "a timestamp" means in an exchange API. Four of the largest venues each made a different choice — and one of them gives you three precisions in the same response.&lt;/p&gt;

&lt;h2&gt;
  
  
  The live measurement
&lt;/h2&gt;

&lt;p&gt;On 15 September 2026, within a single six-second window, we called the public time endpoint of four exchanges. No API key required — you can reproduce every number yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Binance&lt;/strong&gt; — &lt;code&gt;GET /api/v3/time&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"serverTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1789438156343&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thirteen digits. That is &lt;strong&gt;milliseconds&lt;/strong&gt; since the Unix epoch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kraken&lt;/strong&gt; — &lt;code&gt;GET /0/public/Time&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"unixtime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1789438157&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"rfc1123"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Tue, 15 Sep 26 02:09:17 +0000"&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ten digits — &lt;strong&gt;seconds&lt;/strong&gt; — plus a human-readable RFC 1123 string as a bonus field. Kraken's own official documentation page for this endpoint uses the same 10-digit format in its example response (&lt;code&gt;"unixtime": 1688669448&lt;/code&gt;), so the seconds convention is confirmed at the documentation layer, not just inferred from digit counts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bybit&lt;/strong&gt; — &lt;code&gt;GET /v5/market/time&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"retCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"retMsg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"OK"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"timeSecond"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1789438157"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"timeNano"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1789438157667206123"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1789438157667&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one is a small masterpiece of confusion: the &lt;em&gt;same response object&lt;/em&gt; carries &lt;strong&gt;seconds&lt;/strong&gt; (&lt;code&gt;timeSecond&lt;/code&gt;), &lt;strong&gt;nanoseconds&lt;/strong&gt; (&lt;code&gt;timeNano&lt;/code&gt;, 19 digits), and — in the outer envelope field &lt;code&gt;time&lt;/code&gt; — &lt;strong&gt;milliseconds&lt;/strong&gt;. Three precisions, one call. Bybit's official docs define each field in plain text: "timeSecond string Bybit server timestamp (sec)" and "timeNano string Bybit server timestamp (nano)".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OKX&lt;/strong&gt; — &lt;code&gt;GET /api/v5/public/time&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"ts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1789438159520"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"msg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thirteen digits again, so &lt;strong&gt;milliseconds&lt;/strong&gt; — but note it arrives as a &lt;em&gt;string&lt;/em&gt;, not a number. OKX is also the most explicit venue of the four: its REST documentation labels timestamp fields individually, thousands of times over, with lines like "Unix timestamp format in milliseconds, e.g. 1597026383085".&lt;/p&gt;

&lt;p&gt;Cross-check: converting all four readings to a common unit, the four servers agreed to within about one second — the spacing of our own requests. The exchange clocks are in sync. &lt;strong&gt;The only disagreement is about units.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this bites you twice
&lt;/h2&gt;

&lt;p&gt;First bite: &lt;strong&gt;parsing the server time.&lt;/strong&gt; If you naively do &lt;code&gt;datetime.fromtimestamp(serverTime)&lt;/code&gt; on Binance's 13-digit value, you get a date roughly 57,000 years in the future. Divide by 1,000? Fine for Binance and OKX, wrong for Kraken, wrong for Bybit's &lt;code&gt;timeNano&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Second bite, and the expensive one: &lt;strong&gt;signing requests.&lt;/strong&gt; The timestamp you sign must match what the server expects, in the unit the server expects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binance's official REST documentation states that SIGNED requests require a &lt;code&gt;timestamp&lt;/code&gt; parameter "in milliseconds or microseconds" — yes, either one, but not seconds — with a default &lt;code&gt;recvWindow&lt;/code&gt; of 5,000 ms.&lt;/li&gt;
&lt;li&gt;OKX requires the &lt;code&gt;OK-ACCESS-TIMESTAMP&lt;/code&gt; header and rejects requests whose timestamp differs from server time by more than 30 seconds.&lt;/li&gt;
&lt;li&gt;Bybit validates your request timestamp against its own clock with a receive-window header in milliseconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The classic failure mode: you fetch Kraken's time (seconds), reuse the same helper for a Bybit signature (milliseconds), and your &lt;code&gt;timestamp&lt;/code&gt; is a factor of 1,000 too small — instantly outside any reasonable receive window. The error message mentions signatures, so you debug signatures for a day. The bug was arithmetic.&lt;/p&gt;

&lt;p&gt;The practical rule this creates for any multi-venue codebase: a per-exchange conversion constant — multiply by 10⁰, 10³, or 10⁹ depending on the venue — and a unit test that asserts the &lt;em&gt;digit count&lt;/em&gt; of every timestamp before it is ever signed. Digit counting is a cheap, brutal sanity check: 10 digits means seconds, 13 means milliseconds, 16 means microseconds, 19 means nanoseconds.&lt;/p&gt;

&lt;p&gt;Two subtleties worth remembering from the live data above: Bybit's triple-precision response means "the Bybit timestamp" is not one thing — pick the field deliberately. And Binance allowing either milliseconds or microseconds for signatures means two valid clients can look completely different in the logs, which matters when you are diffing a broken request against a working one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the docs say (so you don't have to guess)
&lt;/h2&gt;

&lt;p&gt;Every claim above has a documentation layer, not just an observed value: Kraken's Get Server Time page shows a 10-digit example; Bybit's market-time page defines timeSecond and timeNano verbatim; OKX's docs label "Unix timestamp format in milliseconds" on individual fields; Binance's spot API spec states the milliseconds-or-microseconds rule for signed requests. Endpoint paths and quoted field names are listed in the sources below, so any of this can be re-checked in about thirty seconds by calling the endpoints yourself.&lt;/p&gt;

&lt;p&gt;None of the four choices is wrong. There is simply no standard — so your abstraction layer has to carry the unit as a first-class attribute, not assume it. Before you write the converter, read the docs' unit. It is the cheapest bug you will ever prevent.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sources (all official, all fetched 2026-09-15 02:09 UTC unless noted):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Binance public time endpoint: &lt;code&gt;GET https://api.binance.com/api/v3/time&lt;/code&gt; (live value above); Binance official REST spec (&lt;code&gt;binance-spot-api-docs/rest-api.md&lt;/code&gt;) on timestamp/recvWindow rules.&lt;/li&gt;
&lt;li&gt;Kraken public time endpoint: &lt;code&gt;GET https://api.kraken.com/0/public/Time&lt;/code&gt; (live value above); Kraken official "Get Server Time" documentation page (example response in seconds).&lt;/li&gt;
&lt;li&gt;Bybit public time endpoint: &lt;code&gt;GET https://api.bybit.com/v5/market/time&lt;/code&gt; (live value above); Bybit official v5 market-time documentation (timeSecond/timeNano field definitions).&lt;/li&gt;
&lt;li&gt;OKX public time endpoint: &lt;code&gt;GET https://www.okx.com/api/v5/public/time&lt;/code&gt; (live value above); OKX official REST v5 documentation (per-field millisecond labeling).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; This article was produced with AI assistance under a two-source verification process; every number was re-fetched from the official endpoints listed above immediately before publication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not financial advice.&lt;/strong&gt; This is a technical article about API specifications. Nothing here is investment, trading, or legal advice. Exchange endpoints, fields, and rules change without notice — verify against each venue's current official documentation before building anything on top of them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;No affiliate or referral links appear in this article.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify with official sources:&lt;/strong&gt; api.binance.com · api.kraken.com · api.bybit.com · &lt;a href="http://www.okx.com/docs-v5" rel="noopener noreferrer"&gt;www.okx.com/docs-v5&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Same Minute, Five Prices: What Bitcoin Actually Costs Depends on Where You Ask</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Tue, 08 Sep 2026 02:08:33 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/same-minute-five-prices-what-bitcoin-actually-costs-depends-on-where-you-ask-333g</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/same-minute-five-prices-what-bitcoin-actually-costs-depends-on-where-you-ask-333g</guid>
      <description>&lt;h1&gt;
  
  
  Same Minute, Five Prices: What Bitcoin Actually Costs Depends on Where You Ask
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosures for this article are at the bottom — please read them. In short: this article was drafted with AI assistance, it contains no sponsored links, and nothing here is financial advice.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ask five major exchanges what one Bitcoin costs and you will not get one answer. You will get a small pile of answers, and the gap between the highest and the lowest is not a rounding error — it is about the same size as the trading fee you would pay to move between them.&lt;/p&gt;

&lt;p&gt;We queried five exchange venues within the same minute on &lt;strong&gt;2026-09-08, 02:03–02:04 UTC&lt;/strong&gt;, using only their free, no-login public market-data endpoints. Every number below is a raw value returned by the venue's own API, and you can reproduce the whole experiment with &lt;code&gt;curl&lt;/code&gt; in under two minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five prices, as returned
&lt;/h2&gt;

&lt;p&gt;All figures are the USDT-denominated (or USD, where noted) top-of-book quotes captured at 02:03–02:04 UTC on 2026-09-08:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Venue (market)&lt;/th&gt;
&lt;th&gt;Bid&lt;/th&gt;
&lt;th&gt;Ask&lt;/th&gt;
&lt;th&gt;Last trade&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Binance spot — BTCUSDT&lt;/td&gt;
&lt;td&gt;79,398.00*&lt;/td&gt;
&lt;td&gt;79,398.00*&lt;/td&gt;
&lt;td&gt;79,398.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bybit spot — BTCUSDT&lt;/td&gt;
&lt;td&gt;79,397.5&lt;/td&gt;
&lt;td&gt;79,397.6&lt;/td&gt;
&lt;td&gt;79,397.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OKX spot — BTC-USDT&lt;/td&gt;
&lt;td&gt;79,392.4&lt;/td&gt;
&lt;td&gt;79,392.5&lt;/td&gt;
&lt;td&gt;79,392.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kraken spot — XBT/USD&lt;/td&gt;
&lt;td&gt;79,384.10&lt;/td&gt;
&lt;td&gt;79,384.20&lt;/td&gt;
&lt;td&gt;79,384.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coinbase Exchange — BTC-USD&lt;/td&gt;
&lt;td&gt;79,374.00&lt;/td&gt;
&lt;td&gt;79,374.01&lt;/td&gt;
&lt;td&gt;79,374.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;* Binance figures here come from its last-trade price endpoint at that moment; its book top-of-book is shown in the second round below (79,398.83/79,398.84).&lt;/p&gt;

&lt;p&gt;A second, fully independent round of requests about 35 seconds later (02:04:14–02:04:18 UTC) returned the same pattern: Binance 79,398.83/79,398.84, Bybit 79,399.7/79,399.8, OKX 79,393.1/79,393.2, Kraken 79,381.6/79,381.7, Coinbase 79,374/79,374.01. The ranking barely moved; prices drifted by single-digit dollars. This is not a one-frame fluke — it is a standing structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The spread between "the price of Bitcoin" and "a price of Bitcoin"
&lt;/h2&gt;

&lt;p&gt;Within the three USDT venues (Binance, Bybit, OKX), the top-of-book quotes sat within about &lt;strong&gt;7 US dollars&lt;/strong&gt; of each other — roughly 0.9 basis points. Tight, as you would expect from markets that are heavily arbitraged by professional firms.&lt;/p&gt;

&lt;p&gt;The interesting gap is between the &lt;em&gt;currency groups&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;USDT venues&lt;/strong&gt; (Binance, Bybit, OKX) printed around 79,392–79,398.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True-USD venues&lt;/strong&gt; (Kraken, Coinbase) printed around 79,374–79,384.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a gap of roughly &lt;strong&gt;8–24 dollars, or about 1.0–3.0 basis points&lt;/strong&gt; depending on which pair you compare (OKX bid vs Kraken ask: ~8 USD; Binance vs Coinbase: ~24 USD). Some of this gap is not Bitcoin at all: the USDT venues are quoting Bitcoin in Tether, and USDT itself is not worth exactly 1.000 US dollar. When we measured USDT against USD on exchange APIs in late August 2026 it printed around 0.9996–0.9997 — a discount of 3–4 basis points — which would, mechanically, make a USDT-denominated number &lt;em&gt;cheaper&lt;/em&gt; than a USD one, not more expensive. So the residual reflects genuine differences in local supply and demand for Bitcoin in each market, plus the stablecoin premium running the other way that day. Either way, the honest conclusion is the same: &lt;strong&gt;"the" global price of Bitcoin is an aggregation someone else computes. Each exchange trades its own book.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why should you care about 2–3 basis points? Because many exchanges' maker fees on liquid pairs are in the same range. The price gap between venues is a real, tradeable-away-or-not cost that lives on the same order of magnitude as the fee schedule everyone obsesses over — and unlike fees, it moves without warning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same-minute split inside one exchange: spot vs perpetual
&lt;/h2&gt;

&lt;p&gt;We also pulled the BTC USDT &lt;strong&gt;perpetual futures&lt;/strong&gt; last price from the same three venues in the same minute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bybit linear BTCUSDT perp last: 79,362.90 (mark price 79,364.13, index 79,397.40)&lt;/li&gt;
&lt;li&gt;OKX BTC-USDT-SWAP last: 79,362.7&lt;/li&gt;
&lt;li&gt;Binance USDT-margined BTCUSDT futures last: 79,368.00&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So while spot printed ~79,392–79,398, the perpetuals printed ~79,363–79,368 — the derivatives were trading roughly &lt;strong&gt;3–4 basis points below spot&lt;/strong&gt; at that instant. Same asset class, same minute, another visible price split. (Perpetuals trade on their own supply/demand and settle funding against an index; they do not have to equal spot, and on this morning they did not.)&lt;/p&gt;

&lt;p&gt;Three different "prices of Bitcoin" — USDT spot, USD spot, and perp — all correct, all simultaneous.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is not
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This is not an arbitrage opportunity.&lt;/strong&gt; The 10–25 dollar gaps are routinely smaller than withdrawal fees, network fees, trading fees, and the slippage you would take executing across books of this size. The numbers are a snapshot of two moments in time (02:03:41 and 02:04:14 UTC) and everything here moves continuously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This is not a ranking.&lt;/strong&gt; We are not saying one venue is "cheaper" or "better." Prices reflect each market's order flow, currency of quotation, and product type — not quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;These values were true at 02:03–02:04 UTC on 2026-09-08 and are already stale.&lt;/strong&gt; Treat every number here as a dated observation, not a fact about today.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce it yourself
&lt;/h2&gt;

&lt;p&gt;Every number came from a public endpoint that requires no account and no API key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binance: &lt;code&gt;GET /api/v3/ticker/bookTicker?symbol=BTCUSDT&lt;/code&gt; and &lt;code&gt;GET /fapi/v1/ticker/price&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bybit: &lt;code&gt;GET /v5/market/tickers?category=spot&amp;amp;symbol=BTCUSDT&lt;/code&gt; (and &lt;code&gt;category=linear&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;OKX: &lt;code&gt;GET /api/v5/market/ticker?instId=BTC-USDT&lt;/code&gt; (and &lt;code&gt;BTC-USDT-SWAP&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Kraken: &lt;code&gt;GET /0/public/Ticker?pair=XBTUSD&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Coinbase Exchange: &lt;code&gt;GET /products/BTC-USD/ticker&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note the units before you compare anything: three venues quote in USDT, two in actual US dollars, and Kraken's ticker returns USD while its pair code says "ZUSD." Comparing raw numbers across quotation currencies without converting is the single most common way people misread tables like the one above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify with official sources
&lt;/h2&gt;

&lt;p&gt;The data above is a snapshot, not a specification. Before acting on any of it, check the primary sources yourself: each exchange's own public API documentation (Binance spot and futures API docs, Bybit v5 API docs, OKX v5 API docs, Kraken public API docs, Coinbase Exchange API docs) and each exchange's current fee and product pages. Prices, fees, and endpoint behavior change constantly; the only durable takeaway is the method — query the venues directly, in the same breath, and always note what currency you are actually looking at.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Disclosure — AI assistance:&lt;/strong&gt; This article was drafted with AI assistance under human editorial oversight, and the measurements were taken programmatically from public exchange APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure — affiliates:&lt;/strong&gt; No affiliate or sponsored links appear in this article. &lt;em&gt;#ad disclosure: if this article ever carries affiliate links in the future, they will be clearly marked #ad near the links themselves.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not financial advice:&lt;/strong&gt; This article is for educational and informational purposes only. It describes public market data and does not recommend any exchange, asset, or trading strategy, and it makes no prediction about future prices. Cryptocurrency markets are volatile and you can lose money. Nothing here is investment, tax, or legal advice — do your own research and consult a qualified professional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify with official sources:&lt;/strong&gt; All figures were captured from public exchange APIs on 2026-09-08 02:03–02:04 UTC and may already be out of date. Confirm any number against the exchanges' own official API endpoints and documentation before relying on it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Price Ladder Isn't the Same Everywhere: BTC Tick Sizes Differ 10x Across Four Exchanges</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Fri, 04 Sep 2026 02:07:26 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/the-price-ladder-isnt-the-same-everywhere-btc-tick-sizes-differ-10x-across-four-exchanges-34l</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/the-price-ladder-isnt-the-same-everywhere-btc-tick-sizes-differ-10x-across-four-exchanges-34l</guid>
      <description>&lt;h1&gt;
  
  
  The Price Ladder Isn't the Same Everywhere: BTC Order Sizes Differ 10x Between Exchanges
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was researched and written with AI assistance, then fact-checked against the official exchange APIs and documentation cited below. It contains no sponsored placements at the time of publication; if that ever changes, affiliate links will be clearly marked with #ad. Nothing here is financial advice — this is a measurement report, not a recommendation to trade, buy, or move funds.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every limit order you place climbs a price ladder. The ladder's rung spacing — the "tick size" — is set by the exchange, not by you, and you cannot place an order price that sits between two rungs. What most traders never notice is that &lt;strong&gt;the same asset has different rung spacing on different exchanges&lt;/strong&gt;. For bitcoin, we measured it: the minimum price increment for one and the same BTC market differs by a factor of ten across four major venues.&lt;/p&gt;

&lt;p&gt;This matters more than it sounds. Tick size quietly decides three things: how tightly your limit order can hug the current market, how much of your order gets silently rounded, and how much "free" price improvement is even possible on a fill.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we measured, and how
&lt;/h2&gt;

&lt;p&gt;On 2026-09-04 (02:02 UTC) we queried the free, no-authentication public APIs of four exchanges and read the raw specification fields for BTC against USD or USDT. No third-party summaries, no blog posts — just the venues' own endpoints, which you can hit yourself with curl and reproduce the numbers.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Venue&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;BTC tick size&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Binance&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/v3/exchangeInfo?symbol=BTCUSDT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PRICE_FILTER.tickSize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0.01&lt;/strong&gt; USD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bybit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v5/market/instruments-info?category=spot&amp;amp;symbol=BTCUSDT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;priceFilter.tickSize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0.1&lt;/strong&gt; USD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OKX&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/v5/public/instruments?instType=SWAP&amp;amp;instId=BTC-USDT-SWAP&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tickSz&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0.1&lt;/strong&gt; USDT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kraken&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/0/public/AssetPairs?pair=XXBTZUSD&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tick_size&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0.1&lt;/strong&gt; USD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Four independent official sources, two distinct answers: 0.01 versus 0.1. That is a tenfold difference in how finely you can quote a price on what is nominally the same market — spot bitcoin in dollars.&lt;/p&gt;

&lt;p&gt;We cross-checked reachability of each venue's own field documentation as a second layer: Bybit's instrument-specification documentation page (bybit-exchange.github.io/docs/v5/market/instrument) and OKX's API v5 reference (okx.com/docs-v5/en/) both returned HTTP 200 at measurement time and define these fields. The values above are static specification fields rather than market prices, so they are far more stable than the ticker snapshots we cite elsewhere in our work — but exchanges can and do amend specifications, so treat any number here as "as of the measurement date" and re-check against the venue's own page before relying on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a ten-cent-versus-one-cent gap is not a rounding error
&lt;/h2&gt;

&lt;p&gt;At the time of measurement, BTC last traded around $80,886 on Binance's public ticker. At that price:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 0.01 tick is about &lt;strong&gt;0.0012 basis points&lt;/strong&gt; of the price.&lt;/li&gt;
&lt;li&gt;A 0.1 tick is about &lt;strong&gt;0.012 basis points&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both sound negligible next to a 10-basis-point taker fee, and for a passive one-lot order they are. The gap shows up in three practical situations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Price improvement is quantized.&lt;/strong&gt; Suppose the best ask is $80,893.6 and the market moves in your favor. On a 0.01-tick venue, the price can print $80,893.59, .58, .57 — your resting buy limit can sit one cent behind the touch and get filled at a visibly better price. On a 0.1-tick venue, those sub-ten-cent moves simply do not exist in the order book; the ladder itself refuses to represent them. Your maximum possible price-improvement edge from queuing ahead is bounded by the rung spacing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Order quantities get rounded differently too.&lt;/strong&gt; Tick size never travels alone. The same API calls show Binance allowing quantity steps of 0.00001 BTC on spot, Kraken a minimum of 0.00005 BTC, Bybit a base minimum of 0.000001 BTC with a $5 minimum order amount, and OKX's perpetual contract moving in 0.01-contract steps (its contract value is 0.01 BTC per contract). When price precision and quantity precision interact, a "small" specification difference compounds: on coarser venues, the effective granularity of &lt;em&gt;notional value per order&lt;/em&gt; — price tick × quantity step — is often a magnitude coarser than on the fine-grained venue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Backtests and bots inherit the ladder whether they like it or not.&lt;/strong&gt; If your simulator fills orders at arbitrary prices with one-cent granularity, but the real venue quotes in tenths, your simulated fills were sometimes not representable in the real book at all. Over thousands of trades, a fraction of a basis point per fill is exactly the kind of error that turns a losing strategy green in a backtest. Before comparing maker rebates or spread-capture strategies across venues, read each &lt;code&gt;tickSize&lt;/code&gt;/&lt;code&gt;tickSz&lt;/code&gt;/&lt;code&gt;tick_size&lt;/code&gt; field directly — it is free, public, and one HTTP request away.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we deliberately did not conclude
&lt;/h2&gt;

&lt;p&gt;We are not ranking venues. A 0.1 tick is not "worse" than 0.01 — coarser ladders can concentrate displayed liquidity at fewer price levels, which some market makers prefer, and tick size is one input among dozens (fees, depth, latency, insurance funds, regulation). We also did not touch how each venue computes internal engine prices, funding settlements, or liquidation triggers — those are separate mechanisms with their own documentation. The only claim in this article is the measurable one: &lt;strong&gt;the minimum price increment for BTC differs 10x across these four official venues, and every one of them publishes the exact number in a public, no-key API field.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That makes tick size the cheapest specification check in all of exchange comparison. No login, no KYC, no scraping of JavaScript-rendered fee tables — four curl commands, and you know how fine a ladder you are actually allowed to climb.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Verify with official sources (re-run these yourself):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binance: &lt;code&gt;GET https://api.binance.com/api/v3/exchangeInfo?symbol=BTCUSDT&lt;/code&gt; → &lt;code&gt;symbols[0].filters&lt;/code&gt; → &lt;code&gt;PRICE_FILTER.tickSize&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bybit: &lt;code&gt;GET https://api.bybit.com/v5/market/instruments-info?category=spot&amp;amp;symbol=BTCUSDT&lt;/code&gt; → &lt;code&gt;result.list[0].priceFilter.tickSize&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;OKX: &lt;code&gt;GET https://www.okx.com/api/v5/public/instruments?instType=SWAP&amp;amp;instId=BTC-USDT-SWAP&lt;/code&gt; → &lt;code&gt;data[0].tickSz&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Kraken: &lt;code&gt;GET https://api.kraken.com/0/public/AssetPairs?pair=XXBTZUSD&lt;/code&gt; → &lt;code&gt;tick_size&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Field documentation: &lt;a href="https://bybit-exchange.github.io/docs/v5/market/instrument" rel="noopener noreferrer"&gt;https://bybit-exchange.github.io/docs/v5/market/instrument&lt;/a&gt; · &lt;a href="https://www.okx.com/docs-v5/en/" rel="noopener noreferrer"&gt;https://www.okx.com/docs-v5/en/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;AI-assisted content disclosure: research, API pulls, and drafting were performed by an automated research system; key figures were re-verified against the endpoints listed above immediately before publication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not financial advice. Cryptocurrency trading involves substantial risk. All figures are public specification values captured at the timestamps noted and may change at any time at each venue's discretion.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Funding Rate 101: The 8-Hour Payment You Make (or Receive) Without Noticing</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Tue, 01 Sep 2026 02:07:50 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/funding-rate-101-the-8-hour-payment-you-make-or-receive-without-noticing-1j41</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/funding-rate-101-the-8-hour-payment-you-make-or-receive-without-noticing-1j41</guid>
      <description>&lt;h1&gt;
  
  
  Funding Rate 101: The 8-Hour Payment You Make (or Receive) Without Noticing
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was written with AI assistance from public exchange API data. It contains **no affiliate or sponsored links&lt;/em&gt;* as of the publication date; if that ever changes, paid links will be clearly marked with #ad. Nothing here is financial advice — this is an educational explanation of a market mechanism, not a recommendation to trade anything.*&lt;/p&gt;

&lt;p&gt;If you have ever held a crypto perpetual futures contract overnight and wondered why your balance quietly shrank (or grew) a few times a day with no trade attached, you have met the &lt;strong&gt;funding rate&lt;/strong&gt;. It is one of the most important holding costs in crypto derivatives, it settles on a fixed clock, and — this is the part most fee guides skip — the exact rules differ meaningfully from one exchange to another even for the &lt;em&gt;same&lt;/em&gt; contract.&lt;/p&gt;

&lt;p&gt;To keep everything verifiable, every number in this article was pulled live from public, no-login exchange APIs on &lt;strong&gt;2026-09-01 (around 02:00 UTC)&lt;/strong&gt;. Rates change every settlement, so treat the figures as an illustration of the mechanism, not a quote.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the funding rate actually is
&lt;/h2&gt;

&lt;p&gt;Perpetual futures ("perps") track the spot price of an asset but never expire. Without an expiry date to force convergence, exchanges use a periodic cash flow between traders to tether the perp price to spot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;When the funding rate is positive&lt;/strong&gt;, the perp trades at a premium to spot, and &lt;strong&gt;longs pay shorts&lt;/strong&gt; at each settlement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When it is negative&lt;/strong&gt;, the perp trades at a discount, and &lt;strong&gt;shorts pay longs&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nobody at the exchange pockets this money — it moves directly between position holders. But from your point of view it is a real, recurring cost (or credit) that stacks every settlement interval, and for a leveraged position it compounds against your margin.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 8-hour clock, confirmed from the APIs
&lt;/h2&gt;

&lt;p&gt;The dominant convention is settlement &lt;strong&gt;every 8 hours&lt;/strong&gt;. This is not folklore — you can watch it in the raw timestamps. On 2026-09-01, all three major venues agreed on the same settlement instants for BTC perps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Binance USDT-margined futures&lt;/strong&gt; (&lt;code&gt;fapi/v1/fundingRate&lt;/code&gt;, symbol BTCUSDT): the four most recent settlements carried timestamps 1788134400002, 1788163200002, 1788192000001, 1788220800005 — that is 00:00, 08:00 and 16:00 UTC, spaced exactly 8 hours apart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OKX&lt;/strong&gt; (&lt;code&gt;/api/v5/public/funding-rate&lt;/code&gt;, BTC-USDT-SWAP): &lt;code&gt;fundingTime&lt;/code&gt; 1788249600000 minus &lt;code&gt;prevFundingTime&lt;/code&gt; 1788220800000 = exactly 28,800,000 ms = &lt;strong&gt;8.0 hours&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bybit&lt;/strong&gt; (&lt;code&gt;/v5/market/tickers?category=linear&lt;/code&gt;): an explicit &lt;code&gt;fundingIntervalHour: 8&lt;/code&gt; field for BTCUSDT, with &lt;code&gt;nextFundingTime&lt;/code&gt; 1788249600000 — the same 08:00 UTC instant OKX shows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three independent APIs, one shared heartbeat. If you hold a BTC perp for a full day, you will pay or receive funding &lt;strong&gt;three times&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same mechanism, different numbers: a same-window comparison
&lt;/h2&gt;

&lt;p&gt;Here is where the "fee schedule" mental model breaks down. On the same contract — BTC against USDT, perpetual — the &lt;em&gt;settled&lt;/em&gt; funding rates over four identical settlement windows (Aug 31 00:00 UTC through Sep 1 00:00 UTC) came out different at every venue:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Settlement (UTC)&lt;/th&gt;
&lt;th&gt;Binance&lt;/th&gt;
&lt;th&gt;Bybit&lt;/th&gt;
&lt;th&gt;OKX&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aug 31 00:00&lt;/td&gt;
&lt;td&gt;0.00727%&lt;/td&gt;
&lt;td&gt;0.00650%&lt;/td&gt;
&lt;td&gt;0.00647%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aug 31 08:00&lt;/td&gt;
&lt;td&gt;0.01000%&lt;/td&gt;
&lt;td&gt;0.00857%&lt;/td&gt;
&lt;td&gt;0.00831%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aug 31 16:00&lt;/td&gt;
&lt;td&gt;0.01000%&lt;/td&gt;
&lt;td&gt;0.00591%&lt;/td&gt;
&lt;td&gt;0.00745%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sep 1 00:00&lt;/td&gt;
&lt;td&gt;0.00848%&lt;/td&gt;
&lt;td&gt;0.00218%&lt;/td&gt;
&lt;td&gt;0.00301%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All positive — longs were paying shorts everywhere — but the four-period averages were &lt;strong&gt;0.00894% on Binance, 0.00579% on Bybit, 0.00631% on OKX&lt;/strong&gt;. Funding settles three times a day, so a quick annualization (average × 3 × 365) gives roughly &lt;strong&gt;9.8% vs 6.3% vs 6.9% per year&lt;/strong&gt; of notional for that stretch. Holding the "same" position would have cost about &lt;strong&gt;1.5× more&lt;/strong&gt; on one venue than another.&lt;/p&gt;

&lt;p&gt;Why the difference? Each venue computes funding from its own index prices, its own premium windows, and its own smoothing rules. The mechanism is universal; the arithmetic is local.&lt;/p&gt;

&lt;h2&gt;
  
  
  The caps are different too
&lt;/h2&gt;

&lt;p&gt;Exchanges clamp funding with upper and lower bounds, and these bounds are also per-venue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bybit&lt;/strong&gt; BTCUSDT: &lt;code&gt;fundingCap&lt;/code&gt; = &lt;strong&gt;0.333%&lt;/strong&gt; per interval (API field &lt;code&gt;fundingCap&lt;/code&gt;, tickers endpoint).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OKX&lt;/strong&gt; BTC-USDT-SWAP: &lt;code&gt;maxFundingRate&lt;/code&gt; / &lt;code&gt;minFundingRate&lt;/code&gt; = &lt;strong&gt;±0.375%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;These caps are per-contract, not global — lesser-known contracts carry different (often much wider) bounds, and some venues settle some contracts hourly or 4-hourly instead of 8-hourly. Never assume "every perp, every exchange, 0.01% every 8 hours." That rule of thumb is a coincidence that survives about as long as a weather forecast.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this belongs in your cost model
&lt;/h2&gt;

&lt;p&gt;When people compare exchanges they compare maker/taker fees — visible numbers printed on a fee page. Funding is invisible by comparison: it is not a fee, it is a transfer between traders, so it appears nowhere on any fee schedule. Yet for anyone &lt;em&gt;holding&lt;/em&gt; leveraged exposure for days or weeks rather than scalping minutes, funding routinely dwarfs trading fees. A 0.01% taker fee paid twice is 0.02%; a 0.01% funding rate is paid &lt;strong&gt;three times a day&lt;/strong&gt; — roughly 0.9% of notional per month, about 11% annualized, if it sits at that level.&lt;/p&gt;

&lt;p&gt;Practical, exchange-neutral habits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check the funding rate before opening a position&lt;/strong&gt;, and check its sign relative to your direction. You can read it on every major venue's public ticker or funding endpoint without an account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Count settlements, not rates.&lt;/strong&gt; 0.01% per 8 hours and 0.01% per hour are wildly different costs. Always read the interval field alongside the rate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare like for like across venues&lt;/strong&gt; using settled history, not the current predicted value — prediction fields and caps differ.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Verify it yourself
&lt;/h2&gt;

&lt;p&gt;Everything above is reproducible in a minute with plain HTTPS calls (no API key):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binance: &lt;code&gt;GET https://fapi.binance.com/fapi/v1/fundingRate?symbol=BTCUSDT&amp;amp;limit=4&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bybit: &lt;code&gt;GET https://api.bybit.com/v5/market/tickers?category=linear&amp;amp;symbol=BTCUSDT&lt;/code&gt; and &lt;code&gt;GET https://api.bybit.com/v5/market/funding/history?category=linear&amp;amp;symbol=BTCUSDT&amp;amp;limit=5&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;OKX: &lt;code&gt;GET https://www.okx.com/api/v5/public/funding-rate?instId=BTC-USDT-SWAP&lt;/code&gt; and &lt;code&gt;GET https://www.okx.com/api/v5/public/funding-rate-history?instId=BTC-USDT-SWAP&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Official field definitions live in each venue's public documentation: Binance's futures API docs (binance-docs.github.io/apidocs/futures/en/), Bybit's v5 market docs (bybit-exchange.github.io/docs/v5/market/tickers), and OKX's v5 API docs (okx.com/docs-v5/en/) — all reachable without login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Numbers in this article are values settled or published by the official APIs on 2026-09-01. Funding rates change every interval — always check the live endpoints and each exchange's own rules page before drawing conclusions.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Not financial advice. Derivatives carry substantial risk of loss; funding mechanics described here do not constitute any recommendation to open, close or hold any position. This article contains no affiliate links (see disclosure at top).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before acting on anything in this article, verify against official sources: each exchange's own API endpoints and documentation pages listed above.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>beginners</category>
      <category>education</category>
      <category>trading</category>
    </item>
    <item>
      <title>The Tax Layer: Why Exchange Fees Are Only Half the Hidden Cost of Trading</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Mon, 31 Aug 2026 07:54:34 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/the-tax-layer-why-exchange-fees-are-only-half-the-hidden-cost-of-trading-h05</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/the-tax-layer-why-exchange-fees-are-only-half-the-hidden-cost-of-trading-h05</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: This article is written with AI assistance, reflects independent research, and is educational content — not tax, legal, or investment advice. Verify everything against your own jurisdiction's rules and a qualified professional.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Everyone who compares crypto exchanges obsesses over trading fees. That's rational — trading fees are visible, recurring, and easy to compare. But there is a second cost layer that almost nobody prices into their "total cost of trading" spreadsheet until it arrives as a bill: &lt;strong&gt;the cost of simply being able to report your trades correctly.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The reporting era has officially started
&lt;/h2&gt;

&lt;p&gt;For years, self-custody trading came with a comfortable gray zone: no broker, no form, no paper trail. That era is over, and the change is now written into US federal regulation.&lt;/p&gt;

&lt;p&gt;The US Treasury's final broker-reporting rules (26 CFR §1.6045-1, as amended through 2025) require brokers to report digital-asset transactions on &lt;strong&gt;Form 1099-DA, "Digital Asset Proceeds From Broker Transactions."&lt;/strong&gt; The IRS' own instructions for the form spell out the phase-in: tax year 2025 covers gross proceeds from custodial sales of specified digital assets, and &lt;strong&gt;from tax year 2026 onward, reporting of gross proceeds becomes mandatory for all digital assets&lt;/strong&gt;, with basis reporting mandatory for covered securities.&lt;/p&gt;

&lt;p&gt;Two facts follow from this, and they apply whether or not you ever touch a US broker:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your custodial activity is now documented.&lt;/strong&gt; Whatever exchange you use that qualifies as a broker in some jurisdiction, the odds you'll receive an official tax form keep growing every year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your non-custodial activity is &lt;em&gt;not&lt;/em&gt; documented — for you, that's your job.&lt;/strong&gt; Cost basis across self-custody wallets, DeFi swaps, bridges, and staking rewards still has to be reconstructed by the trader. The regulator's patience for "I don't have records" shrinks in direct proportion to how much data &lt;em&gt;they&lt;/em&gt; now hold.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The hidden cost has three parts
&lt;/h2&gt;

&lt;p&gt;When people say "tax software is too expensive," they're usually comparing the software's sticker price against zero. The correct comparison is against the alternative:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Reconstruction cost (your time).&lt;/strong&gt; An active trader doing a year-end audit of every swap, transfer, and gas fee across three exchanges and two wallets is looking at tens of hours at minimum. Even valuing that time conservatively, manual spreadsheet reconstruction is often &lt;em&gt;more&lt;/em&gt; expensive than an annual software subscription — before considering error risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Error cost (overpayment and penalties).&lt;/strong&gt; Two symmetric risks live here. Missing cost-basis documentation means the default position is that you can't prove your basis — which typically &lt;em&gt;raises&lt;/em&gt; your taxable gain. Conversely, misclassified transactions (is a bridge transfer taxable? are staking rewards income at receipt?) can understate what you owe, and understatement carries penalties. Both directions cost real money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Migration cost (the one nobody budgets).&lt;/strong&gt; If you trade on an exchange for three years and then switch, you must export, normalize, and reconcile three years of history into your new setup. Every exchange's CSV format is subtly different. The cost spikes exactly when you're already busy — which is why it's the most commonly skipped step.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to look for if you evaluate tax software
&lt;/h2&gt;

&lt;p&gt;FeeAtlas doesn't endorse specific vendors, but here is the neutral filter we'd apply, mirroring our &lt;a href="https://dev.to/hmwork_2c698b7158d3/how-to-choose-a-crypto-exchange-the-8-point-checklist-that-actually-filters-22lb"&gt;8-point exchange checklist&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exchange/wallet coverage for &lt;em&gt;your&lt;/em&gt; actual venues&lt;/strong&gt; — including the small ones. A tool with 1,000 integrations that lacks your regional exchange is worth zero to you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction-volume pricing tiers.&lt;/strong&gt; Most vendors price by transaction count, and high-frequency traders hit the upper tiers fast. Model your &lt;em&gt;actual&lt;/em&gt; annual transaction count before choosing a tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit trail output.&lt;/strong&gt; Can the tool show &lt;em&gt;why&lt;/em&gt; it classified each transaction, or only the final number? For any nontrivial return, "trust me" isn't a filing strategy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Methodology control&lt;/strong&gt; — FIFO vs. specific-identification vs. (where allowed) average cost. The same year of trading can produce materially different gains under different methods; you want the choice, not the default.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest summary
&lt;/h2&gt;

&lt;p&gt;Total cost of trading = &lt;strong&gt;exchange fees + spread + slippage + reporting cost&lt;/strong&gt;. The first three get all the attention because they're visible at trade time. The fourth arrives once a year, invisibly compounds, and just became a formal, documented requirement for hundreds of millions of traders. Price it in before you pick your tools — not after you pick your lawyer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Educational content only. Tax rules differ by jurisdiction and change frequently; this article reflects US federal rules as published on IRS.gov and eCFR as of late 2026 and is not tax advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>taxes</category>
      <category>beginners</category>
      <category>tutorials</category>
    </item>
    <item>
      <title>How to choose a crypto exchange: the 8-point checklist that actually filters</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Mon, 31 Aug 2026 06:36:10 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/how-to-choose-a-crypto-exchange-the-8-point-checklist-that-actually-filters-22lb</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/how-to-choose-a-crypto-exchange-the-8-point-checklist-that-actually-filters-22lb</guid>
      <description>&lt;h1&gt;
  
  
  How to choose a crypto exchange: the 8-point checklist that actually filters
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;AI-assisted content, fact-checked against official sources. Not financial advice. Some links below may be affiliate links (#ad) — marked where they appear; they cost you nothing and may support this site.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There are thousands of "best exchange" lists, and they're all structured the same way: a table, then ten paragraphs paraphrasing each exchange's own marketing. This is not that. This is a filter you run yourself, in order. The ordering matters — most people start at step 6 (fees) and never run steps 1–3, which is backwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you compare anything
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Can you legally onboard from your country, and will support answer you?&lt;/strong&gt; Requirements vary by jurisdiction and change. Create the account, attempt the lowest-tier verification, and ask one support question before depositing anything. An account that gets frozen at verification is worse than no account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Withdrawal reality check.&lt;/strong&gt; Before you trust an exchange with meaningful money: deposit small, withdraw small, across two different networks if offered. You're testing whether the exit actually works and what the friction feels like. (Yes, "test the door before you move in" should be uncontroversial. It isn't.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Custody and structure literacy.&lt;/strong&gt; You don't need to read audit reports — you need to know &lt;em&gt;that they exist and when the last one was&lt;/em&gt;. "Proof of reserves" screenshots are a floor, not a ceiling. Know which entity in which country holds your money, because that's who you'd be dealing with if anything goes wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  The comparison phase
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;4. What you'll actually trade.&lt;/strong&gt; A cheap exchange for pairs you'll never touch is expensive. List availability in your region is the first real filter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Order types you'll use.&lt;/strong&gt; If you only ever use market orders, maker/taker spreads in fee tables are mostly theater for you — compare taker rates and stop there. If you use limit orders, the maker rate is the number that matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Fees at YOUR volume.&lt;/strong&gt; Base-tier advertised rates are marketing. Compute annual cost at your actual volume — including the native-token discount only if you'd genuinely hold that token. We keep a free calculator for exactly this: it runs in your browser, links every number to the exchange's official fee page, and lets you edit anything you verify differently.&lt;br&gt;
→ &lt;strong&gt;&lt;a href="//tool_fee_comparator/index.html"&gt;Spot Fee Comparator&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;(add your affiliate link here at publish time)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Hidden costs.&lt;/strong&gt; Convert-tool spreads, withdrawal network fees, inactivity fees (yes, some exchanges have them), fiat on/off-ramp charges. The all-in number is the only honest one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Your own behavior.&lt;/strong&gt; The most expensive crypto decision is usually an emergency forced sale at the worst week of your life because money was on the wrong platform, in the wrong asset, at the wrong size. Split: exchange holds working balances, something boring holds the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-line summary
&lt;/h2&gt;

&lt;p&gt;Choose with steps 1–3 (can I use it, can I exit, who holds it), then optimize with 4–7 (cost at my volume), and protect yourself with 8. Everyone optimizes 6 and skips 2. Don't be everyone.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Verify everything current before acting; platforms change terms with little notice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>security</category>
      <category>tutorial</category>
      <category>finance</category>
    </item>
    <item>
      <title>Why Your Exchange Fees quietly cost more than you think (and how to compare them honestly)</title>
      <dc:creator>HMwork</dc:creator>
      <pubDate>Mon, 31 Aug 2026 06:35:18 +0000</pubDate>
      <link>https://dev.to/hmwork_2c698b7158d3/why-your-exchange-fees-quietly-cost-more-than-you-think-and-how-to-compare-them-honestly-o2g</link>
      <guid>https://dev.to/hmwork_2c698b7158d3/why-your-exchange-fees-quietly-cost-more-than-you-think-and-how-to-compare-them-honestly-o2g</guid>
      <description>&lt;h1&gt;
  
  
  Why Your Exchange Fees quietly cost more than you think (and how to compare them honestly)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;AI-assisted content, fact-checked against official sources. Not financial advice. Some links below may be affiliate links (#ad) — marked where they appear; they cost you nothing and may support this site.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;You picked an exchange because of the app, the listings, maybe a friend's recommendation. Trading fees probably got a glance: "0.1% — fine." That 0.1% is where the mistake lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three places fees hide
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Maker vs taker is not a footnote.&lt;/strong&gt; Market orders are taker orders, and taker fees are routinely 1.5–4x maker fees on the same exchange. If you click "Buy" with market order selected every time, you're paying the premium tier by default, forever. Two people trading the same coin on the same exchange can pay very different rates based on one dropdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The base tier is a marketing tier.&lt;/strong&gt; Almost every exchange advertises its VIP0 rate, then discounts up a ladder tied to 30-day volume or native-token holdings. Two honest questions before you commit: will you actually reach tier thresholds, and would holding that exchange's token to get a discount expose you to exactly the asset you're trying to park money out of?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Withdrawal and conversion costs get excluded from screenshots.&lt;/strong&gt; A "zero fee" buy with convert tools can carry a spread instead of a fee — it just doesn't look like one. And withdrawal networks have their own fees that change with congestion.&lt;/p&gt;

&lt;h2&gt;
  
  
  A method that beats any comparison article (including this one)
&lt;/h2&gt;

&lt;p&gt;Comparison tables go stale within weeks — exchanges change promos constantly. The durable method:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decide your realistic monthly volume and how often you'd use limit vs market orders.&lt;/li&gt;
&lt;li&gt;Pull each candidate's &lt;strong&gt;official&lt;/strong&gt; fee page (not an aggregator — aggregators are often paid too, which is not a sin but is a bias).&lt;/li&gt;
&lt;li&gt;Compute one number: total dollars per year at YOUR volume, including an honest guess at withdrawal frequency.&lt;/li&gt;
&lt;li&gt;Re-check every 6 months, or after any exchange you use announces a fee change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We built a free, no-signup calculator that implements exactly this: you edit each exchange's numbers after checking its official page (each row links there), and it shows cost per year at your volume. Nothing is uploaded — it runs entirely in your browser.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="//tool_fee_comparator/index.html"&gt;Open the Spot Fee Comparator&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;(add your affiliate link here at publish time)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What matters more than 0.05%
&lt;/h2&gt;

&lt;p&gt;Fees are the most comparable cost because they're visible. Custody model, withdrawal restrictions history, and how an exchange behaves in stress events matter more but are harder to compare. Pay the median fee at an exchange you've actually stress-tested with a small withdrawal — that beats chasing the absolute cheapest rate you found on a screenshot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Verify every number on the official pages before acting. Rates change.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>beginners</category>
      <category>finance</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
