Signal Submission
How to submit predictions to SignalNet tournaments.
Submission Methods
1. Web Upload
Upload a CSV file through the Submit page.
2. Python SDK
from signalnet import Tournament
t = Tournament(api_key="your_key")
t.submit(predictions_df, stake=500)
3. REST API
curl -X POST https://api.signalnet.io/v1/signals/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"round_id": 47,
"predictions": [
{"ticker": "AAPL", "prediction": 0.85},
{"ticker": "MSFT", "prediction": 0.72}
],
"stake": 500
}'
Prediction Format
| Field | Type | Range | Required |
|---|---|---|---|
ticker | string | Valid S&P 500 ticker | ✅ |
prediction | float | 0.0 – 1.0 | ✅ |
Rules
- Must include all stocks in the current universe (~503)
- Predictions must be in range [0.0, 1.0]
- No exact ties — each prediction should be unique
- One submission per round per contributor
Validation
When you submit, we validate:
| Check | Description |
|---|---|
| ✅ Coverage | All stocks in universe are present |
| ✅ Range | All predictions between 0.0 and 1.0 |
| ✅ No ties | All prediction values are unique |
| ✅ Format | Valid ticker symbols, numeric predictions |
| ✅ Deadline | Submission before round close time |
| ✅ Stake | Amount between 100 and 10,000 SIGNAL |
Signal Hash
After submission, your predictions are hashed and committed on-chain:
signal_hash = keccak256(sort(predictions) + contributor_address + round_id)
This proves:
- You submitted before the deadline
- Your predictions weren't modified after submission
- No one can retroactively change results
Updating Submissions
You can resubmit before the round deadline. The latest submission replaces the previous one. The on-chain hash is updated accordingly.
After the deadline, submissions are locked and cannot be modified.