Example

Financial Report Sentences

Financial statements from report prose.

← All examples

Specification

$flags: [ 'CASE_INSENSITIVE', 'FLEXIBLE_WHITESPACE' ]

Number:
  Integer: '\d+'
  Decimal: '${Integer}\.${Integer}'

Currency:
  USD: 'USD'
  EUR: 'EUR'
  GBP: 'GBP'

Scale:
  Million: 'million'
  Billion: 'billion'

Metric:
  Revenue: 'revenue'
  NetIncome: 'net income'
  EBITDA: 'EBITDA'
  OperatingMargin: 'operating margin'
  CapitalExpenditure: 'capital expenditure'
  CashAndEquivalents: 'cash and equivalents'
  TotalDebt: 'total debt'

Period:

  $types:
    Number::Integer:
      YearNumber: '\d{4}'
      QuarterNumber: '[1-4]'
    QuarterName: [ 'first', 'second', 'third', 'fourth' ]  
    
  Quarter:
    $fields: { quarterNumber: QuarterNumber, quarterName: QuarterName, year: YearNumber }
    $patterns:
      - 'Q#{quarterNumber} #{year}'
      - 'the #{quarterName} quarter of #{year}'
      - 'the quarter'

  Year:
    $fields: { year: YearNumber }
    $patterns: '(fiscal )?#{year}'

  Relative:
    NextYear: 'next year'

Change:
  $types:
    Direction:
      Increase: 'up'
      Decrease: 'down'
    Basis:
      YearOverYear: 'year over year'
      PriorYear: 'from the prior year'
  $fields: { direction: Direction, percent: Percent, basis: Basis }
  $patterns: '#{direction} #{percent} #{basis}'

ReportedValue:

  Percent:
    $fields: { value: Number }
    $patterns: '#{value}%'
    
  PercentRange:
    $fields: { lower: Percent, upper: Percent }
    $patterns: '#{lower} to #{upper}'

  Monetary:
    $fields: { currency: Currency, amount: Number, scale: Scale }
    $patterns: '#{currency} #{amount} #{scale}'  
    
  MonetaryRange:
    $fields: { lower: Monetary, upper: Monetary }
    $patterns: 'between #{lower} and #{upper}'
    
  Approximation:
    $fields: { reportedValue: ReportedValue }
    $patterns: 'approximately #{reportedValue}'

FinancialStatement:
  $types:
    CapitalizedWord: '[A-Z][A-Za-z]+'
    CompanyName: '${CapitalizedWord}( ${CapitalizedWord})*'

  ActualResult:
    $fields: { company: CompanyName, metric: Metric, value: ReportedValue, period: Period, change: Change }
    $patterns:
      - '#{company} reported #{metric} of #{value} for #{period}(, #{change})?\.'
      - '#{company} posted #{metric} of #{value} in #{period}(, #{change})?\.'

  Guidance:
    $fields: { company: CompanyName, metric: Metric, value: ReportedValue, period: Period }
    $patterns:
      - '#{company} expects #{metric} #{value} for #{period}\.'
      - '#{company} forecast #{metric} of #{value} for #{period}\.'
      - '#{company} guided #{metric} to #{value} #{period}\.'

  BalancePosition:
    $fields: { company: CompanyName, period: Period, metric: Metric, value: ReportedValue }
    $patterns:
      - '#{company} ended #{period} with #{metric} of #{value}\.'
      - '#{company} closed #{period} with #{metric} of #{value}\.'

Sample input

Orion Foods reported revenue of USD 1.24 billion for Q1 2026, up 12% year over year.
Atlas Bank posted net income of EUR 340 million in fiscal 2025, down 4% from the prior year.
Northwind Energy reported EBITDA of USD 780 million for the third quarter of 2026.
Helios Retail expects revenue between USD 4.1 billion and USD 4.3 billion for fiscal 2027.
Mariner Systems forecast operating margin of 18% to 20% for 2026.
BluePeak Telecom guided capital expenditure to approximately GBP 600 million next year.
Aster Motors ended the quarter with cash and equivalents of USD 920 million.
Cedar Robotics closed Q4 2026 with total debt of USD 1.8 billion.

Result

