Skip to main content

Official Python SDK for STRIGIVAL Trading Strategies Marketplace

Project description

STRIGIVAL Python SDK

Official Python SDK for the STRIGIVAL Trading Strategies Marketplace.

Installation

pip install strigival

Quick Start

from strigival import StrigivalClient, Protocol, TradeAction

# Initialize client
client = StrigivalClient(
    api_url="https://api.strigival.io",
    private_key="0x..."  # Your private key
)

# List available strategies
strategies = client.list_strategies(sort_by="sharpe", limit=10)
for strategy in strategies:
    print(f"{strategy['name']}: Sharpe {strategy['sharpe_ratio']}")

# Get a quote for a swap
quote = client.get_quote(
    vault_address="0x...",
    token_in="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",  # USDC
    token_out="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",  # WETH
    amount=1000_000000,  # 1000 USDC (6 decimals)
    protocol=Protocol.UNISWAP_V3,
    slippage_bps=50,  # 0.5%
)

print(f"Quote: {quote.amount_out} WETH")
print(f"Price impact: {quote.price_impact_bps} bps")
print(f"Gas cost: ${quote.gas_cost_usd}")

# Execute the trade
trade = client.execute_trade(quote, vault_address="0x...")
print(f"Trade executed: {trade.tx_hash}")

Features

  • Authentication: Web3 signature-based authentication
  • Quotes: Get real-time quotes from multiple protocols
  • Trading: Execute trades via your vault
  • Analytics: Access institutional-grade KPIs
  • History: Query trade history and performance

API Reference

StrigivalClient

client = StrigivalClient(
    api_url: str,           # API base URL
    private_key: str,       # Ethereum private key
    timeout: float = 30.0,  # Request timeout
)

Methods

Quotes

# Get a quote
quote = client.get_quote(
    vault_address: str,
    token_in: str,
    token_out: str,
    amount: int,
    protocol: Protocol = Protocol.UNISWAP_V3,
    action: TradeAction = TradeAction.SWAP,
    slippage_bps: int = 50,
)

# List supported protocols
protocols = client.get_protocols()

Trading

# Execute a trade
trade = client.execute_trade(quote, vault_address)

# Get trade history
history = client.get_trade_history(vault_address, limit=50)

# Get trade details
trade = client.get_trade(vault_address, tx_hash)

Vault

# Get vault status
status = client.get_vault_status(vault_address)

# Get authorized tokens
tokens = client.get_authorized_tokens(vault_address)

Analytics

# Get all KPIs
kpis = client.get_kpis(vault_address)
print(f"Sharpe: {kpis.sharpe_ratio}")
print(f"Max DD: {kpis.drawdown.max_drawdown}")

# Get Sharpe ratio
sharpe = client.get_sharpe_ratio(vault_address, period_days=365)

Types

Quote

@dataclass
class Quote:
    quote_id: str
    expires_at: datetime
    amount_in: int
    amount_out: int
    amount_out_min: int
    price: float
    price_impact_bps: int
    estimated_gas: int
    gas_price_gwei: float
    gas_cost_usd: float
    protocol: str
    route: List[str]

Trade

@dataclass
class Trade:
    tx_hash: str
    success: bool
    gas_used: Optional[int]
    amount_in: Optional[int]
    amount_out: Optional[int]
    slippage_actual_bps: Optional[int]
    error: Optional[str]

KPIs

@dataclass
class KPIs:
    sharpe_ratio: float
    sortino_ratio: float
    calmar_ratio: float
    volatility_annual: float
    drawdown: DrawdownInfo
    win_rate: WinRateInfo
    alpha: float
    beta: float

Error Handling

from strigival import (
    StrigivalError,
    AuthenticationError,
    QuoteError,
    TradeError,
    RateLimitError,
)

try:
    quote = client.get_quote(...)
except RateLimitError as e:
    print(f"Rate limited, retry after {e.retry_after}s")
except QuoteError as e:
    print(f"Quote failed: {e.message}")
except StrigivalError as e:
    print(f"Error [{e.code}]: {e.message}")

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strigival-1.0.1.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

strigival-1.0.1-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file strigival-1.0.1.tar.gz.

File metadata

  • Download URL: strigival-1.0.1.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for strigival-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0890c61b6f492aaff950f2440a8b6ac0eda358fb5654d5fa64ec82cc8f48d7d8
MD5 08c936948f3419d85ff531745cd9449c
BLAKE2b-256 095cfe3bb33e2b3b1c4cdc8d08b2828615a206f79f0401ea7eb734fae810ea91

See more details on using hashes here.

File details

Details for the file strigival-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: strigival-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for strigival-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c4a426a8b6b8f1e32affa1e8515ae86f80ca47862c19620cc56c14238eb16e1f
MD5 716183b56fc8a3b8963df676df116940
BLAKE2b-256 537238095e01dc37939309985f19fc45d54673b3c332e54af38a1ebbb39b0244

See more details on using hashes here.

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