OpenBB-finance/OpenBB · error · OpenBBError

The data is unexpectedly empty. -> {query.breakpoint_type}

Error message

The data is unexpectedly empty. -> {query.breakpoint_type}

What it means

Fama-French breakpoints transform guard: the FTP extraction returned no parsed DataFrames (dfs is empty) for the requested breakpoint_type, so there is nothing to transform. This indicates the dataset ZIP/text for that breakpoint type was empty or unparseable, not a bad parameter — parameter choices are validated earlier by the query model.

Source

Thrown at openbb_platform/providers/famafrench/openbb_famafrench/models/breakpoints.py:278

        try:
            return get_breakpoint_data(
                breakpoint_type=query.breakpoint_type,
            )
        except Exception as e:
            raise OpenBBError(e) from e

    @staticmethod
    def transform_data(
        query: FamaFrenchBreakpointQueryParams,
        data: tuple,
        **kwargs: Any,
    ) -> AnnotatedResult[list[FamaFrenchBreakpointData]]:
        """Transform the extracted data."""
        dfs, meta = data

        if not dfs:
            raise OpenBBError(
                f"The data is unexpectedly empty. -> {query.breakpoint_type}"
            )

        df = dfs[0]
        metadata = meta[0]

        if query.start_date:
            df = df[df["date"] >= query.start_date.strftime("%Y-%m-%d")]

        if query.end_date:
            df = df[df["date"] <= query.end_date.strftime("%Y-%m-%d")]

        return AnnotatedResult(
            result=[
                FamaFrenchBreakpointData(**d) for d in df.to_dict(orient="records")
            ],
            metadata={"description": metadata},
        )

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Retry — transient FTP hiccups are common on the Dartmouth host.
  2. Try a different breakpoint_type to confirm the connection/parse path works.
  3. Update the openbb-famafrench provider for current FTP file mappings.
  4. If persistent, verify the expected file exists by browsing the Fama-French data pages manually.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    res = await obb.economy.famafrench.breakpoints(breakpoint_type=bt, provider='famafrench')
except OpenBBError as e:
    if 'unexpectedly empty' in str(e):
        logger.warning('No data for breakpoint_type=%s — skipping', bt)
        res = None
    else:
        raise

Prevention

When it happens

Trigger: Requesting a breakpoint_type whose file on the Fama-French FTP (Dartmouth) server is missing or empty; the downloader fetched a file but parsing yielded zero tables; the FTP server returned an error page that was cached.

Common situations: Fama-French reorganizing their FTP layout; intermittent empty responses from the mirror; provider version lagging a file rename for a niche breakpoint type.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/c0b3af57d8146e56. Report an issue: GitHub.