Skip to main content

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

FieldTypeRangeRequired
tickerstringValid S&P 500 ticker
predictionfloat0.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:

CheckDescription
✅ CoverageAll stocks in universe are present
✅ RangeAll predictions between 0.0 and 1.0
✅ No tiesAll prediction values are unique
✅ FormatValid ticker symbols, numeric predictions
✅ DeadlineSubmission before round close time
✅ StakeAmount 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.