![]() |
VOOZH | about |
dotnet add package FlashAlpha.Historical --version 0.1.0
NuGet\Install-Package FlashAlpha.Historical -Version 0.1.0
<PackageReference Include="FlashAlpha.Historical" Version="0.1.0" />
<PackageVersion Include="FlashAlpha.Historical" Version="0.1.0" />Directory.Packages.props
<PackageReference Include="FlashAlpha.Historical" />Project file
paket add FlashAlpha.Historical --version 0.1.0
#r "nuget: FlashAlpha.Historical, 0.1.0"
#:package FlashAlpha.Historical@0.1.0
#addin nuget:?package=FlashAlpha.Historical&version=0.1.0Install as a Cake Addin
#tool nuget:?package=FlashAlpha.Historical&version=0.1.0Install as a Cake Tool
Official .NET SDK for the FlashAlpha Historical API — point-in-time replay of every live analytics endpoint. Ask what GEX, gamma flip, VRP, narrative, max pain, or the full stock summary looked like at any minute back to 2018-04-16, in the same response shape as the live API.
dotnet add package FlashAlpha.Historical
.NET 8.0+. Same X-Api-Key you use for api.flashalpha.com — Alpha plan or
higher on every endpoint.
using FlashAlpha.Historical;
using var hx = new FlashAlphaHistoricalClient("YOUR_API_KEY");
// One snapshot — what dealer positioning looked like during the COVID crash
var snap = await hx.ExposureSummaryAsync("SPY", "2020-03-16T15:30:00");
Console.WriteLine(snap.GetProperty("regime").GetString());
// → "negative_gamma"
The at parameter accepts strings ("2026-03-05T15:30:00" or
"2026-03-05" → defaults to 16:00 ET) and DateTime overloads.
using FlashAlpha.Historical;
using var hx = new FlashAlphaHistoricalClient(Environment.GetEnvironmentVariable("FLASHALPHA_API_KEY")!);
var bt = new Backtester(hx, Backtester.StockSummaryEndpoint, "SPY");
var results = await bt.RunAsync(
Replay.IterDays(new(2024, 1, 2), new(2024, 3, 29)),
(at, snap) => new
{
Vrp = snap.GetProperty("volatility").GetProperty("vrp").GetDouble(),
Regime = snap.GetProperty("exposure").GetProperty("regime").GetString(),
});
Console.WriteLine($"days replayed: {results.Count}");
await foreach (var step in Replay.RunAsync(
hx, Backtester.ExposureSummaryEndpoint, "SPY",
Replay.IterMinutes(new(2025, 1, 15), new(2025, 1, 15), stepMinutes: 15)))
{
Console.WriteLine($"{step.At} {step.Response.GetProperty("regime").GetString()}");
}
Every analytics method takes a required at string (or DateTime overload):
| Method | Endpoint |
|---|---|
TickersAsync(symbol?) |
/v1/tickers |
StockQuoteAsync(t, at) |
/v1/stockquote/{t} |
OptionQuoteAsync(t, at, expiry?, strike?, type?) |
/v1/optionquote/{t} |
SurfaceAsync(s, at) |
/v1/surface/{s} |
GexAsync(s, at, expiration?, minOi?) |
/v1/exposure/gex/{s} |
DexAsync(s, at, expiration?) |
/v1/exposure/dex/{s} |
VexAsync(s, at, expiration?) |
/v1/exposure/vex/{s} |
ChexAsync(s, at, expiration?) |
/v1/exposure/chex/{s} |
ExposureSummaryAsync(s, at) |
/v1/exposure/summary/{s} |
ExposureLevelsAsync(s, at) |
/v1/exposure/levels/{s} |
NarrativeAsync(s, at) |
/v1/exposure/narrative/{s} |
ZeroDteAsync(s, at, strikeRange?) |
/v1/exposure/zero-dte/{s} |
MaxPainAsync(s, at, expiration?) |
/v1/maxpain/{s} |
StockSummaryAsync(s, at) |
/v1/stock/{s}/summary |
VolatilityAsync(s, at) |
/v1/volatility/{s} |
AdvVolatilityAsync(s, at) |
/v1/adv_volatility/{s} |
VrpAsync(s, at) |
/v1/vrp/{s} |
using FlashAlpha.Historical;
try {
await hx.ExposureSummaryAsync("SPY", "2017-01-01");
}
catch (NoDataException) { /* outside coverage / inside gap */ }
catch (InvalidAtException) { /* 400 invalid_at */ }
catch (TierRestrictedException ex) {
Console.WriteLine($"need {ex.RequiredPlan}, have {ex.CurrentPlan}");
}
| Exception | Status |
|---|---|
FlashAlphaHistoricalException |
base |
AuthenticationException |
401 |
TierRestrictedException |
403 — needs Alpha plan |
InvalidAtException |
400 — bad at format |
NoDataException |
404 — outside coverage / inside gap |
SymbolNotFoundException |
404 — symbol not at this at |
NoCoverageException |
404 — symbol not in historical dataset |
InsufficientDataException |
404 — surface grid too sparse |
RateLimitException |
429 |
ServerException |
5xx |
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on FlashAlpha.Historical:
| Package | Downloads |
|---|---|
|
FlashAlpha.QuantConnect
FlashAlpha options-flow and dealer-positioning data as QuantConnect LEAN custom-data bars. GEX, DEX, VEX, vol surface, 0DTE, VRP, max-pain. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.4.0-rc.10 | 149 | 5/7/2026 |
| 0.4.0-rc.9 | 45 | 5/7/2026 |
| 0.4.0-rc.8 | 51 | 5/7/2026 |
| 0.4.0-rc.7 | 53 | 5/7/2026 |
| 0.4.0-rc.5 | 50 | 5/6/2026 |
| 0.4.0-rc.4 | 49 | 5/6/2026 |
| 0.4.0-rc.2 | 45 | 5/6/2026 |
| 0.4.0-rc.1 | 56 | 5/5/2026 |
| 0.1.0 | 99 | 5/4/2026 |