Get First Passage Time analysis
curl --request GET \
--url https://api.example.com/api/graph/v1/stocks/{symbol}/fptimport requests
url = "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/stocks/{symbol}/fpt', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/stocks/{symbol}/fpt")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/stocks/{symbol}/fpt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"current_price": 180.5,
"data_quality": "complete",
"event_risk": {
"days_to_earnings": 18,
"earnings_within_horizon": false
},
"standard_scenarios": {
"ib_15x_down": {
"direction": "down",
"level": 176,
"level_type": "ib_extension",
"median_days": 2.1,
"p75_days": 3.8,
"p90_days": 6.5,
"probability": 0.58
},
"ib_15x_up": {
"direction": "up",
"level": 185,
"level_type": "ib_extension",
"median_days": 2.3,
"p75_days": 4.1,
"p90_days": 7.2,
"probability": 0.65
},
"pivot_r1": {
"direction": "up",
"level": 188,
"level_type": "pivot",
"median_days": 3.1,
"p75_days": 5.5,
"p90_days": 9.2,
"probability": 0.48
}
},
"symbol": "NVDA",
"timeframe_fit": "GOOD",
"volatility": {
"rvol_adjustment": 1.15,
"source": "Garman-Klass HV",
"value": 0.42,
"window_days": 20
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Stocks
Get First Passage Time analysis
Get First Passage Time (FPT) probabilistic timing analysis for a stock.
## What is FPT?
FPT provides probabilistic estimates for how long it will take price to reach
target levels, accounting for:
- Current volatility (Garman-Klass estimator with RVOL adjustment)
- Two-barrier race (target vs stop loss)
- Standard institutional levels (IB extensions, pivots, VWAP bands)
## Pre-computed Scenarios
All FPT data is pre-computed by the Go pattern-detector and stored in the graph.
Standard scenarios include:
- **IB 1.5x Extensions**: Initial Balance extensions (intraday targets)
- **Pivot Levels**: R1/S1 pivot targets
- **VWAP Bands**: VWAP +/- 1 standard deviation
## Response Fields
- **volatility**: Garman-Klass historical volatility context
- **standard_scenarios**: Pre-computed FPT for institutional levels
- **timeframe_fit**: Classification (EXCELLENT/GOOD/MODERATE/EXTENDED/LONG)
- **event_risk**: Earnings within FPT horizon warning
## Timeframe Fit Classification
- **EXCELLENT**: Median < 2 days (day trade / swing entry)
- **GOOD**: Median 2-5 days (swing trade)
- **MODERATE**: Median 5-10 days (swing / position)
- **EXTENDED**: Median 10-20 days (position trade)
- **LONG**: Median > 20 days (investment horizon)
## Performance Target
<100ms response time (reads pre-computed data from graph).
GET
/
api
/
graph
/
v1
/
stocks
/
{symbol}
/
fpt
Get First Passage Time analysis
curl --request GET \
--url https://api.example.com/api/graph/v1/stocks/{symbol}/fptimport requests
url = "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/graph/v1/stocks/{symbol}/fpt', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/stocks/{symbol}/fpt"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/graph/v1/stocks/{symbol}/fpt")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/stocks/{symbol}/fpt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"current_price": 180.5,
"data_quality": "complete",
"event_risk": {
"days_to_earnings": 18,
"earnings_within_horizon": false
},
"standard_scenarios": {
"ib_15x_down": {
"direction": "down",
"level": 176,
"level_type": "ib_extension",
"median_days": 2.1,
"p75_days": 3.8,
"p90_days": 6.5,
"probability": 0.58
},
"ib_15x_up": {
"direction": "up",
"level": 185,
"level_type": "ib_extension",
"median_days": 2.3,
"p75_days": 4.1,
"p90_days": 7.2,
"probability": 0.65
},
"pivot_r1": {
"direction": "up",
"level": 188,
"level_type": "pivot",
"median_days": 3.1,
"p75_days": 5.5,
"p90_days": 9.2,
"probability": 0.48
}
},
"symbol": "NVDA",
"timeframe_fit": "GOOD",
"volatility": {
"rvol_adjustment": 1.15,
"source": "Garman-Klass HV",
"value": 0.42,
"window_days": 20
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Response
FPT analysis
Complete FPT analysis for a symbol.
Provides probabilistic timing estimates for reaching standard institutional levels based on current volatility and price position.
Stock ticker symbol
Current stock price
Required range:
x >= 0Volatility context used for calculations
Show child attributes
Show child attributes
Pre-computed FPT for standard institutional levels
Show child attributes
Show child attributes
Best timeframe classification based on FPT estimates
Available options:
EXCELLENT, GOOD, MODERATE, EXTENDED, LONG Event risk assessment within FPT horizon
Show child attributes
Show child attributes
Data quality indicator: complete, partial, stale, unavailable