[
  {
    "type": "FinancialStatement::ActualResult",
    "text": "Orion Foods reported revenue of USD 1.24 billion for Q1 2026, up 12% year over year.",
    "start": 0,
    "end": 84,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Orion Foods",
        "start": 0,
        "end": 11
      },
      {
        "type": "Metric::Revenue",
        "field": "metric",
        "text": "revenue",
        "start": 21,
        "end": 28
      },
      {
        "type": "ReportedValue::Monetary",
        "field": "value",
        "text": "USD 1.24 billion",
        "start": 32,
        "end": 48,
        "fields": [
          {
            "type": "Currency::USD",
            "field": "currency",
            "text": "USD",
            "start": 32,
            "end": 35
          },
          {
            "type": "Number::Decimal",
            "field": "amount",
            "text": "1.24",
            "start": 36,
            "end": 40
          },
          {
            "type": "Scale::Billion",
            "field": "scale",
            "text": "billion",
            "start": 41,
            "end": 48
          }
        ]
      },
      {
        "type": "Period::Quarter",
        "field": "period",
        "text": "Q1 2026",
        "start": 53,
        "end": 60,
        "fields": [
          {
            "type": "Number::Integer::QuarterNumber",
            "field": "quarterNumber",
            "text": "1",
            "start": 54,
            "end": 55
          },
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2026",
            "start": 56,
            "end": 60
          }
        ]
      },
      {
        "type": "Change",
        "field": "change",
        "text": "up 12% year over year",
        "start": 62,
        "end": 83,
        "fields": [
          {
            "type": "Direction::Increase",
            "field": "direction",
            "text": "up",
            "start": 62,
            "end": 64
          },
          {
            "type": "ReportedValue::Percent",
            "field": "percent",
            "text": "12%",
            "start": 65,
            "end": 68,
            "fields": [
              {
                "type": "Number::Integer",
                "field": "value",
                "text": "12",
                "start": 65,
                "end": 67
              }
            ]
          },
          {
            "type": "Basis::YearOverYear",
            "field": "basis",
            "text": "year over year",
            "start": 69,
            "end": 83
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::ActualResult",
    "text": "Atlas Bank posted net income of EUR 340 million in fiscal 2025, down 4% from the prior year.",
    "start": 85,
    "end": 177,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Atlas Bank",
        "start": 85,
        "end": 95
      },
      {
        "type": "Metric::NetIncome",
        "field": "metric",
        "text": "net income",
        "start": 103,
        "end": 113
      },
      {
        "type": "ReportedValue::Monetary",
        "field": "value",
        "text": "EUR 340 million",
        "start": 117,
        "end": 132,
        "fields": [
          {
            "type": "Currency::EUR",
            "field": "currency",
            "text": "EUR",
            "start": 117,
            "end": 120
          },
          {
            "type": "Number::Integer",
            "field": "amount",
            "text": "340",
            "start": 121,
            "end": 124
          },
          {
            "type": "Scale::Million",
            "field": "scale",
            "text": "million",
            "start": 125,
            "end": 132
          }
        ]
      },
      {
        "type": "Period::Year",
        "field": "period",
        "text": "fiscal 2025",
        "start": 136,
        "end": 147,
        "fields": [
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2025",
            "start": 143,
            "end": 147
          }
        ]
      },
      {
        "type": "Change",
        "field": "change",
        "text": "down 4% from the prior year",
        "start": 149,
        "end": 176,
        "fields": [
          {
            "type": "Direction::Decrease",
            "field": "direction",
            "text": "down",
            "start": 149,
            "end": 153
          },
          {
            "type": "ReportedValue::Percent",
            "field": "percent",
            "text": "4%",
            "start": 154,
            "end": 156,
            "fields": [
              {
                "type": "Number::Integer",
                "field": "value",
                "text": "4",
                "start": 154,
                "end": 155
              }
            ]
          },
          {
            "type": "Basis::PriorYear",
            "field": "basis",
            "text": "from the prior year",
            "start": 157,
            "end": 176
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::ActualResult",
    "text": "Northwind Energy reported EBITDA of USD 780 million for the third quarter of 2026.",
    "start": 178,
    "end": 260,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Northwind Energy",
        "start": 178,
        "end": 194
      },
      {
        "type": "Metric::EBITDA",
        "field": "metric",
        "text": "EBITDA",
        "start": 204,
        "end": 210
      },
      {
        "type": "ReportedValue::Monetary",
        "field": "value",
        "text": "USD 780 million",
        "start": 214,
        "end": 229,
        "fields": [
          {
            "type": "Currency::USD",
            "field": "currency",
            "text": "USD",
            "start": 214,
            "end": 217
          },
          {
            "type": "Number::Integer",
            "field": "amount",
            "text": "780",
            "start": 218,
            "end": 221
          },
          {
            "type": "Scale::Million",
            "field": "scale",
            "text": "million",
            "start": 222,
            "end": 229
          }
        ]
      },
      {
        "type": "Period::Quarter",
        "field": "period",
        "text": "the third quarter of 2026",
        "start": 234,
        "end": 259,
        "fields": [
          {
            "type": "QuarterName",
            "field": "quarterName",
            "text": "third",
            "start": 238,
            "end": 243
          },
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2026",
            "start": 255,
            "end": 259
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::Guidance",
    "text": "Helios Retail expects revenue between USD 4.1 billion and USD 4.3 billion for fiscal 2027.",
    "start": 261,
    "end": 351,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Helios Retail",
        "start": 261,
        "end": 274
      },
      {
        "type": "Metric::Revenue",
        "field": "metric",
        "text": "revenue",
        "start": 283,
        "end": 290
      },
      {
        "type": "ReportedValue::MonetaryRange",
        "field": "value",
        "text": "between USD 4.1 billion and USD 4.3 billion",
        "start": 291,
        "end": 334,
        "fields": [
          {
            "type": "ReportedValue::Monetary",
            "field": "lower",
            "text": "USD 4.1 billion",
            "start": 299,
            "end": 314,
            "fields": [
              {
                "type": "Currency::USD",
                "field": "currency",
                "text": "USD",
                "start": 299,
                "end": 302
              },
              {
                "type": "Number::Decimal",
                "field": "amount",
                "text": "4.1",
                "start": 303,
                "end": 306
              },
              {
                "type": "Scale::Billion",
                "field": "scale",
                "text": "billion",
                "start": 307,
                "end": 314
              }
            ]
          },
          {
            "type": "ReportedValue::Monetary",
            "field": "upper",
            "text": "USD 4.3 billion",
            "start": 319,
            "end": 334,
            "fields": [
              {
                "type": "Currency::USD",
                "field": "currency",
                "text": "USD",
                "start": 319,
                "end": 322
              },
              {
                "type": "Number::Decimal",
                "field": "amount",
                "text": "4.3",
                "start": 323,
                "end": 326
              },
              {
                "type": "Scale::Billion",
                "field": "scale",
                "text": "billion",
                "start": 327,
                "end": 334
              }
            ]
          }
        ]
      },
      {
        "type": "Period::Year",
        "field": "period",
        "text": "fiscal 2027",
        "start": 339,
        "end": 350,
        "fields": [
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2027",
            "start": 346,
            "end": 350
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::Guidance",
    "text": "Mariner Systems forecast operating margin of 18% to 20% for 2026.",
    "start": 352,
    "end": 417,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Mariner Systems",
        "start": 352,
        "end": 367
      },
      {
        "type": "Metric::OperatingMargin",
        "field": "metric",
        "text": "operating margin",
        "start": 377,
        "end": 393
      },
      {
        "type": "ReportedValue::PercentRange",
        "field": "value",
        "text": "18% to 20%",
        "start": 397,
        "end": 407,
        "fields": [
          {
            "type": "ReportedValue::Percent",
            "field": "lower",
            "text": "18%",
            "start": 397,
            "end": 400,
            "fields": [
              {
                "type": "Number::Integer",
                "field": "value",
                "text": "18",
                "start": 397,
                "end": 399
              }
            ]
          },
          {
            "type": "ReportedValue::Percent",
            "field": "upper",
            "text": "20%",
            "start": 404,
            "end": 407,
            "fields": [
              {
                "type": "Number::Integer",
                "field": "value",
                "text": "20",
                "start": 404,
                "end": 406
              }
            ]
          }
        ]
      },
      {
        "type": "Period::Year",
        "field": "period",
        "text": "2026",
        "start": 412,
        "end": 416,
        "fields": [
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2026",
            "start": 412,
            "end": 416
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::Guidance",
    "text": "BluePeak Telecom guided capital expenditure to approximately GBP 600 million next year.",
    "start": 418,
    "end": 505,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "BluePeak Telecom",
        "start": 418,
        "end": 434
      },
      {
        "type": "Metric::CapitalExpenditure",
        "field": "metric",
        "text": "capital expenditure",
        "start": 442,
        "end": 461
      },
      {
        "type": "ReportedValue::Approximation",
        "field": "value",
        "text": "approximately GBP 600 million",
        "start": 465,
        "end": 494,
        "fields": [
          {
            "type": "ReportedValue::Monetary",
            "field": "reportedValue",
            "text": "GBP 600 million",
            "start": 479,
            "end": 494,
            "fields": [
              {
                "type": "Currency::GBP",
                "field": "currency",
                "text": "GBP",
                "start": 479,
                "end": 482
              },
              {
                "type": "Number::Integer",
                "field": "amount",
                "text": "600",
                "start": 483,
                "end": 486
              },
              {
                "type": "Scale::Million",
                "field": "scale",
                "text": "million",
                "start": 487,
                "end": 494
              }
            ]
          }
        ]
      },
      {
        "type": "Period::Relative::NextYear",
        "field": "period",
        "text": "next year",
        "start": 495,
        "end": 504
      }
    ]
  },
  {
    "type": "FinancialStatement::BalancePosition",
    "text": "Aster Motors ended the quarter with cash and equivalents of USD 920 million.",
    "start": 506,
    "end": 582,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Aster Motors",
        "start": 506,
        "end": 518
      },
      {
        "type": "Period::Quarter",
        "field": "period",
        "text": "the quarter",
        "start": 525,
        "end": 536
      },
      {
        "type": "Metric::CashAndEquivalents",
        "field": "metric",
        "text": "cash and equivalents",
        "start": 542,
        "end": 562
      },
      {
        "type": "ReportedValue::Monetary",
        "field": "value",
        "text": "USD 920 million",
        "start": 566,
        "end": 581,
        "fields": [
          {
            "type": "Currency::USD",
            "field": "currency",
            "text": "USD",
            "start": 566,
            "end": 569
          },
          {
            "type": "Number::Integer",
            "field": "amount",
            "text": "920",
            "start": 570,
            "end": 573
          },
          {
            "type": "Scale::Million",
            "field": "scale",
            "text": "million",
            "start": 574,
            "end": 581
          }
        ]
      }
    ]
  },
  {
    "type": "FinancialStatement::BalancePosition",
    "text": "Cedar Robotics closed Q4 2026 with total debt of USD 1.8 billion.",
    "start": 583,
    "end": 648,
    "fields": [
      {
        "type": "CompanyName",
        "field": "company",
        "text": "Cedar Robotics",
        "start": 583,
        "end": 597
      },
      {
        "type": "Period::Quarter",
        "field": "period",
        "text": "Q4 2026",
        "start": 605,
        "end": 612,
        "fields": [
          {
            "type": "Number::Integer::QuarterNumber",
            "field": "quarterNumber",
            "text": "4",
            "start": 606,
            "end": 607
          },
          {
            "type": "Number::Integer::YearNumber",
            "field": "year",
            "text": "2026",
            "start": 608,
            "end": 612
          }
        ]
      },
      {
        "type": "Metric::TotalDebt",
        "field": "metric",
        "text": "total debt",
        "start": 618,
        "end": 628
      },
      {
        "type": "ReportedValue::Monetary",
        "field": "value",
        "text": "USD 1.8 billion",
        "start": 632,
        "end": 647,
        "fields": [
          {
            "type": "Currency::USD",
            "field": "currency",
            "text": "USD",
            "start": 632,
            "end": 635
          },
          {
            "type": "Number::Decimal",
            "field": "amount",
            "text": "1.8",
            "start": 636,
            "end": 639
          },
          {
            "type": "Scale::Billion",
            "field": "scale",
            "text": "billion",
            "start": 640,
            "end": 647
          }
        ]
      }
    ]
  }
]

Notes

# Financial Report Sentences

Extract structured facts from report-style financial sentences.

## Notice

- `FinancialStatement` has three event-like children: `ActualResult`, `Guidance`, and `BalancePosition`.
- `ReportedValue` groups money, percent, ranges, and approximations under one reusable value concept.
- `Money` exposes `currency`, `amount`, and `scale`; `Percent` exposes its numeric `value`.
- `Period` models years, quarters, and relative periods.
- `YearNumber` and `QuarterNumber` narrow `Number::Integer` inside `Period`.
- `CompanyName` is built from `CapitalizedWord` tokens and used as a role inside statement patterns.

Try changing a reported result into guidance, adding a range, or changing a period from `Q1 2026` to `fiscal 2026`.