#
API
Currently, the API does not implement authentication. For production or public-facing deployments, we strongly recommend integrating a secure method (e.g., API keys, JWT tokens) to control access.
#
Base URL & Environment Variables
http://164.90.156.209/api/testing
#
Delta Calculation
Delta is a volatility measure used to model price uncertainty over time. It represents the average absolute percentage change in price over a given window.
#
Step-by-step:
Step 1: For each pair of consecutive average prices P[t] and P[t+1], compute the absolute percentage change:
delta_t = abs((P[t+1] - P[t]) / P[t])
Mathematically:
deltaₜ = |P[t+1] - P[t]| / P[t]
Step 2: Take a rolling average of delta_t over a window (default: averaging_range = steps / 2). This smooths out short-term noise:
rolling_delta = delta_series.rolling(window=averaging_range).mean()
#
Endpoints
#
POST /calculate-single-probability
#
Description
Calculates the probability that a given asset's price will remain within a specified range (± threshold) for a certain number of time steps, using manually provided inputs.
Request
- Methods: POST
- URL :
/calculate-single-probability
#
Request Body (JSON)
#
Response
#
Success (HTTP 200)
{
"probability_within_range": 0.6781,
"lower_bound": 2089.75,
"upper_bound": 2150.75,
"confidence_interval_80": {
"lower": 2092.11,
"upper": 2159.30
}
}
- Probability_within_range: Predicted chance (in fraction) that the future price will be within the target range.
- Lower_bound / upper_bound: The target range based on the current price and the given threshold.
- Confidence_interval_80: 80% confidence interval computed from the underlying normal distribution.
#
POST /calculate-current-market-probability
#
Description
Computes the probability using live market data. This endpoint retrieves the latest price data, calculates the volatility measure, and then invokes the prediction algorithm.
#
Request
- Method: POST
- URL:
/calculate-current-market-probability
#
Request Body (JSON)
#
Response
The response format is identical to/calculate-single-probability.
Note: This endpoint automatically fetches live data in Uniswap ETH/USDC pool to determine the current price and volatility.
#
POST /test-historical
#
Description
This endpoint runs the prediction model across an entire historical dataset. In addition to returning overall metrics (e.g., average probability, accuracy, interval scores), it includes a debug section with detailed prediction data for selected timestamps.
#
Request
- Method: POST
- URL:
/test-historical
#
Request Body (JSON)
#
Response
{
"overall": {
"processed_rows": 498189,
"average_probability_within_range": 0.6473,
"naive": {
"total": 498189,
"in_wins": 323268,
"naive_accuracy_percentage": 64.89
},
"high_confidence": {
"range_in_total": 39547,
"range_in_wins": 30818,
"range_in_accuracy_percentage": 77.93,
"range_out_total": 50,
"range_out_wins": 46,
"range_out_accuracy_percentage": 92.00
}
},
"static": {
"total": 323268,
"average_probability": 66.99,
"naive_accuracy_percentage": 100.0,
"cases_prob_over_80": 30818,
"cases_prob_under_1": 4
},
"non_static": {
"total": 174921,
"average_probability": 60.52,
"naive_accuracy_percentage": 0.0,
"cases_prob_over_80": 8729,
"cases_prob_under_1": 46
},
"debug": {
"2023-12-28T09:55:00": {
"initial_price": 2392.14,
"future_price": 2402.47,
"delta": 0.00074,
"predicted_probability": 0.4480,
"predicted_range": [2380.18, 2404.10],
"target_range": [2380.18, 2404.10],
"actual_in_range": true},
"2024-03-25T20:27:00": {
"initial_price": 3635.95,
"future_price": 3606.98,
"delta": 0.00046,
"predicted_probability": 0.2429,
"predicted_range": [3642.69, 3691.88],
"target_range": [3617.77, 3654.13],
"actual_in_range": false}
// ... similar entries for other timestamps
}
}
#
Explanation
- Overall: Aggregated metrics for the entire dataset (naive predictions, high‑confidence predictions, etc.).
- Static / non_static: Breakdowns based on the actual behavior:
- Static: Timeframes where the future price remained within the target range.
- Non-static: Timeframes where the future price fell outside the target range.
- Debug: Optional. Contains detailed prediction data (e.g., for timestamps “2023-12-28T09:55:00”, “2024-03-25T20:27:00”, etc.) for advanced debugging and analysis. Debug cells setup manually in the code by request.
#
Datasets
The following historical datasets are available for testing and evaluating the prediction model. Each file contains minute-level price data for the ETH/USDC pair on Uniswap.
#
1.uniswap_eth_usdc_minute_2023-08-01_2024-07-31.csv
Period: August 1, 2023 → July 31, 2024
Chain: Ethereum
Download: 📥 Google Drive Link
#
2. uniswap_eth_usdc_minute_2024-12-31_2025-04-14.csv
Period: December 31, 2024 → April 14, 2025
Chain: Ethereum
Download: 📥 Google Drive Link
#
Error Handling
If an error occurs, the API returns an HTTP 500 status with an error message in JSON format:
{
"error": "Description of error."
}
Check the server logs for more details if you encounter issues.
#
Examples:
Test 1: Request
{
"dataset": "uniswap_eth_usdc_minute_2024-12-31_2025-04-14.csv",
"steps": 240,
"range": 0.01
}
Response
{
"debug": {},
"non_static": {
"average_probability": 42.08178131360263,
"cases_prob_over_80": 8789,
"cases_prob_under_1": 9900,
"total": 61679
},
"overall": {
"average_probability_within_range": 0.5067226948098416,
"high_confidence": {
"range_in_accuracy_percentage": 74.21143745782108,
"range_in_total": 34081,
"range_in_wins": 25292,
"range_out_accuracy_percentage": 68.0225367596537,
"range_out_total": 14554,
"range_out_wins": 9900
},
"naive": {
"in_wins": 81552,
"naive_accuracy_in_range_percentage": 56.93739483770971,
"naive_accuracy_out_range_percentage": 43.06260516229029,
"total": 143231
},
"processed_rows": 143231
},
"static": {
"average_probability": 57.16938444660028,
"cases_prob_over_80": 25292,
"cases_prob_under_1": 4654,
"total": 81552
}
}
Test 2:
Request
{
"dataset": "uniswap_eth_usdc_minute_2024-12-31_2025-04-14.csv",
"steps": 120,
"range": 0.005
}
Response
{
"debug": {},
"non_static": {
"average_probability": 42.14056895283416,
"cases_prob_over_80": 304,
"cases_prob_under_1": 4645,
"total": 77410
},
"overall": {
"average_probability_within_range": 0.46652023281710875,
"high_confidence": {
"range_in_accuracy_percentage": 65.33637400228051,
"range_in_total": 877,
"range_in_wins": 573,
"range_out_accuracy_percentage": 80.40505452657088,
"range_out_total": 5777,
"range_out_wins": 4645
},
"naive": {
"in_wins": 66061,
"naive_accuracy_in_range_percentage": 46.04484529974699,
"naive_accuracy_out_range_percentage": 53.95515470025301,
"total": 143471
},
"processed_rows": 143471
},
"static": {
"average_probability": 51.938526356117066,
"cases_prob_over_80": 573,
"cases_prob_under_1": 1132,
"total": 66061
}
}