GET
all
GET
/v1/market/all
Fetch all market data used in Moby.
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/all \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest() {
try {
const response = await axios.get('https://api.moby.trade/v1/market/all', {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching market data:', error);
}
}
sendRequest();
import requests
def send_request():
url = 'https://api.moby.trade/v1/market/all'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())
send_request()
async function sendRequest() {
try {
const response = await fetch('https://api.moby.trade/v1/market/all', {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching market data:', error);
}
}
sendRequest();
Response Examples
{
"market": {
"BTC": {
"expiries": [...],
"options": {...}
},
"ETH": {
"expiries": [...],
"options": {...}
}
},
"futuresIndices": {...},
"riskFreeRates": {...},
"olpStats": {...},
"options": {...},
"olpGreeks": {...},
"olpAssetAmounts": {...},
"olpUtilityRatio": {...}
}
Properties in the Response
GET
Spot Price
GET
/v1/market/spotPrice
Fetch spot prices of all supported underlying asset in Moby.
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/spotPrice \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest() {
try {
const response = await axios.get('https://api.moby.trade/v1/market/spotPrice', {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching spot price:', error);
}
}
sendRequest();
import requests
def send_request():
url = 'https://api.moby.trade/v1/market/spotPrice'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())
send_request()
async function sendRequest() {
try {
const response = await fetch('https://api.moby.trade/v1/market/spotPrice', {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching spot price:', error);
}
}
sendRequest();
Response Examples
{
"BTC": 59185.00333333333,
"btc": 59185.00333333333,
"ETH": 3110.6466666666665,
"eth": 3110.6466666666665,
"USDC": 1.0000666666666667,
"usdc": 1.0000666666666667
}
GET
instrumentList
GET
/v1/market/instrumentList
Fetch the name of all active and inactive instruments.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/instrumentList \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest() {
try {
const response = await axios.get('https://api.moby.trade/v1/market/instrumentList', {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching instrument list:', error);
}
}
sendRequest();
import requests
def send_request():
url = 'https://api.moby.trade/v1/market/instrumentList'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())
send_request()
async function sendRequest() {
try {
const response = await fetch('https://api.moby.trade/v1/market/instrumentList', {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching instrument list:', error);
}
}
sendRequest();
Response Examples
{
"instruments": {
"active": [...],
"inactive": [...]
},
"updatedAt": 1720575152781
}
GET
instrument
GET
/v1/market/instrument/{instrument_name}
Fetch the information of certain instrument by its name.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/instrument/BTC-10JUL24-57500-P \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
const url = 'https://moby-data.s3.ap-northeast-2.amazonaws.com/market-data.json';
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
axios.get(url, { headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
import requests
url = 'https://moby-data.s3.ap-northeast-2.amazonaws.com/market-data.json'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://moby-data.s3.ap-northeast-2.amazonaws.com/market-data.json';
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
fetch(url, { method: 'GET', headers })
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Response Examples
{
"optionId": "0x000100668e3f8000000000e09c00000000000000000000000000000000000000",
"strikePrice": 57500,
"markIv": 0.4763663587432049,
"markPrice": 133.64147670623424,
"riskPremiumRateForBuy": 0.00030108891800288804,
"riskPremiumRateForSell": 0.013620006349789781,
"delta": -0.2851112950414407,
"gamma": 0.0004545865894053803,
"vega": 5.324574907963104,
"theta": -474.02275519292436,
"isActive": true
}
GET
Forecast Execution Price for Buy Position
GET
/v1/market/forecastExecutionPrice/buy
Keep in mind that the forecasted value is dynamic, so the actual value may differ at the time of trade.
Estimate the execution price for a specific instrument and option contract size for buying position.
Query Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/forecastExecutionPrice/buy?instrument=BTC-19JUL24-66000-P&size=3 \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest() {
try {
const response = await axios.get('https://api.moby.trade/v1/market/forecastExecutionPrice/buy', {
params: {
instrument: 'BTC-19JUL24-66000-P',
size: 3
},
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching forecast execution price:', error);
}
}
sendRequest();
import requests
def send_request():
url = 'https://api.moby.trade/v1/market/forecastExecutionPrice/sell'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
params = {
'instrument': 'BTC-19JUL24-66000-P',
'size': 3
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
send_request()
async function sendRequest() {
try {
const response = await fetch('https://api.moby.trade/v1/market/forecastExecutionPrice/buy?instrument=BTC-19JUL24-66000-P&size=3', {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching forecast execution price:', error);
}
}
sendRequest();
Response Examples
You can estimate the risk premium(RP) and total execution prices through the response.
{
"RP_rate": 0.0030122401844937335,
"G0_delta": -3.076047014405784,
"G0_vega": 146.31805031870834,
"G0_theta": -444.33322715213035,
"G1_delta": -1.4449699935214169,
"G1_vega": 87.62053705108039,
"G1_theta": 398.74707515601676,
"UG_delta": 33.59971322022118,
"UG_vega": 0.3987695145573606,
"UG_theta": 0.8506829912102671,
"forecast": {
"markPrice": 1374.5565772454065,
"size": 3,
"RP": 4.140494557838778,
"singleOptionPrice": 1378.6970718032453,
"totalOptionPrice": 4136.091215409736,
"tradeFee": 59.007534,
"totalExecutionPrice": 4195.098749409736
}
}
Properties in the Response
Additional Context
G0 (Original Greeks):
Represents the initial Greeks (delta
, vega
, theta
) of the existing OLP before any new trade is factored in.
These values are critical for understanding the baseline risk parameters.
G1 (Updated Greeks):
Represents the updated Greeks after accounting for the new trade.
These values reflect the adjusted risk parameters post-trade, showing the immediate impact of the new position.
UG (Unit Greeks):
Scaled and adjusted values of the updated Greeks (G1
).
These normalized values are used for calculating the risk premium rate, taking into account the size of the OLP and other scaling factors.
GET
Forecast Execution Price for Sell Position
GET
/v1/market/forecastExecutionPrice/sell
Keep in mind that the forecasted value is dynamic, so the actual value may differ at the time of trade.
Estimate the execution price for a specific instrument and option contract size for selling position.
Query Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/forecastExecutionPrice/sell?instrument=BTC-19JUL24-66000-P&size=3 \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest() {
try {
const response = await axios.get('https://api.moby.trade/v1/market/forecastExecutionPrice/sell', {
params: {
instrument: 'BTC-19JUL24-66000-P',
size: 3
},
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching forecast execution price:', error);
}
}
sendRequest();
import requests
def send_request():
url = 'https://api.moby.trade/v1/market/forecastExecutionPrice/sell'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
params = {
'instrument': 'BTC-19JUL24-66000-P',
'size': 3
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
send_request()
async function sendRequest() {
try {
const response = await fetch('https://api.moby.trade/v1/market/forecastExecutionPrice/sell?instrument=BTC-19JUL24-66000-P&size=3', {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching forecast execution price:', error);
}
}
sendRequest();
Response Examples
{
"RP_rate": 0.03792843087288748,
"G0_delta": -3.0365582425903628,
"G0_vega": 150.48604291046834,
"G0_theta": -455.133828188879,
"G1_delta": -4.5994947568479,
"G1_vega": 209.77247541582796,
"G1_theta": -1303.9947987846938,
"UG_delta": 90.8652681843935,
"UG_vega": 0.858533916923668,
"UG_theta": 3.071134592865212,
"forecast": {
"markPrice": 1292.3400473676884,
"size": 3,
"RP": 49.016430150849494,
"singleOptionPrice": 1243.3236172168388,
"totalOptionPrice": 3729.970851650516,
"tradeFee": 59.145684,
"totalExecutionPrice": 3789.116535650516
}
}
Response Properties
GET
Option ID by Instrument
GET
/v1/market/optionIdByInstrument/{instrument}
The concepts of optionId and optionTokenId may cause confusion as they are different. Please refer to Appendix 2 for more details.
Fetch the optionId by querying with instrument name.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/optionIdByInstrument/BTC-10JUL24-57500-P \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest(instrument: string): Promise<void> {
try {
const response = await axios.get(`https://api.moby.trade/v1/market/optionIdByInstrument/${instrument}`, {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching option ID by instrument:', error);
}
}
const instrument = 'BTC-10JUL24-57500-P';
sendRequest(instrument);
import requests
def sendRequest(instrument):
url = f'https://api.moby.trade/v1/market/optionIdByInstrument/{instrument}'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
except requests.exceptions.RequestException as e:
print(f'Error fetching option ID by instrument: {e}')
instrument = 'BTC-10JUL24-57500-P'
sendRequest(instrument)
async function sendRequest(instrument) {
const url = `https://api.moby.trade/v1/market/optionIdByInstrument/${instrument}`;
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Error fetching option ID by instrument: ${response.statusText}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
const instrument = 'BTC-10JUL24-57500-P';
sendRequest(instrument);
Response Examples
{
"instrument": "BTC-10JUL24-57500-P",
"optionId": "0x000100668e3f8000000000e09c"
}
GET
A list of Instruments by Option ID
GET
/v1/market/instrumentsByOptionId/{instrument}
The concepts of optionId and optionTokenId may cause confusion as they are different. Please refer to Appendix 2 for more details.
Fetch the instrument list related with optionId.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/instrumentsByOptionId/0x000100668e3f8000000000e09c \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest(optionId: string): Promise<void> {
try {
const response = await axios.get(`https://api.moby.trade/v1/market/instrumentsByOptionId/${optionId}`, {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching instruments by option ID:', error);
}
}
const optionId = '0x000100668e3f8000000000e09c';
sendRequest(optionId);
import requests
def send_request(option_id):
url = f'https://api.moby.trade/v1/market/instrumentsByOptionId/{option_id}'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
except requests.exceptions.RequestException as e:
print(f'Error fetching instruments by option ID: {e}')
option_id = '0x000100668e3f8000000000e09c'
send_request(option_id)
async function sendRequest(optionId) {
const url = `https://api.moby.trade/v1/market/instrumentsByOptionId/${optionId}`;
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Error fetching instruments by option ID: ${response.statusText}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
const optionId = '0x000100668e3f8000000000e09c';
sendRequest(optionId);
Response Examples
{
"optionId": "0x000100668e3f8000000000e09c",
"instruments": [
"BTC-10JUL24-57500-C",
"BTC-10JUL24-57500-P"
]
}
GET
optionTokenId by Instrument Name
GET
/v1/market/optionTokenIdByInstrument/{instrument}/{buyOrSell}
The concepts of optionId and optionTokenId may cause confusion as they are different. Please refer to Appendix 2 for more details.
Fetch the instrument list related with optionId.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/optionTokenIdByInstrument/BTC-10JUL24-57500-P/buy \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest(instrument: string, type: string): Promise<void> {
try {
const response = await axios.get(`https://api.moby.trade/v1/market/optionTokenIdByInstrument/${instrument}/${type}`, {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching option token ID by instrument:', error);
}
}
const instrument = 'BTC-10JUL24-57500-P';
const type = 'buy';
const index = 0;
sendRequest(instrument, type, index);
import requests
def send_request(instrument, type):
url = f'https://api.moby.trade/v1/market/optionTokenIdByInstrument/{instrument}/{type}'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
except requests.exceptions.RequestException as e:
print(f'Error fetching option token ID by instrument: {e}')
instrument = 'BTC-10JUL24-57500-P'
type = 'buy'
index = 0
send_request(instrument, type, index)
async function sendRequest(instrument, type) {
const url = `https://api.moby.trade/v1/market/optionTokenIdByInstrument/${instrument}/${type}`;
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Error fetching option token ID by instrument: ${response.statusText}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
const instrument = 'BTC-10JUL24-57500-P';
const type = 'buy';
sendRequest(instrument, type);
Response Examples
{
"optionTokenId": "0x1769611959806549332523790152232844486013328925062407377440073165073022976",
"instrument": "BTC-10JUL24-57500-P",
"buyOrSell": "buy",
"vaultType": "sVault"
}
GET
A list of Instruments by optionTokenId
GET
/v1/market/instrumentsByOptionTokenId/{optionTokenId}
The concepts of optionId and optionTokenId may cause confusion as they are different. Please refer to Appendix 2 for more details.
Fetch all composed instruments given an optionTokenId.
Path Parameters
Query Examples
curl --request GET \
--url https://api.moby.trade/v1/market/instrumentsByOptionTokenId/0x1769611959806549332523790152232844486013328925062407377440073165073022976 \
--header 'accept: application/json' \
--header 'content-type: application/json'
import axios from 'axios';
async function sendRequest(optionTokenId: string): Promise<void> {
try {
const response = await axios.get(`https://api.moby.trade/v1/market/instrumentsByOptionTokenId/${optionTokenId}`, {
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
console.log(response.data);
} catch (error) {
console.error('Error fetching instruments by option token ID:', error);
}
}
const optionTokenId = '0x1769611959806549332523790152232844486013328925062407377440073165073022976';
sendRequest(optionTokenId);
import requests
def send_request(option_token_id):
url = f'https://api.moby.trade/v1/market/instrumentsByOptionTokenId/{option_token_id}'
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
except requests.exceptions.RequestException as e:
print(f'Error fetching instruments by option token ID: {e}')
option_token_id = '0x1769611959806549332523790152232844486013328925062407377440073165073022976'
send_request(option_token_id)
async function sendRequest(optionTokenId) {
const url = `https://api.moby.trade/v1/market/instrumentsByOptionTokenId/${optionTokenId}`;
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'accept': 'application/json',
'content-type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Error fetching instruments by option token ID: ${response.statusText}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
const optionTokenId = '0x1769611959806549332523790152232844486013328925062407377440073165073022976';
sendRequest(optionTokenId);
Response Examples
{
"optionTokenId": "0x1769611959806549332523790152232844486013328925062407377440073165073022976",
"instruments": ["BTC-10JUL24-57500-P"],
"isBuys": [true],
"strategy": "BuyPut"
}
Last updated