ostium-python-sdk · PyPI Skip to main content Switch to mobile version Warning Some features may not work without
JavaScript. Please try enabling it if you encounter problems. Search PyPI Search Help Docs Sponsors Log in Register Menu
Help Docs Sponsors Log in Register Search PyPI Search ostium-python-sdk 3.3.1 pip install ostium-python-sdk==3.3.1 Copy
PIP instructions Latest release Released: Jul 22, 2026 A python based SDK developed for interacting with Ostium, a
leveraged trading application for trading currencies, commodities, indices, crypto and more. Navigation Project
description Release history Download files Verified details These details have been verified by PyPI Maintainers
amiostium Unverified details These details have not been verified by PyPI Project links Homepage Meta License: MIT
License Author: ami@ostium.io Requires: Python >=3.8 Provides-Extra: dev Classifiers Development Status 3 - Alpha
Intended Audience Developers License OSI Approved :: MIT License Programming Language Python :: 3 Python :: 3.8 Report
project as malware Project description Project details Release history Download files Project description Changelog
Track all notable changes, updates, and improvements to the Ostium Python SDK in our Changelog. Ostium Python SDK A
python based SDK developed for interacting with Ostium v1 Trading Platform (https://ostium.app/) Ostium is a
decentralized perpetuals exchange on Arbitrum (Ethereum L2) with a focus on providing a seamless experience for traders
for trading currencies, commodities, indices, crypto and more. This SDK is designed to be used by developers who want to
build applications on top of Ostium and automate their trading strategies. Supported Operations Basically you can
perfrom any operation that is supported by the Ostium's web site in a programmatic way, via the SDK: Get list of feeds
and their details Create a Trade/Order Close a Trade, Partial Close a trade, Set Take Profit, Set Stop Loss Add
Colleteral, Remove Collateral Cancel an Order, Set Take Profit, Set Stop Loss, Set Entry Price Read Open Trades aka
Positions Read Open Orders (Limit, Stop) Read Order History along with their details such as Pnl, etc. Get latest price
of a feed Calculate fees such as funding rate, rollover fee, etc. Call testnet faucet to get testnet USDC tokens Read
balance of your account, usdc and native token You can check this repository -
https://github.com/0xOstium/use-ostium-python-sdk for more examples of how to use the SDK. Its shows how to create
orders, trade, set tp/sl, cancel orders, get funding rate, rollover fee, percent profit/loss etc. To use the SDK you
need to have a valid EVM private key for an account on either Arbitrum (mainnet) or Arbitrum Sepolia (testnet),
depending on which network you plan to use and supply a RPC URL, see below for more details. Installation The SDK can be
installed via pip: pip install ostium-python-sdk Running Tests First, install the package with development dependencies:
pip install -e ".[dev]" Running tests Run specific tests pytest -v tests/test_trade_liquidation_price.py pytest -v
tests/test_funding.py pytest -v tests/test_trade_get_tp_price.py pytest -v tests/test_trade_get_sl_price.py pytest -v
tests/test_current_trade_profit_p.py pytest -v tests/test_top_up_with_collateral.py pytest -v
tests/test_top_up_with_leverage.py pytest -v tests/test_remove_collateral_with_collateral.py pytest -v
tests/test_remove_collateral_from_leverage.py pytest -v tests/test_current_total_profit_p.py pytest -v
tests/test_current_trade_profit_raw.py pytest -v tests/test_current_total_profit_raw.py pytest -v
tests/test_get_trade_funding_fee.py pytest -v tests/test_get_trade_rollover_fee.py pytest -v
tests/test_get_trade_value.py pytest -v tests/test_get_opening_fee.py pytest -v
tests/test_get_pending_acc_funding_fees.py pytest -v tests/test_max_leverage.py pytest -v
tests/test_overnight_max_leverage.py pytest -v tests/test_slippage.py pytest -v tests/test_target_funding_rate.py Run
ALL tests pytest Requirements Developed using: python=3.8 SDK Instantiation You can instantiate the SDK with the
following parameters. Ostium Platform is deployed on Arbitrum. You can use the testnet or mainnet config via the
NetworkConfig class, see below for an example. from dotenv import load_dotenv from ostium_python_sdk import OstiumSDK,
NetworkConfig # Load environment variables if using .env file load_dotenv() # Get private key from environment variable
private_key = os.getenv('PRIVATE_KEY') if not private_key: raise ValueError("PRIVATE_KEY not found in .env file")
rpc_url = os.getenv('RPC_URL') if not rpc_url: raise ValueError("RPC_URL not found in .env file") # Initialize SDK
(default: verbose=False for quiet operation) configTestnet = NetworkConfig.testnet() sdk = OstiumSDK(configTestnet,
private_key, rpc_url) # For verbose mode with detailed logging: sdk = OstiumSDK(configTestnet, private_key, rpc_url,
verbose=True) NOTE: create a .env file with PRIVATE_KEY and RPC_URL to use the SDK. An RPC URL is required to use the
SDK. You can get one by signing up for a free account at https://www.alchemy.com/ and creating an app. NOTE: You can
also use the SDK without providing a private key, in which case you will be limited to read only operations on the SDK.
PRIVATE_KEY=your_private_key_here RPC_URL=https://arb-sepolia.g.alchemy.com/v2/...
#RPC_URL="https://arb-mainnet.g.alchemy.com/v2/...", your_private_key_here should be a valid EVM private key for an
account on either Arbitrum (mainnet) or Arbitrum Sepolia (testnet), depending on which network you plan to use. Make
sure to save it in a secure location, and that the .env file is not shared with anyone or committed to a public
repository (make sure you add it to .gitignore if you are pushing your code). Testnet and Fuacet to get USDC tokens As
you can see above, we show use case on testnet. In order to use Ostium on testnet, aka on Arbitrum Sepolia, you need to
get testnet USDC tokens. You can do this by using the faucet which is also available on the SDK once instantiated in
testnet config. # Get current token amount from faucet # On testnet sdk = OstiumSDK(NetworkConfig.testnet(),
private_key, rpc_url) # Check if tokens can be requested if sdk.faucet.can_request_tokens(address): # Get amount that
will be received amount = sdk.faucet.get_token_amount() print(f"Will receive {amount} tokens") # Request tokens receipt
= sdk.faucet.request_tokens() print(f"Tokens requested successfully! TX: {receipt['transactionHash'].hex()}") else:
next_time = sdk.faucet.get_next_request_time(address) print(f"Cannot request tokens yet. Next request allowed at:
{next_time}") NOTE: You will also need gas aka ethereum or native token on Arbitrum Sepolia to even be able to request
USDC tokens from the faucet or perform any write blockchain operation. You can get some native token for Arbitrum
Sepolia for free at: https://www.alchemy.com/faucets/arbitrum-sepolia (or search for "arbitrum sepolia faucet") The SDK
contains the following classes: OstiumSDK: The main class for interacting with the Ostium Platform. NetworkConfig: The
class for configuring the network. Balance: The class for interacting with the account, fetching balance, etc. available
via sdk.balance. SubgraphClient: The class for interacting with the subgraph, getting pair details, open trades, open
orders,etc. available via sdk.subgraph. Price: The class for interacting with the price, fetching latest price, etc.
available via sdk.price Ostium: The class for interacting with the Ostium Smart contracts, opening trades, updating take
profit and stop loss, closing trades, opening orders, etc. available via sdk.ostium. Faucet: The class for interacting
with the Faucet for getting testnet USDC tokens. available via sdk.faucet. Basic Usage The intraction with Ostium
platform is denoted with pair_id and trade_index. pair_id: The id of the pair, available via sdk.subgraph.get_pairs()
trade_index: The index of the trade for this trader on the pair, available via sdk.subgraph.get_open_trades() List of
available pairs (Mainnet) As of May 2025, the following pairs are available on the mainnet: ID Trading Pair Description
0 BTC-USD Bitcoin 1 ETH-USD Ethereum 2 EUR-USD Euro 3 GBP-USD British Pound 4 USD-JPY US Dollar to Japanese Yen 5
XAU-USD Gold 6 HG-USD Copper 7 CL-USD Crude Oil 8 XAG-USD Silver 9 SOL-USD Solana 10 SPX-USD S&P 500 Index 11
DJI-USD Dow Jones Industrial Average 12 NDX-USD NASDAQ-100 Index 13 NIK-JPY Nikkei 225 Index 14 FTSE-GBP FTSE 100 Index
15 DAX-EUR DAX Index 16 USD-CAD US Dollar to Canadian Dollar 17 USD-MXN US Dollar to Mexican Peso 18 NVDA-USD NVIDIA
Stock 19 GOOG-USD Alphabet (Google) Stock 20 AMZN-USD Amazon Stock 21 META-USD Meta (Facebook) Stock 22 TSLA-USD Tesla
Stock 23 AAPL-USD Apple Stock 24 MSFT-USD Microsoft Stock Usage Examples Reading available pairs / feeds from
ostium_python_sdk import OstiumSDK from dotenv import load_dotenv # Load environment variables if using .env file
load_dotenv() # Get private key from environment variable private_key = os.getenv('PRIVATE_KEY') if not private_key:
raise ValueError("PRIVATE_KEY not found in .env file") rpc_url = os.getenv('RPC_URL') if not rpc_url: raise
ValueError("RPC_URL not found in .env file") # Initialize SDK config = NetworkConfig.testnet() sdk = OstiumSDK(config,
private_key, rpc_url) # Or, initialize: # # (1) mainnet: # # config = NetworkConfig.mainnet() # sdk = OstiumSDK(config,
private_key, rpc_url) # # (2) with explicit private key & rpc url, i.e: not read from env variables # sdk =
OstiumSDK( # network="arbitrum", # private_key="your_private_key_here", # rpc_url="https://arb1.arbitrum.io/rpc...." # )
# Get all available pairs pairs = await sdk.subgraph.get_pairs() print("\nPair Information:")
print("----------------------------------------") for pair in pairs: print("----------------------------------------") #
Print all available fields in pair_details for key, value in pair.items(): print(f"{key}: {value}")
print("----------------------------------------") Opening a Trade, Reading Open Trades, Setting TP and SL, Closing a
Trade # Define trade parameters trade_params = { 'collateral': 100, # USDC amount 'leverage': 10, # Leverage multiplier
'asset_type': 0, # 0 for BTC, see pair_details above for other asset types 'direction': True, # True for Long, False for
Short 'order_type': 'MARKET' # 'MARKET', 'LIMIT', or 'STOP' #'tp': 0, # Take Profit price - if not specified or Zero
means no TP #'sl': 0, # Stop Loss price - if not specified or Zero means no SL } try:
sdk.ostium.set_slippage_percentage(1) print(f"Slippage percentage set to: {sdk.ostium.get_slippage_percentage()}%") #
Get latest price for BTC latest_price, _, _ = await sdk.price.get_price("BTC", "USD") print(f"Latest price:
{latest_price}") # Execute trade at current market price receipt = sdk.ostium.perform_trade(trade_params,
at_price=latest_price) print(f"Trade successful! Transaction hash: {receipt['transactionHash'].hex()}") # Wait for the
transaction to be confirmed await asyncio.sleep(10) # Get public address from private key account =
Account.from_key(private_key) trader_public_address = account.address # Get the trade details open_trades = await
sdk.subgraph.get_open_trades(trader_public_address) for trade_index, trade_data in enumerate(open_trades): print(f"Trade
{trade_index + 1}: {trade_data}\n") if len(open_trades) == 0: print( "No open trades found. Maybe the trade failed?
enough USDC and ETH in the account?") else: opened_trade = open_trades[len(open_trades) - 1] print(f"Opened trade:
{opened_trade}\n") sdk.ostium.update_tp( opened_trade['pair']['id'], opened_trade['index'], latest_price * 1.02)
print(f"Trade Take Profit set to 2% above the current price!\n") await asyncio.sleep(10) sdk.ostium.update_sl(
opened_trade['pair']['id'], opened_trade['index'], latest_price * 0.99) print(f"Trade Stop Loss set to 1% below the
current price!\n") await asyncio.sleep(10) receipt = sdk.ostium.close_trade( opened_trade['pair']['id'],
opened_trade['index']) print( f"Closed trade! Transaction hash: {receipt['transactionHash'].hex()}\n") except Exception
as e: print(f"Trade failed: {str(e)}") NOTE: Use SDK method get_open_trade_metrics every so often while trade is open to
get the trade's metrics such as: Funding fee Roll over fee Unrealized Pnl and Pnl Percent Total Profit Liquidation Price
metrics = await sdk.get_open_trade_metrics(pair_id, trade_index) print(metrics) Create a Short ETH Limit Order This
example shows how to create a short ETH limit order, 10% above the current ETHUSD price. So if price goes up 10% we
order a Short ETH trade. # Get private key from environment variable private_key = os.getenv('PRIVATE_KEY') if not
private_key: raise ValueError("PRIVATE_KEY not found in .env file") rpc_url = os.getenv('RPC_URL') if not rpc_url: raise
ValueError("RPC_URL not found in .env file") # Initialize SDK config = NetworkConfig.testnet() sdk = OstiumSDK(config,
private_key, rpc_url) # Define trade parameters order_params = { 'collateral': 10, # USDC amount 'leverage': 50, #
Leverage multiplier 'asset_type': 1, # 1 for ETH 'direction': False, # True for Long, False for Short 'order_type':
'LIMIT' # 'MARKET', 'LIMIT', or 'STOP' } try: # Get latest price for ETH latest_price, _, _ = await
sdk.price.get_price("ETH", "USD") print(f"Latest price: {latest_price}") # Execute LIMIT trade order at 10% above the
current price receipt = sdk.ostium.perform_trade(order_params, at_price=latest_price * 1.1) print( f"Order successful!
Transaction hash: {receipt['transactionHash'].hex()}") # Wait for the order to be confirmed await asyncio.sleep(10) #
Get public address from private key account = Account.from_key(private_key) trader_public_address = account.address #
Get the order details open_orders = await sdk.subgraph.get_orders(trader_public_address) for order_index, order_data in
enumerate(open_orders): print(f"Order {order_index + 1}: {order_data}\n") limit_type, _, _, _, _, _, _, pairIndex,
index, _, _ = get_order_details(order_data) print(f"You can cancel_limit_order / update_limit_order using pair_id:
{pairIndex} and index: {index}\n") receipt = sdk.ostium.cancel_limit_order(pairIndex, index) print( f"Limit Order
cancelled! Transaction hash: {receipt['transactionHash'].hex()}") if len(open_orders) == 0: print( "No open order found.
Maybe the order failed? enough USDC and ETH in the account?") else: opened_order = open_orders[len(open_orders) - 1]
print(f"Opened order: {opened_order}\n") except Exception as e: print(f"Order failed: {str(e)}") NOTE: Similiarly you
can create a Stop order, just use 'STOP' as the order_type and make sure at_price is set to an acceptable stop loss
price. Example Usage Scripts More examples can be found in the examples folder. Get Testnet USDC from Faucet To get
testnet USDC tokens (only available on Arbitrum Sepolia testnet): python examples/example-faucet-request.py See
example-faucet-request.py for an example of how to use the faucet to get testnet USDC tokens. Read Block Number To run
the example: python examples/example-read-block-number.py See example-read-block-number.py for an example of how to use
the SDK. Read Positions To run the example: python examples/example-read-positions.py See example-read-positions.py for
an example of how to use the SDK. Get Feed Prices To open a trade you need the latest feed price. See this example
script on how to get the latest feed prices. python examples/example-get-prices.py See example-get-prices.py for an
example of how to use the SDK. Get Balance of an Address See this example script on how to get the latest feed prices.
python examples/example-get-balance.py See example-get-balance.py for an example of how to use the SDK. Run an example
from local install pip uninstall ostium-python-sdk && pip install -e . && python
examples/example-pairs-details.py Project details Verified details These details have been verified by PyPI Maintainers
amiostium Unverified details These details have not been verified by PyPI Project links Homepage Meta License: MIT
License Author: ami@ostium.io Requires: Python >=3.8 Provides-Extra: dev Classifiers Development Status 3 - Alpha
Intended Audience Developers License OSI Approved :: MIT License Programming Language Python :: 3 Python :: 3.8 Release
history Release notifications | RSS feed This version 3.3.1 Jul 22, 2026 3.3.0 Jul 9, 2026 3.2.1 May 3, 2026 3.2.0 Apr
27, 2026 3.1.1 May 3, 2026 3.1.0 Feb 15, 2026 3.0.1 Dec 11, 2025 3.0.0 Oct 15, 2025 2.0.22 Oct 15, 2025 2.0.21 Sep 5,
2025 2.0.20 Aug 27, 2025 2.0.19 Aug 25, 2025 2.0.18 Jun 23, 2025 2.0.17 Jun 3, 2025 2.0.16 May 31, 2025 2.0.15 May 28,
2025 2.0.14 May 28, 2025 2.0.13 May 28, 2025 2.0.12 May 28, 2025 2.0.11 May 28, 2025 2.0.10 May 27, 2025 2.0.6 May 27,
2025 2.0.5 May 26, 2025 2.0.4 May 26, 2025 2.0.3 Mar 6, 2025 2.0.2 Mar 6, 2025 2.0.1 Mar 5, 2025 2.0.0 Mar 4, 2025
0.2.107 Feb 27, 2025 0.2.106 Feb 27, 2025 0.2.105 Feb 27, 2025 0.2.104 Feb 27, 2025 0.2.103 Feb 27, 2025 0.2.101 Feb 27,
2025 0.2.100 Feb 26, 2025 0.2.1 Feb 21, 2025 0.2.0 Feb 20, 2025 0.1.42 Jan 14, 2025 0.1.41 Jan 14, 2025 0.1.40 Jan 14,
2025 0.1.38 Jan 14, 2025 0.1.37 Jan 14, 2025 0.1.36 Jan 14, 2025 0.1.35 Jan 14, 2025 0.1.34 Jan 14, 2025 0.1.33 Jan 14,
2025 0.1.32 Jan 13, 2025 0.1.31 Jan 13, 2025 0.1.29 Jan 13, 2025 0.1.28 Jan 13, 2025 0.1.27 Jan 13, 2025 0.1.25 Jan 13,
2025 0.1.24 Jan 9, 2025 0.1.23 Jan 6, 2025 0.1.22 Jan 6, 2025 0.1.21 Jan 6, 2025 0.1.20 Jan 6, 2025 0.1.19 Jan 6, 2025
0.1.18 Jan 6, 2025 0.1.16 Jan 6, 2025 0.1.15 Jan 2, 2025 0.1.13 Jan 2, 2025 0.1.12 Jan 2, 2025 0.1.11 Jan 2, 2025 0.1.10
Jan 2, 2025 0.1.9 Jan 2, 2025 0.1.8 Jan 2, 2025 0.1.7 Jan 2, 2025 0.1.6 Jan 2, 2025 0.1.5 Jan 2, 2025 0.1.4 Jan 2, 2025
0.1.3 Jan 2, 2025 Download files Download the file for your platform. If you're not sure which to choose, learn more
about installing packages. Source Distribution ostium_python_sdk-3.3.1.tar.gz (81.9 kB view details) Uploaded Jul 22,
2026 Source Built Distribution Filter files by name, interpreter, ABI, and platform. If you're not sure about the file
name format, learn more about wheel file names. The dropdown lists show the available interpreters, ABIs, and platforms.
Enable javascript to be able to filter the list of wheel files. Copy a direct link to the current filters Copy File name
Interpreter Interpreter py3 ABI ABI none Platform Platform any ostium_python_sdk-3.3.1-py3-none-any.whl (85.4 kB view
details) Uploaded Jul 22, 2026 Python 3 File details Details for the file ostium_python_sdk-3.3.1.tar.gz. File metadata
Download URL: ostium_python_sdk-3.3.1.tar.gz Upload date: Jul 22, 2026 Size: 81.9 kB Tags: Source Uploaded using Trusted
Publishing? No Uploaded via: twine/6.2.0 CPython/3.13.12 File hashes Hashes for ostium_python_sdk-3.3.1.tar.gz Algorithm
Hash digest SHA256 de1ac915768f6eeda3670c9b85d97857c7bfcc1cd08d3cbfc80ce59caf866416 Copy MD5
c1cb1958b8c0476825f6d153807210cb Copy BLAKE2b-256 b3a70452100cdb1b6814afcc05105806423b558bdee0d7b76ef44c88b8a73085 Copy
See more details on using hashes here. File details Details for the file ostium_python_sdk-3.3.1-py3-none-any.whl. File
metadata Download URL: ostium_python_sdk-3.3.1-py3-none-any.whl Upload date: Jul 22, 2026 Size: 85.4 kB Tags: Python 3
Uploaded using Trusted Publishing? No Uploaded via: twine/6.2.0 CPython/3.13.12 File hashes Hashes for
ostium_python_sdk-3.3.1-py3-none-any.whl Algorithm Hash digest SHA256
568b98d793275ef906d6bc820d24ad4c28e5ae8fff7f38fa1feabda8b499d60e Copy MD5 a60783de507c0f63beb6ee76d300be4b Copy
BLAKE2b-256 51847ec454aa0705b32c8dfeb9625b99831f1210dfbdb2017c9302cbe5f76c04 Copy See more details on using hashes here.
Help Installing packages Uploading packages User guide Project name retention FAQs About PyPI PyPI Blog Infrastructure
dashboard Statistics Logos & trademarks Our sponsors Contributing to PyPI Bugs and feedback Contribute on GitHub
Translate PyPI Sponsor PyPI Development credits Using PyPI Terms of Service Report security issue Code of conduct
Privacy Notice Acceptable Use Policy Status: all systems operational Developed and maintained by the Python community,
for the Python community. Donate today! "PyPI", "Python Package Index", and the blocks logos are registered trademarks
of the Python Software Foundation. © 2026 Python Software Foundation Site map Deployed from 0809a22 Switch to desktop
version English español français 日本語 português (Brasil) українська Ελληνικά Deutsch 中文
(简体) 中文 (繁體) русский עברית Esperanto 한국어 Supported by AWS Cloud computing and Security
Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry
Error logging StatusPage Status page
