Skip to main content

Python SDK

The official Python SDK for interacting with SignalNet.

Installation

pip install signalnet-sdk

Authentication

from signalnet import SignalNet

client = SignalNet(api_key="your_api_key")

Generate API keys from Settings → API Keys.

Core Methods

Tournament

# Get current round
round = client.tournament.current_round()

# Get round history
rounds = client.tournament.rounds(limit=20)

# Get specific round
round = client.tournament.get_round(round_id=47)

Features

# Download current round features
features = client.features.download() # Returns pandas DataFrame

# Download historical features (for backtesting)
historical = client.features.download(round_id=42)

# Get feature metadata
meta = client.features.metadata()
print(f"Features: {meta.num_features}, Stocks: {meta.num_stocks}")

Submissions

import pandas as pd

# Create submission
submission = pd.DataFrame({
'ticker': ['AAPL', 'MSFT', 'GOOGL', ...],
'prediction': [0.85, 0.72, 0.63, ...]
})

# Submit with stake
result = client.submit(
predictions=submission,
stake=1000, # SIGNAL tokens
round_id=None # None = current round
)

print(f"Signal hash: {result.signal_hash}")
print(f"Transaction: {result.tx_hash}")

# Check submission status
status = client.submissions.status(round_id=47)

Performance

# Your score history
scores = client.performance.scores(limit=20)

# Detailed round performance
detail = client.performance.round_detail(round_id=47)
print(f"IC: {detail.corr}, TC: {detail.tc}, MMC: {detail.mmc}")

# Cumulative stats
stats = client.performance.summary()
print(f"Avg IC: {stats.avg_ic}, Win Rate: {stats.win_rate}")

Wallet

# Check balance
balance = client.wallet.balance()
print(f"Available: {balance.available} SIGNAL")
print(f"Staked: {balance.staked} SIGNAL")

# Claim rewards
claim = client.wallet.claim_rewards(round_id=45)

Auto-Submit (Coming Soon)

Upload your model once, and it runs automatically every round:

# Upload model for auto-execution
client.auto_submit.upload(
script_path="my_model.py",
default_stake=500,
enabled=True
)

# Check auto-submit status
status = client.auto_submit.status()