Skip to content

Commit 4bd17d8

Browse files
committed
Version 0.10.1
1 parent b569b18 commit 4bd17d8

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

hyperliquid/exchange.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,14 @@ def _slippage_price(
7575
# Get midprice
7676
px = float(self.info.all_mids()[coin])
7777

78+
asset = self.info.coin_to_asset[coin]
7879
# spot assets start at 10000
79-
is_spot = self.info.coin_to_asset[coin] >= 10_000
80+
is_spot = asset >= 10_000
8081

8182
# Calculate Slippage
8283
px *= (1 + slippage) if is_buy else (1 - slippage)
8384
# We round px to 5 significant figures and 6 decimals for perps, 8 decimals for spot
84-
return round(float(f"{px:.5g}"), 6 if not is_spot else 8)
85+
return round(float(f"{px:.5g}"), (6 if not is_spot else 8) - self.info.asset_to_sz_decimals[asset])
8586

8687
def order(
8788
self,

hyperliquid/info.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,24 @@ def __init__(
3232
if spot_meta is None:
3333
spot_meta = self.spot_meta()
3434

35-
self.coin_to_asset = {asset_info["name"]: asset for (asset, asset_info) in enumerate(meta["universe"])}
36-
self.name_to_coin = {asset_info["name"]: asset_info["name"] for asset_info in meta["universe"]}
35+
self.coin_to_asset = {}
36+
self.name_to_coin = {}
37+
self.asset_to_sz_decimals = {}
38+
for asset, asset_info in enumerate(meta["universe"]):
39+
self.coin_to_asset[asset_info["name"]] = asset
40+
self.name_to_coin[asset_info["name"]] = asset_info["name"]
41+
self.asset_to_sz_decimals[asset] = asset_info["szDecimals"]
3742

3843
# spot assets start at 10000
3944
for spot_info in spot_meta["universe"]:
40-
self.coin_to_asset[spot_info["name"]] = spot_info["index"] + 10000
45+
asset = spot_info["index"] + 10000
46+
self.coin_to_asset[spot_info["name"]] = asset
4147
self.name_to_coin[spot_info["name"]] = spot_info["name"]
4248
base, quote = spot_info["tokens"]
43-
name = f'{spot_meta["tokens"][base]["name"]}/{spot_meta["tokens"][quote]["name"]}'
49+
base_info = spot_meta["tokens"][base]
50+
quote_info = spot_meta["tokens"][quote]
51+
self.asset_to_sz_decimals[asset] = base_info["szDecimals"]
52+
name = f'{base_info["name"]}/{quote_info["name"]}'
4453
if name not in self.name_to_coin:
4554
self.name_to_coin[name] = spot_info["name"]
4655

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
55

66
[tool.poetry]
77
name = "hyperliquid-python-sdk"
8-
version = "0.10.0"
8+
version = "0.10.1"
99
description = "SDK for Hyperliquid API trading with Python."
1010
readme = "README.md"
1111
authors = ["Hyperliquid <[email protected]>"]

0 commit comments

Comments
 (0)