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.0.tar.gz (19.7 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.0-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: strigival-1.0.0.tar.gz
  • Upload date:
  • Size: 19.7 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.0.tar.gz
Algorithm Hash digest
SHA256 823be1ddeee31706420f37646df9bbdb36ecb683488c8bf0d6ba92fef810204e
MD5 aa4f12cff3289faada7bba28d6f147c9
BLAKE2b-256 8775e3756ea6b3e87a0d87b89c916f805b197729896a0b93db9a890970801323

See more details on using hashes here.

File details

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

File metadata

  • Download URL: strigival-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.9 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a20bf7e11a039a7895a2da9022ad08261773db10546f1ae08edb3b16a5c4f579
MD5 4d51f48c5b99e52bb36b4bcf95346b55
BLAKE2b-256 cda94a7f650eea37550b4fc040442651907230179070c52193cdddd75ed72d91

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