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()