Bloomberg-style formulas for energy market data. Live cell functions, change tracking, new data alerts. Not Power Query — real formulas that update in place.
Yes — for data. The add-in can connect directly to your Snowflake for all data functions (ES.Get, ES.Table, ES.ColX, ES.Latest, ES.Search, batching, change tracking, weekly→monthly synthesis). Analytics functions (ES.Forecast, ES.Spread, ES.CrackSpread, ES.Percentile, ES.Seasonal, ES.TermStructure, ES.Breakpoints, ES.Volatility, ES.ARIMA, ES.Prophet, etc.) run on the EnergyScope Flight server and require an API key.
Start free with Snowflake direct for data access. Add the EnergyScope data layer for analytics, shared caching, per-user alerts, and 95% less Snowflake cost.
The only Excel add-in that connects to Snowflake using Arrow Flight — the fastest data transport protocol available. Not accessible to Excel users any other way.
Writes data cell-by-cell with change tracking, weekly→monthly synthesis, Prophet forecasts, and automatic breakpoint detection — all in one column. Only changed cells are written — no screen flicker.
Checks every 30 seconds if your series have new data. The ribbon shows "NEW DATA (3)" in bold. You decide when to refresh — no surprises, no stale data.
200 formulas on a sheet? One gRPC call fetches all 200 series. 200ms debounce collects everything, one batch, one network round trip. The server knows your history and pre-fetches your data before you even click Refresh.
Data retrieval, date alignment, utilities, settings. Work whether you connect to your own Snowflake or to the EnergyScope Flight server.
Analytics run server-side (statsmodels, scipy, arch, Prophet, ruptures, sklearn). Require an EnergyScope Flight API key.
ES.Table, ES.Col, ES.ColX, and ES.Interpolate all accept a fill parameter to control how missing values are handled.
| Fill | Method | Best for |
|---|---|---|
"ffill" | Forward-fill last known value (default, like Bloomberg BDH) | Most use cases — carry forward until new data |
"linear" | Linear interpolation between known values | Smooth gaps in regularly-spaced data |
"log-linear" | Log-linear interpolation (exponential growth) | Price data, indices, ratios |
"spline" | Cubic spline (Catmull-Rom) — smooth curves through known points | Smooth series with few gaps |
"blank" | Empty cells | Show gaps explicitly |
"#N/A" | #N/A errors | Propagate errors in downstream formulas |
0 | Fill with zero (or any number) | Accumulations, sums |
Interpolation runs server-side — all clients (Excel, Python, C#) get the same results. Use =ES.Interpolate() for standalone gap-filling with interpolated flag per value.
ES.Col and ES.ColX automatically synthesise weekly data into monthly when your date column is monthly. Drop a weekly series column next to, or inline with, your monthly columns — it just works.
| Type | Method | Example |
|---|---|---|
| Flow (production, imports) | Day-weighted average across month boundaries | Weekly crude imports → monthly average |
| Stock (inventories, levels) | Last weekly value + interpolation nudge (trading desk algorithm) | Weekly crude stocks → month-end level |
Synthesised values are highlighted in blue (ES.ColX) so analysts know which numbers are derived vs reported. Mix weekly and monthly series freely in the same workbook.
All analytics run server-side using statsmodels, scipy, arch, Prophet, ruptures, and scikit-learn — no Python installation needed. Results arrive via Arrow Flight in sub-second times. Analysts get institutional-grade time series analysis without leaving their spreadsheet.
| Function | Engine | What you get |
|---|---|---|
| ES.ARIMA | statsmodels ARIMA | Auto model selection (9 candidates), forecast + confidence bands |
| ES.Prophet | Facebook Prophet | Robust forecast with trend + seasonality decomposition |
| ES.Seasonality | statsmodels seasonal_decompose | Trend, seasonal pattern, residual noise — separated cleanly |
| ES.Volatility | arch GARCH(1,1) + rolling | Conditional vol estimate, annualised, with EWMA fallback |
| ES.MIDAS | MIDAS realized variance | Daily→monthly mixed-frequency volatility forecast |
| ES.VAR | statsmodels VAR | Impulse response + Granger causality across multiple series |
| ES.LPIRF | Local projection (Jordà) | Non-parametric IRF — robust to nonlinearity and misspecification |
| ES.HPFilter | Boosted HP filter | Iterated trend/cycle decomposition — cleaner than standard HP |
| ES.Breakpoints | ruptures (PELT/BinSeg) | Regime changes with segment means — COVID, wars, OPEC |
| ES.BubbleTest | GSADF (Phillips-Shi-Yu) | Explosive bubble detection with episode start/end dates |
| ES.ElasticNet | scikit-learn | Variable selection — which series matter for predicting the target? |
| ES.QuantileReg | statsmodels quantile reg | Conditional quantiles (5th–95th) for VaR and tail risk |
| ES.Outliers | Z-score / IQR / Isolation Forest | Flag bad data points in EIA releases automatically |
| ES.Corr | Pearson on aligned periods | N×N correlation matrix — WTI vs Brent vs gasoline in one call |
| ES.Smooth | statsmodels Holt-Winters/ETS | Exponential smoothing + forecast with auto model selection |
| ES.BandPass | Baxter-King / Christiano-Fitzgerald | Extract business cycles at specific frequencies |
| ES.Transform | numpy | Diff, pct, log, logdiff, lag, MA, EMA, cumsum, z-score |
| ES.Interpolate | scipy CubicSpline | Linear, log-linear, spline, cardinal interpolation |
| ES.UnitRoot | ADF / KPSS / Phillips-Perron | Stationarity testing with consensus across 3 tests |
| ES.Cointegration | Johansen / Engle-Granger | Do WTI and Brent move together long-term? |
| ES.ACF | statsmodels ACF/PACF | Autocorrelation + Ljung-Box Q-stats for ARIMA order selection |
Switch between servers from the ribbon dropdown. Data refreshes automatically.
| Server | Address | Use Case |
|---|---|---|
| data (Cloudflare) | https://data.energyscope.io | Production — TLS, port 443, passes firewalls |
| Snowflake-backed | http://server:8835 | Your Snowflake data, accelerated |
| Local / LAN | http://your-server:8815 | On-premise, sub-ms latency |
| Snowflake Direct | snowflake://direct | No Flight server — straight to Snowflake (for benchmarking) |
| Technology | Details |
|---|---|
| Platform | C# .NET 8, ExcelDNA 1.9, single packed .xll (32-bit + 64-bit) |
| Transport | Arrow Flight (gRPC) with lz4/zstd IPC compression |
| Batching | 200ms debounce, all series collected into one gRPC call |
| Caching | Per-epoch cache, pre-fetch on Refresh, series dates tracked per user |
| Async | All functions async via ExcelAsyncUtil — Excel never freezes |
| Compression | Custom Apache Arrow .NET build (PR #285) — lz4/zstd in Arrow IPC |
| Auth | API key via ribbon editbox or =ES.Key(). Saved to registry + workbook. |
| Snowflake Direct | Built-in Snowflake .NET connector for direct SQL queries (no Flight server) |
Start free. Scale when you need to.
US Distillates Supply & Demand workbook, real EIA petroleum data, April 2026
| Mode | 1st Refresh | 2nd Refresh | 3rd Refresh | Notes |
|---|---|---|---|---|
| Snowflake Direct | 2,740ms | 1,991ms | 2,801ms | Every refresh hits Snowflake. Costs credits. |
| EnergyScope + Snowflake | 229ms | 172ms | 181ms | Pre-loaded from Snowflake, served from memory. |
| EnergyScope + Local Data | 153ms | 165ms | 178ms | Local data, lazy year cache. |
15x faster with EnergyScope. Zero ongoing Snowflake credits.
| Free | + Data | + Server | |
|---|---|---|---|
| Refresh speed | 2–3s (every time) | ~180ms (from cache) | ~160ms (from cache) |
| Snowflake credits | Every query | Zero | 95% less |
| 20 analysts | 20x the cost | Shared cache | Shared cache |
| New data alerts | No | Per user | Per user |
| Pre-fetch on login | No | Data ready before you ask | Data ready before you ask |
| Offline | No | Yes | Yes |
| Add-in Free | Add-in + EnergyScope data | Add-in + EnergyScope on your server and data | |
|---|---|---|---|
| What | Excel add-in only | Add-in + our data | Add-in + licensed server |
| Data source | Your Snowflake | EnergyScope hosted | Your Snowflake |
| Data functions (Get, Table, ColX, Latest, Search…) | All | All | All |
| Server-side analytics (Forecast, Spread, CrackSpread, Percentile, Seasonal, TermStructure, Breakpoints, Volatility, ARIMA, Prophet, GARCH, VAR, etc.) | No (requires Flight server) | All | All |
| Batching | Yes (to Snowflake via HTTPS) | Yes (Arrow Flight + lz4) | Yes (Arrow Flight + lz4) |
| Change tracking (ColX) | Yes | Yes | Yes |
| Weekly→monthly synthesis | Yes | Yes | Yes |
| Shared cache | No (per-machine) | Yes | Yes |
| Pre-fetch | No | Yes | Yes |
| New data alerts | No | Yes (per user) | Yes (per user) |
| User history | No | Yes | Yes |
| Offline | No | Yes | Yes |
| Snowflake credits | You pay all | None (our infra) | 95% less |
| Users | 1 | Unlimited | Unlimited |
| Data | Yours only | 2.8M energy series | Yours |
| Price | Free | Subscription | License |
No other Excel add-in uses Arrow Flight + lz4 compression to deliver energy data.
| Product | Excel | Transport | Speed | Price |
|---|---|---|---|---|
| EnergyScope + Server | 64 cell functions | Arrow Flight + lz4 | 153–229ms | Free → License |
| EnergyScope add-in → Snowflake | 19 cell functions (data only) | Snowflake .NET + Arrow | 2,000–2,800ms | Free + SF credits |
| Snowflake (no add-in) | Power Query / ODBC | HTTPS/JSON | slower * | SF credits |
| Bloomberg Terminal | BDH/BDP formulas | Proprietary | Fast | $24K/yr/seat |
| Refinitiv / LSEG | Add-in | REST/JSON | Moderate | $$$$ |
| FactSet | Add-in | Proprietary | Moderate | $$$$ |
| Quandl / Nasdaq | Add-in | REST/JSON | Moderate | $$ |
EnergyScope is the only add-in using Arrow Flight with lz4 compression (custom Apache Arrow .NET PR #285). Binary columnar format, single-call batching, zero JSON parsing.
Single packed .xll — no installer, no dependencies. Download, double-click, done. If Excel blocks it, right-click the file → Properties → Unblock.
Download for Excel 64-bit 32-bit version
Most Excel installations since 2019 are 64-bit (File → Account → About Excel shows which). Then in any cell:
=ES.Key("YOUR_API_KEY")
=ES.Get("PET.RWTC.D", "2024-01-01")
No key yet? Sign up free. Local folder-of-files mode needs no key at all.
Download the add-in, connect to your Snowflake or ours. 77 functions, batching, compression, change tracking — all free.
Download the Add-in Sign Up Free Contact for licensing