finance.summary

기본 경로: c.show("BS"), c.show("IS"), c.show("CF") — sections에 통합되어 있으므로 대부분의 경우 이 경로로 충분합니다. 아래 finance 레이어는 Bridge Matching 분석, 분기/반기 재무 등 심화 용도로 내려갈 때 사용합니다.

Extracts financial summary data as time series. While Company’s default public flow is sections -> show -> trace, drop down to the finance.summary layer when you want a deeper look at financial time series. Bridge Matching automatically tracks account name changes to ensure time series continuity.

Usage

Company Shortcut

c = dartlab.Company("005930")

c.BS   # Balance Sheet DataFrame
c.IS   # Income Statement DataFrame

The default public flow is c.show("BS"), but come here when you need Bridge Matching analysis results or quarterly/semi-annual financial summaries.

Public API

c.BS    # Balance Sheet DataFrame
c.IS    # Income Statement DataFrame
c.CF    # Cash Flow Statement DataFrame
c.ratios  # Financial ratios time-series DataFrame

fsSummary() is an internal pipeline function used by Bridge Matching. Use the public properties above for general access.


AnalysisResult

Object containing the full Bridge Matching analysis results.

Key Attributes

AttributeTypeDescription
corpNamestr \| NoneCompany name
nYearsintNumber of analysis years
periodstrAnalysis period ("y", "q", "h")

Financial Statement DataFrames

AttributeTypeDescription
FSpl.DataFrame \| NoneBS + IS combined time series
BSpl.DataFrame \| NoneBalance Sheet
ISpl.DataFrame \| NoneIncome Statement

Bridge Matching Statistics

AttributeTypeDescription
allRatefloat \| NoneOverall match rate (0.0~1.0)
allMatchedintNumber of matched accounts
allTotalintTotal number of accounts
contRatefloat \| NoneLongest continuous segment match rate
nPairsintNumber of bridge pairs
nBreakpointsintNumber of breakpoints
nSegmentsintNumber of continuous segments

Detailed Data

AttributeTypeDescription
segmentslist[Segment]Continuous segment list
breakpointslist[BridgeResult]Breakpoint list
pairResultslist[BridgeResult]Year-by-year matching results
yearAccountsdict[str, YearAccounts]Year-by-year account data

BridgeResult

Account matching result between two adjacent years. Shows how accounts were linked across years.

AttributeTypeDescription
curYearstrCurrent year (e.g., "2024")
prevYearstrPrevious year (e.g., "2023")
ratefloatMatch rate
matchedintNumber of matched accounts
totalintTotal number of accounts
yearGapintYear gap
pairsdict[str, str]Matched pairs (current account name -> previous account name)

Segment

A stable continuous segment between breakpoints. Represents the period during which the account system was maintained consistently.

AttributeTypeDescription
startYearstrStart year
endYearstrEnd year
nYearsintNumber of years
ratefloat \| NoneSegment average match rate

Understanding Bridge Matching

DART disclosure financial summaries may have subtle account name changes from year to year. Bridge Matching automatically tracks the same account by combining amount matching and name similarity.

4-Step Matching Process

2022                    2023                    2024
매출액 ──────────────── 매출액 ──────────────── 수익(매출액)
영업이익 ────────────── 영업이익 ────────────── 영업이익
당기순이익 ──────────── 당기순이익 ──────────── 당기순이익(손실)
  1. Exact match: Link accounts with identical amounts (tolerance within 0.5)
  2. Rewrite match: Amount error within 5% + name similarity 80%+
  3. Name change match: Amount error within 5% + name similarity 60%+
  4. Special item match: Decimal-unit items like EPS

Breakpoint Detection

When the match rate drops below 85%, it is identified as a breakpoint and the segment is split. This automatically finds the point at which corporate mergers, consolidated/separate transitions, or major structural changes occurred.

The Bridge Matching algorithm applies these 4 steps sequentially to attempt account linkage.


Usage Examples

Basic Usage

import dartlab

c = dartlab.Company("005930")

# Company shortcut
print(c.BS)   # Balance Sheet
print(c.IS)   # Income Statement

Bridge Matching Details

Bridge Matching statistics are available through the internal finance.summary pipeline. For most users, the public properties (c.BS, c.IS, c.CF) are sufficient.

# Internal usage (advanced):
result = c.finance.summary

# Overall statistics
print(f"Analysis years: {result.nYears}")
print(f"Match rate: {result.allRate:.1%}")
print(f"Breakpoints: {result.nBreakpoints}")
print(f"Continuous segments: {result.nSegments}")

Year-by-Year Matching Results

for pair in result.pairResults:
    print(f"{pair.prevYear}{pair.curYear}: {pair.rate:.1%} ({pair.matched}/{pair.total})")

Checking Breakpoints

for bp in result.breakpoints:
    print(f"Breakpoint: {bp.prevYear}{bp.curYear} (match rate {bp.rate:.1%})")
    # Which accounts changed
    for cur, prev in bp.pairs.items():
        if cur != prev:
            print(f"  {prev}{cur}")

Continuous Segments

for seg in result.segments:
    print(f"{seg.startYear}~{seg.endYear} ({seg.nYears} years, match rate {seg.rate:.1%})")

Financial Statements

c = dartlab.Company("005930")

print(c.BS)   # Balance Sheet (annual time series)
print(c.IS)   # Income Statement (annual time series)
print(c.CF)   # Cash Flow Statement (annual time series)