Appearance
Trading quickstart
This guide walks you through opening your first position on a pre-IPO valuation event. You'll learn how to set up credentials, configure risk settings, and execute trades.
Key terms
Before diving in, here are the essential concepts:
Glossary
LONG position — A bet that the company's IPO valuation will be higher than current market expectations. You profit when the actual valuation exceeds what the market predicted.
SHORT position — A bet that the company's IPO valuation will be lower than current market expectations. You profit when the actual valuation falls below predictions.
Valuation bands — Price ranges like "$175-200B" or "$200B+". The market assigns a probability to each band. When you trade, your position is spread across these bands based on their probabilities.
Weighted distribution — Instead of betting on a single price, your position is automatically distributed across multiple bands. This gives you exposure to a range of outcomes.
Floor payoff — Your guaranteed minimum return, even in the worst case. For example, a 20% floor means you'll get back at least 20% of your position even if every band goes against you. Higher floors mean more protection but cost more upfront.
What you can do
With Vaulto trading, you can:
- Open LONG or SHORT positions on 17+ pre-IPO events (SpaceX, OpenAI, Stripe, etc.)
- Set your own risk tolerance with configurable floor payoffs
- Monitor positions and P&L in real-time
- Close positions fully or partially at any time
- Verify positions on-chain (Polygon)
Step 1: Prerequisites
Before trading, you need:
- Vaulto API key — Get one from the Dashboard
- Positive account balance — Fund your account with USDC
- Polymarket credentials — Required for order execution (see below)
Step 2: Set up Polymarket credentials
Vaulto executes trades through Polymarket's prediction markets. You need to provide your Polymarket API credentials.
Get credentials from Polymarket
- Go to Polymarket and connect your wallet
- Navigate to Settings > API
- Generate new API credentials (key, secret, passphrase)
- Save them securely — you'll need all three
Store credentials via API
bash
curl -X POST https://api.vaulto.ai/api/trading/credentials \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS" \
-H "Content-Type: application/json" \
-d '{
"apiKey": "your-polymarket-api-key",
"secret": "your-polymarket-secret",
"passphrase": "your-polymarket-passphrase"
}'javascript
await fetch('https://api.vaulto.ai/api/trading/credentials', {
method: 'POST',
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress,
'Content-Type': 'application/json'
},
body: JSON.stringify({
apiKey: polymarketApiKey,
secret: polymarketSecret,
passphrase: polymarketPassphrase
})
});python
import requests
requests.post(
'https://api.vaulto.ai/api/trading/credentials',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
},
json={
'apiKey': polymarket_api_key,
'secret': polymarket_secret,
'passphrase': polymarket_passphrase
}
)Your credentials are encrypted with AES-256-GCM before storage.
Step 3: Configure floor payoffs
Floor payoffs protect your downside. Set them based on your risk tolerance.
Understanding floors
| Floor value | What it means | Trade-off |
|---|---|---|
0.3 (30%) | You keep at least 30% even if all bands lose | Higher entry cost, more protection |
0.2 (20%) | You keep at least 20% in worst case | Balanced approach |
0.1 (10%) | You keep at least 10% in worst case | Lower cost, less protection |
Set your floors
bash
curl -X PUT https://api.vaulto.ai/api/trading/settings \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS" \
-H "Content-Type: application/json" \
-d '{
"floorL": 0.2,
"floorS": 0.2
}'javascript
await fetch('https://api.vaulto.ai/api/trading/settings', {
method: 'PUT',
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress,
'Content-Type': 'application/json'
},
body: JSON.stringify({ floorL: 0.2, floorS: 0.2 })
});python
requests.put(
'https://api.vaulto.ai/api/trading/settings',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
},
json={'floorL': 0.2, 'floorS': 0.2}
)Step 4: Check current pricing
Before trading, see the current market prices and costs.
bash
curl "https://api.vaulto.ai/api/trading/valuation?eventSlug=spacex-ipo" \
-H "x-api-key: YOUR_VAULTO_KEY"javascript
const response = await fetch(
'https://api.vaulto.ai/api/trading/valuation?eventSlug=spacex-ipo',
{ headers: { 'x-api-key': process.env.VAULTO_API_KEY } }
);
const data = await response.json();
console.log('LONG cost:', data.valuation.longCost);
console.log('SHORT cost:', data.valuation.shortCost);python
response = requests.get(
'https://api.vaulto.ai/api/trading/valuation',
params={'eventSlug': 'spacex-ipo'},
headers={'x-api-key': VAULTO_API_KEY}
)
data = response.json()
print(f"LONG cost: {data['valuation']['longCost']}")
print(f"SHORT cost: {data['valuation']['shortCost']}")Example response:
json
{
"event": { "name": "SpaceX IPO", "slug": "spacex-ipo" },
"valuation": {
"longCost": 0.72,
"shortCost": 0.38,
"bestLongReturn": 38.5,
"worstLongReturn": -28.0
},
"bands": [
{ "label": "$200B+", "price": 0.35 },
{ "label": "$175-200B", "price": 0.28 },
{ "label": "$150-175B", "price": 0.22 }
]
}Reading the response:
longCost: 0.72— Opening a $100 LONG position costs ~$72shortCost: 0.38— Opening a $100 SHORT position costs ~$38bestLongReturn: 38.5— Best case, your LONG returns +38.5%worstLongReturn: -28.0— Worst case, your LONG returns -28.0%
Step 5: Open a position
Now let's open a LONG position. This bets that SpaceX's IPO valuation will exceed current expectations.
bash
curl -X POST https://api.vaulto.ai/api/trading/buy \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS" \
-H "Content-Type: application/json" \
-d '{
"eventId": "spacex-ipo",
"side": "LONG",
"amount": 100
}'javascript
const response = await fetch('https://api.vaulto.ai/api/trading/buy', {
method: 'POST',
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress,
'Content-Type': 'application/json'
},
body: JSON.stringify({
eventId: 'spacex-ipo',
side: 'LONG',
amount: 100
})
});
const position = await response.json();
console.log('Position ID:', position.positionId);python
response = requests.post(
'https://api.vaulto.ai/api/trading/buy',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
},
json={
'eventId': 'spacex-ipo',
'side': 'LONG',
'amount': 100
}
)
position = response.json()
print(f"Position ID: {position['positionId']}")Response:
json
{
"positionId": "pos_abc123",
"totalCost": 72.00,
"averagePrice": 0.312,
"orders": [
{ "bandId": "0x1234...", "side": "BUY", "price": 0.35, "size": 35 },
{ "bandId": "0x5678...", "side": "BUY", "price": 0.28, "size": 28 }
]
}Your $100 position is now distributed across multiple valuation bands.
Step 6: Monitor your position
Check current value
bash
curl "https://api.vaulto.ai/api/trading/positions/pos_abc123/value" \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS"javascript
const response = await fetch(
'https://api.vaulto.ai/api/trading/positions/pos_abc123/value',
{
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress
}
}
);
const value = await response.json();
console.log(`P&L: ${value.unrealizedPnlPercent}%`);python
response = requests.get(
'https://api.vaulto.ai/api/trading/positions/pos_abc123/value',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
}
)
value = response.json()
print(f"P&L: {value['unrealizedPnlPercent']}%")List all positions
bash
curl "https://api.vaulto.ai/api/trading/positions" \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS"javascript
const response = await fetch('https://api.vaulto.ai/api/trading/positions', {
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress
}
});
const { positions } = await response.json();
positions.forEach(p => console.log(`${p.eventId}: ${p.unrealizedPnlPercent}%`));python
response = requests.get(
'https://api.vaulto.ai/api/trading/positions',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
}
)
for p in response.json()['positions']:
print(f"{p['eventId']}: {p['unrealizedPnlPercent']}%")Step 7: Close your position
Close the entire position or just a portion.
Close 100%
bash
curl -X POST https://api.vaulto.ai/api/trading/sell \
-H "x-api-key: YOUR_VAULTO_KEY" \
-H "x-user-id: YOUR_WALLET_ADDRESS" \
-H "Content-Type: application/json" \
-d '{
"positionId": "pos_abc123",
"percentage": 100
}'javascript
await fetch('https://api.vaulto.ai/api/trading/sell', {
method: 'POST',
headers: {
'x-api-key': process.env.VAULTO_API_KEY,
'x-user-id': walletAddress,
'Content-Type': 'application/json'
},
body: JSON.stringify({ positionId: 'pos_abc123', percentage: 100 })
});python
requests.post(
'https://api.vaulto.ai/api/trading/sell',
headers={
'x-api-key': VAULTO_API_KEY,
'x-user-id': wallet_address
},
json={'positionId': 'pos_abc123', 'percentage': 100}
)Close 50% (partial)
Change percentage to 50 to close half your position and keep the rest open.
Example: Complete trading flow
Here's a complete example that checks pricing, opens a position, monitors it, and closes it:
python
import requests
import time
API_KEY = 'your-vaulto-api-key'
USER_ID = 'your-wallet-address'
BASE_URL = 'https://api.vaulto.ai'
headers = {'x-api-key': API_KEY, 'x-user-id': USER_ID}
# 1. Check current pricing
pricing = requests.get(
f'{BASE_URL}/api/trading/valuation',
params={'eventSlug': 'spacex-ipo'},
headers=headers
).json()
print(f"LONG cost: {pricing['valuation']['longCost']}")
# 2. Open a $100 LONG position
position = requests.post(
f'{BASE_URL}/api/trading/buy',
headers={**headers, 'Content-Type': 'application/json'},
json={'eventId': 'spacex-ipo', 'side': 'LONG', 'amount': 100}
).json()
position_id = position['positionId']
print(f"Opened position: {position_id}")
# 3. Wait and check value
time.sleep(60)
value = requests.get(
f'{BASE_URL}/api/trading/positions/{position_id}/value',
headers=headers
).json()
print(f"Current P&L: {value['unrealizedPnlPercent']}%")
# 4. Close the position
result = requests.post(
f'{BASE_URL}/api/trading/sell',
headers={**headers, 'Content-Type': 'application/json'},
json={'positionId': position_id, 'percentage': 100}
).json()
print(f"Realized P&L: ${result['realizedPnl']}")Next steps
- Trading API Reference — Complete endpoint documentation
- Authentication — API key setup and trading headers
- Rate Limits — Request limits and best practices
- FAQ — Common questions about trading