Matlab Access Datafeed
MathWorksOfficialCreated by MathWorks
- Skill
- Tool integration
- Data and AI
- BSD-2-Clause
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Datafeed Toolbox provides a unified interface for MATLAB users to retrieve data from various external providers, including Bloomberg, FRED, Haver Analytics, LSEG Datastream, NOAA, and US government agencies like the BEA, BLS, Census, and EIA. This skill covers the necessary connection patterns, interface selection, and data retrieval methods for these services, enabling seamless integration of external time-series and market data into MATLAB workflows.
What it does
- Connects to Bloomberg for market and reference data using C++ or REST APIs.
- Retrieves economic time series from the St. Louis Fed (FRED) via the fredrs interface.
- Fetches global economic and financial data from Haver Analytics.
- Accesses historical financial data from LSEG Datastream.
- Retrieves historical climate and weather data from NOAA Climate Data Online.
- Provides interfaces for US government agency data including BEA, BLS, Census, and EIA.
When to use it
- When you need to integrate real-time or historical market data into your MATLAB analysis.
- When performing economic research requiring time series from FRED or Haver Analytics.
- When working with historical financial data from LSEG Datastream.
- When your research requires climate or weather data from NOAA.
- When you need to pull public economic indicators from US government agencies.
Advantages
- Unified access to diverse data sources within the MATLAB environment.
- Supports both local terminal-based connections and platform-independent cloud/REST APIs.
- Provides specific interfaces optimized for different license types and environments.
- Enables programmatic data retrieval for automated research and modeling pipelines.
Usage examples
- “How do I connect to Bloomberg using the recommended C++ interface?”
- Use the bloomberg constructor to initialize the connection, then call getdata to retrieve security information.
- “How can I fetch historical data from LSEG Datastream?”
- Initialize a datastreamws connection object with your credentials and use the history method to retrieve time series data.
- “What is the correct way to get FRED data in MATLAB?”
- Use the fredrs interface, which is the current standard for accessing FRED economic data in MATLAB R2026a and later.
- “How do I access US government data like BLS employment statistics?”
- Use the usbls interface from the GitHub-based collection to query specific employment data series.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/matlab/matlab-access-datafeed/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip matlab-access-datafeed.zip -d .agents/skills
Documentation by MathWorks
Datafeed Toolbox — Bloomberg, FRED, Haver Analytics, LSEG Datastream, NOAA, and US Government Data
Access financial, economic, climate, and government data from multiple providers through the MATLAB Datafeed Toolbox and related GitHub interfaces.
When to Use
User wants to connect to Bloomberg, FRED, Haver Analytics, LSEG Datastream, NOAA, or US government agencies (BEA, BLS, Census, EIA) from MATLAB
User needs to retrieve market data (prices, history, real-time, reference data) via Bloomberg
User needs to retrieve economic time series from the St. Louis Fed (FRED)
User needs to fetch economic/financial time series from Haver Analytics databases
User needs to retrieve historical financial data from LSEG Datastream
User needs help choosing between interfaces within a provider (e.g., bloomberg vs blp vs bloombergHypermedia, haver vs haverview)
User needs to retrieve historical climate or weather data from NOAA Climate Data Online
User needs to retrieve GDP, employment, population, or energy data from US government agencies
User is writing MATLAB code involving securities, economic indicators, climate data, government data, or data provider connectivity
When NOT to Use
General financial modeling or portfolio optimization that doesn't involve data provider connectivity
Bloomberg Terminal keyboard shortcuts or Excel add-in questions (not MATLAB)
Datastream Excel add-in (not MATLAB)
Real-time streaming from LSEG (datastreamws is historical only)
NOAA forecast API (weather.gov) or NOAA CO-OPS tidal data (different services from CDO)
Direct REST/HTTP calls to US government agency APIs without MATLAB
Agency-specific data interpretation (what BLS series IDs mean, Census variable codes, etc.)
Data sources not covered here (e.g., Yahoo Finance)
Installing MATLAB, Datafeed Toolbox, or toolbox products → use
matlab-install-productsQuerying relational databases via SQL, JDBC, or ODBC → use
matlab-use-databaseDebugging generic MATLAB runtime errors not specific to a data provider → use
matlab-debug-code
Provider Overview
| Provider | Data Type | Interfaces | Reference |
|---|---|---|---|
| Bloomberg | Market data (equities, fixed income, derivatives, indices) | bloomberg, blp, bloombergHypermedia, bloombergEMSX | references/bloomberg.md |
| FRED | U.S. economic data (GDP, unemployment, CPI, interest rates) | fredrs (replaces obsolete fred) | references/fred.md |
| Haver Analytics | Global economic & financial data (macro, industry, surveys) | haver, haverdirect, haverview | references/haver.md |
| LSEG Datastream | Historical financial data (equities, indices, economics, expressions) | datastreamws | references/datastreamws.md |
| NOAA CDO | Historical climate/weather data (temperature, precipitation, snowfall) | noaa (GitHub) | references/noaa.md |
| US Government Data | GDP, employment, population, energy (BEA, BLS, Census, EIA) | usbea, usbls, uscensus, useia (GitHub) | references/us-govt-data.md |
Quick Interface Selection
Bloomberg — see references/bloomberg.md for full API patterns
Windows Desktop/Terminal user →
bloomberg(C++)Need platform independence (Data License) →
bloombergHypermediaServer/cloud, no Terminal (BPIPE) →
bloombergBPIPEExisting
blpusers → migrate tobloomberg(same API, no Java needed)
FRED — see references/fred.md for full API patterns
Any platform →
fredrs(requires R2026a+, API key)fredis obsolete — do NOT use it
Haver Analytics — see references/haver.md for full API patterns
Windows with local data files →
haverWindows needing remote access →
haverdirectNon-Windows / server / cloud →
haverview(REST API)
LSEG Datastream — see references/datastreamws.md for full API patterns
Any platform →
datastreamws(REST API, requires Datastream credentials)
NOAA Climate Data Online — see references/noaa.md for full API patterns
Any platform →
noaa(GitHub interface, requires free CDO API token)Clone from
github.com/mathworks/noaaandaddpath— not part of Datafeed Toolbox
US Government Data — see references/us-govt-data.md for full API patterns
BEA →
usbea(GDP, national/regional/international economic accounts)BLS →
usbls(employment, unemployment, CPI, wages)Census Bureau →
uscensus(population, ACS, economic census)EIA →
useia(electricity, petroleum, natural gas, coal)Clone from
github.com/mathworks/Access-Public-US-Government-Data-from-MATLABandaddpath— not part of Datafeed Toolbox
How to Use References
Before generating code for a specific provider, read the corresponding reference file for detailed API patterns, function signatures, gotchas, and examples:
Working with Bloomberg data → read
references/bloomberg.mdWorking with FRED economic data → read
references/fred.mdWorking with Haver Analytics data → read
references/haver.mdWorking with LSEG Datastream data → read
references/datastreamws.mdWorking with NOAA climate/weather data → read
references/noaa.mdWorking with BEA, BLS, Census, or EIA data → read
references/us-govt-data.md
Common Rules
Always use
getSecret()for credentials and API keys — never hardcode secretsBloomberg, FRED, Haver, and Datastream require the Datafeed Toolbox.
fredrsadditionally requires R2026a or laterdatastreamwsavailable since R2018bNOAA is a standalone GitHub interface requiring MATLAB only.
US government data interfaces (
usbea,usbls,uscensus,useia) are available on GitHub only and require MATLAB R2026b+ and Datafeed Toolbox R2026b+Bloomberg and Haver local interfaces (
bloomberg,blp,haver,haverdirect) are Windows-only; cloud/REST variants (bloombergHypermedia,bpipe,haverview,fredrs,datastreamws) are platform-independent
Copyright 2026 The MathWorks, Inc.
Files
- ATTRIBUTION.mdAdded by AutoGineer1.0 KiB
- LICENSELicence file added by AutoGineer1.4 KiB
- SKILL.md6.6 KiB
- manifest.yaml620 B
- references/bloomberg.md11.5 KiB
- references/datastreamws.md3.2 KiB
- references/fred.md4.0 KiB
- references/haver.md4.8 KiB
- references/noaa.md5.8 KiB
- references/us-govt-data.md8.2 KiB
references/bloomberg.md
Bloomberg Interfaces in Datafeed Toolbox
Three Bloomberg interfaces providing market data access through different underlying APIs.
Interface Selection
Decision 1: Which license type?
| License | Interface (Recommended) | Interface (Java — Bring Your Own) |
|---|---|---|
| Bloomberg Desktop/Terminal | bloomberg | blp |
| Bloomberg Server | bloombergServer | blpsrv |
| Bloomberg BPIPE | bloombergBPIPE | bpipe |
| Bloomberg Data License (Hypermedia) | bloombergHypermedia | — |
| Bloomberg EMSX (order execution) | bloombergEMSX | emsx |
Decision 2: C++ vs Java?
Use C++ interfaces (
bloomberg,bloombergServer,bloombergBPIPE) — no additional third-party library setup requiredUse Java interfaces (
blp,blpsrv,bpipe) only if you specifically need Java. Users must supply their own Java runtime and addblpapi3.jarto the MATLAB Java classpathIf a user cannot bring their own Java, they should NOT use the Java interfaces
EMSX interfaces (
bloombergEMSX,emsx) are for order execution workflows, not data retrieval
Decision 3: Data License (Hypermedia)?
bloombergHypermedia is a separate decision path — use it when:
Licensed for Bloomberg Data License (also known as Hypermedia)
Need platform-independent access (no local Bloomberg software)
Running in server/cloud/headless environments
Performing bulk data retrieval
Interfaces
bloomberg (C++ API) — Recommended for Windows users
Uses the Bloomberg C++ API
Windows only (Desktop/Terminal); BPIPE child class is platform independent
Marginally faster than blp
Has child classes for Server/BPIPE licenses
Recommended over blp on Windows
blp (Java API) — Bring Your Own Java
Uses the Bloomberg Java API
Windows only (Desktop/Terminal); BPIPE child class is platform independent
Has child classes for Server/BPIPE licenses
No plan to remove; users must supply their own Java runtime as MATLAB stops bundling it
Behavior identical to
bloomberg(other than different entry point constructors)
bloombergHypermedia (Data License REST API)
Uses the Bloomberg Data License REST API (also known as Hypermedia)
Platform independent
No local Bloomberg software installation required
Suitable for server/cloud/headless deployments and bulk data retrieval
Recommendations
| Use Case | Recommendation |
|---|---|
| Windows Desktop/Terminal user | bloomberg (C++) |
| Non-Windows with BPIPE license | bpipe BPIPE child class |
| Server/cloud, no Terminal | bloombergHypermedia |
Existing blp users | Migrate to bloomberg if possible (same API) |
Key Functions and Patterns
Connecting
% Bloomberg Desktop (C++ — recommended)
b = bloomberg;
% Bloomberg Desktop (Java — requires blpapi3.jar on javaclasspath)
b = blp;
% Bloomberg Server (C++ — recommended)
b = bloombergServer(serverIP);
% Bloomberg BPIPE (C++ — recommended)
b = bloombergBPIPE(serverIP, port, authID);
% Bloomberg Hypermedia (Data License REST)
b = bloombergHypermedia(credentials);
% Always close when done
close(b);Reference Data (getdata)
Retrieve current/static data and bulk fields for securities:
% Single security, single field
[d, sec] = getdata(b, "IBM US Equity", "PX_LAST");
% Multiple securities and fields — use string arrays
[d, sec] = getdata(b, ["IBM US Equity", "MSFT US Equity"], ["PX_LAST", "PX_VOLUME"]);
% With overrides — trailing positional key-value pairs (not a struct or options arg)
[d, sec] = getdata(b, "IBM US Equity", "BEST_EPS", "BEST_FPERIOD_OVERRIDE", "1BF");
% ↑field ↑override name ↑override value
% Multiple overrides — just append more key-value pairs
[d, sec] = getdata(b, "IBM US Equity", "BEST_EPS", ...
"BEST_FPERIOD_OVERRIDE", "1BF", "CRNCY", "USD");
% Historical dividend data (bulk field — use getdata, not history)
[d, sec] = getdata(b, "AAPL US Equity", "DVD_HIST_ALL");Overrides are trailing positional string arguments to getdata — they are NOT a struct, NOT a name-value pair with an 'Override' keyword, and NOT a separate overrides argument.
Note: DVD_HIST_ALL is a bulk reference data field that returns the full dividend history including all corporate actions (special dividends, stock splits, etc.). Always retrieve it with getdata, not history.
Historical Data (history)
Retrieve end-of-day historical data:
% Basic history with date range
[d, sec] = history(b, "IBM US Equity", "PX_LAST", datetime(2024,1,1), datetime(2024,12,31));
% Multiple fields with periodicity
[d, sec] = history(b, "IBM US Equity", ["PX_LAST", "PX_VOLUME"], ...
datetime(2024,1,1), datetime(2024,12,31), ...
["CALENDAR", "DAILY", "ALL_CALENDAR_DAYS", "PREVIOUS_VALUE"]);
% With currency conversion (currency is the argument after periodicity)
[d, sec] = history(b, "AAPL US Equity", "PX_LAST", datetime(2024,1,1), datetime(2024,12,31), ...
["CALENDAR", "DAILY", "ALL_CALENDAR_DAYS", "PREVIOUS_VALUE"], "JPY");Default periodicity is ["ACTUAL", "DAILY", "ACTIVE_DAYS_ONLY", "NIL_VALUE"].
The currency argument is a positional input after periodicity — not a name-value pair or override.
Intraday Data (timeseries)
Retrieve intraday tick data:
% Tick data for today
d = timeseries(b, "IBM US Equity", datetime("today"));
% Tick data for a date range
d = timeseries(b, "IBM US Equity", {datetime(2024,6,1), datetime(2024,6,2)});
% Intraday bars for a specific time window across multiple days
% 3-element daterange: {dates, startTime, endTime} — requires bar interval
dates = (datetime(2024,6,3):datetime(2024,6,7))';
d = timeseries(b, "IBM US Equity", {dates, duration(9,30,0), duration(16,0,0)}, 5, "TRADE");
% Bar data (aggregated) — 5-minute intervals
d = timeseries(b, "IBM US Equity", {datetime(2024,6,1), datetime(2024,6,2)}, 5, "TRADE");
% Tick data with Bloomberg API flags (condition codes, exchange codes, broker codes)
% API flags are passed as two cell arrays of char vectors: flag names and flag values
d = timeseries(b, "F US Equity", {datetime(2024,6,1), datetime(2024,6,2)}, ...
[], "Trade", ...
{'includeConditionCodes', 'includeExchangeCodes', 'includeBrokerCodes'}, ...
{'true', 'true', 'true'});Bloomberg API flags for timeseries are passed as two trailing cell arrays of char vectors (single-quoted) — one for flag names, one for flag values. Do NOT use string scalars (double-quoted) inside the cell arrays — {"flagName"} fails the internal ischar validation; use {'flagName'} instead. The bar interval argument (empty [] for tick data) and event type must precede the flag arguments.
Bloomberg Hypermedia Workflow (Data License)
The bloombergHypermedia interface uses a multi-step workflow: create resources (universe, field list, trigger), assemble them into a request, then retrieve data.
% Connect with JSON credentials (contains client_id and client_secret), secret is user defined
b = bloombergHypermedia(getSecret("bhapicredentials"));
% Your account catalog ID
catalog = "myAccountId";
% Step 1: Create a Universe (securities)
uPayload.type = "Universe";
uPayload.identifier = "u" + bloombergHypermedia.generateResourcePostfix;
uPayload.title = "My Universe";
uPayload.description = "Equity universe";
uPayload.contains{1}.type = "Identifier";
uPayload.contains{1}.identifierType = "TICKER";
uPayload.contains{1}.identifierValue = "IBM US Equity";
uPayload.contains{2}.type = "Identifier";
uPayload.contains{2}.identifierType = "TICKER";
uPayload.contains{2}.identifierValue = "AAPL US Equity";
universeID = createUniverse(b, catalog, uPayload);
% Step 2: Create a Field List
fPayload.type = "DataFieldList";
fPayload.identifier = "f" + bloombergHypermedia.generateResourcePostfix;
fPayload.title = "My Fields";
fPayload.description = "EOD price fields";
fPayload.contains(1).mnemonic = "PX_LAST";
fPayload.contains(2).mnemonic = "PX_OPEN";
fPayload.contains(3).mnemonic = "PX_HIGH";
fPayload.contains(4).mnemonic = "PX_LOW";
fieldListID = createFieldList(b, catalog, fPayload);
% Step 3: Create a Trigger (optional — defaults to immediate submit)
tPayload.type = "SubmitTrigger";
tPayload.identifier = "t" + bloombergHypermedia.generateResourcePostfix;
tPayload.title = "Submit Now";
tPayload.description = "Immediate submission";
triggerID = createTrigger(b, catalog, tPayload);
% Step 4a: Create a Reference Data Request (ties universe + field list + trigger)
requestID = createRequest(b, catalog, universeID, fieldListID, triggerID);
% or use default trigger
requestID = createRequest(b, catalog, universeID, fieldListID);
% Step 4b: Create a Historical Data Request (requires full payload with runtime options)
reqPayload.identifier = "r" + bloombergHypermedia.generateResourcePostfix;
reqPayload.title = "My History Request";
reqPayload.description = "Daily historical prices";
reqPayload.universe = strcat(b.URL, "/eap/catalogs/", catalog, "/universes/", universeID);
reqPayload.fieldList = strcat(b.URL, "/eap/catalogs/", catalog, "/fieldLists/", fieldListID);
reqPayload.trigger = strcat(b.URL, "/eap/catalogs/bbg/triggers/oneshot/");
reqPayload.formatting.type = "HistoryFormat";
reqPayload.formatting.dateFormat = "yyyymmdd";
reqPayload.formatting.fileType = "unixFileType";
reqPayload.formatting.displayPricingSource = true;
reqPayload.runtimeOptions.type = "HistoryRuntimeOptions";
reqPayload.runtimeOptions.historyPriceCurrency = "USD";
reqPayload.runtimeOptions.period = "daily";
reqPayload.runtimeOptions.dateRange.type = "IntervalDateRange";
reqPayload.runtimeOptions.dateRange.startDate = string(datetime("today") - calyears(1), "yyyy-MM-dd");
reqPayload.runtimeOptions.dateRange.endDate = string(datetime("today"), "yyyy-MM-dd");
reqPayload.pricingSourceOptions.type = "HistoryPricingSourceOptions";
reqPayload.pricingSourceOptions.exclusive = true;
requestID = createRequest(b, catalog, reqPayload);
% Step 5: Retrieve data
requestDate = string(datetime("today", "Format", "yyyyMMdd"));
data = getData(b, catalog, requestID, requestDate);
close(b);Reference vs. Historical requests: For reference/bulk data (e.g., DVD_HIST_ALL), use the simple createRequest(b, catalog, universeID, fieldListID). For historical time series data (e.g., daily PX_LAST over a date range), build a full request payload with HistoryRuntimeOptions specifying period, date range, and currency. The oneshot trigger at "/eap/catalogs/bbg/triggers/oneshot/" submits immediately.
Output Format Properties
b = bloomberg;
b.DataReturnFormat = "timetable"; % 'table', 'timetable', or default (struct/cell)
b.DatetimeType = "datetime"; % use datetime instead of datenumCode Generation: Input Types
When generating code for bloomberg/blp methods, do not use cell arrays of strings for list inputs:
% OK — string arrays
securities = ["IBM US Equity", "MSFT US Equity"];
% OK — char vectors and cellstr
securities = {'IBM US Equity', 'MSFT US Equity'};
% WRONG — cell arrays of strings (fails internal validation)
securities = {"IBM US Equity", "MSFT US Equity"};The methods accept char, string, or cellstr — but cell arrays of strings ({"a","b"}) fail the internal ~ischar(s{1}) check.
Notes
blpandbloombergprovide identical functionality and methods — migration is a drop-in replacementblpremains available; users must provide their own Java runtime once MATLAB stops bundling itOnly BPIPE child classes and bloombergHypermedia are platform independent
Copyright 2026 The MathWorks, Inc.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- MathWorks
- Publisher
- MathWorks (Official)
- Source
- matlab/matlab-agentic-toolkit · skills-catalog/computational-finance/matlab-access-datafeed · commit 2a7f215
- Licence
- BSD 2-Clause License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-access-datafeed.zip