Time Intelligence in Power BI for Financial Analysis: YTD Returns and Performance Trends

To Share 2026 - Content Fb + Web (8)


Time Intelligence trong Power BI là công cụ không thể thiếu cho Financial Analysis — giúp bạn tính toán YTD Returns, so sánh Year-over-Year Growth, và phát hiện xu hướng hiệu suất đầu tư theo thời gian. Nếu bạn đang làm việc với dữ liệu tài chính và muốn xây dựng dashboard phân tích chuyên nghiệp, việc nắm vững Time Intelligence Power BI Financial Analysis là bước đi bắt buộc.

Bài viết này sẽ hướng dẫn bạn từng bước ứng dụng Time Intelligence trong Power BI cho financial analysis — từ việc thiết lập Date Table chuẩn, viết các công thức DAX cho YTD Returns, đến cách phát hiện Performance Trends trên dashboard Power BI.

Series “Financial Data Analytics with Power BI” — by MCNA Technology School.



📌 Đây là bài số 8 trong series Power BI Financial Analytics tại MCNA:



Mục Lục

  1. Time Intelligence là gì và tại sao quan trọng trong Financial Analysis?
  2. Xây dựng Date Table — Nền tảng của Time Intelligence trong Power BI
  3. Tính YTD Returns với Time Intelligence Power BI cho Financial Analysis
  4. So sánh hiệu suất cùng kỳ năm trước (YoY Analysis)
  5. Rolling Returns — Time Intelligence Power BI phân tích xu hướng
  6. MTD và QTD — Theo dõi hiệu suất ngắn hạn
  7. Xử lý Fiscal Year
  8. Debugging — Khi Time Intelligence trả về BLANK
  9. Dashboard Financial Analysis với Time Intelligence trong Power BI
  10. Best Practices — Tối ưu Time Intelligence Power BI cho Financial Analysis



1. Time Intelligence là gì và tại sao quan trọng trong Financial Analysis?

Time Intelligence là tập hợp các hàm DAX cho phép bạn thao tác và phân tích dữ liệu dựa trên ngữ cảnh thời gian — so sánh giữa các tháng, quý, năm mà không cần phải viết logic phức tạp thủ công. Khi kết hợp Time Intelligence trong Power BI cho financial analysis, bạn có thể trả lời mọi câu hỏi về hiệu suất đầu tư mà stakeholder đặt ra:

  • YTD Returns: Danh mục đầu tư đã sinh lời bao nhiêu phần trăm tính từ đầu năm đến nay?
  • YoY Comparison: Lợi nhuận quý này so với cùng kỳ năm ngoái thay đổi như thế nào?
  • Rolling Performance: Xu hướng 12 tháng gần nhất có đang tăng trưởng bền vững không?
  • MTD / QTD: Portfolio performance trong tháng này hoặc quý hiện tại ra sao?

Nếu không có Time Intelligence, bạn sẽ phải viết hàng chục dòng FILTER lồng nhau — vừa khó đọc, vừa chậm. Với DAX Time Intelligence, chỉ cần 1–2 dòng là đủ.

2. Xây dựng Date Table — Nền tảng của Time Intelligence trong Power BI

Trước khi sử dụng bất kỳ hàm Time Intelligence nào, bạn bắt buộc phải có Date Table chuẩn. Đây là yêu cầu không thể bỏ qua — thiếu Date Table, tất cả hàm TOTALYTD, SAMEPERIODLASTYEAR, DATESYTD đều sẽ trả về kết quả sai hoặc BLANK.

2.1 Tạo Date Table bằng DAX

DateTable = 
ADDCOLUMNS(
    CALENDAR(DATE(2018, 1, 1), DATE(2026, 12, 31)),
    "Year", YEAR([Date]),
    "Quarter", "Q" & FORMAT([Date], "Q"),
    "MonthNumber", MONTH([Date]),
    "MonthName", FORMAT([Date], "MMMM"),
    "YearMonth", FORMAT([Date], "YYYY-MM"),
    "WeekDay", WEEKDAY([Date], 2),
    "IsWeekend", IF(WEEKDAY([Date], 2) > 5, TRUE(), FALSE())
)

2.2 Mark as Date Table

Sau khi tạo xong, bạn cần thực hiện một bước quan trọng: vào Model View → chuột phải vào DateTable → Mark as Date Table → chọn cột Date. Nếu thiếu bước này, Power BI sẽ không kích hoạt đầy đủ các hàm Time Intelligence.

Checklist cho Date Table chuẩn:

  • Chứa tất cả ngày liên tục, không có khoảng trống (gaps)
  • Bắt đầu từ ngày 1 tháng 1 và kết thúc ngày 31 tháng 12
  • Cột Date có kiểu dữ liệu Date và chứa giá trị duy nhất (unique)
  • Đã được “Mark as Date Table” trong Model View
  • Có relationship với Fact Table qua cột ngày tương ứng

3. Tính YTD Returns với Time Intelligence Power BI cho Financial Analysis

YTD (Year-to-Date) Returns là chỉ số cho biết tổng lợi nhuận tích lũy của portfolio từ ngày 1 tháng 1 đến thời điểm hiện tại. Đây là ứng dụng quan trọng nhất của Time Intelligence trong Power BI cho financial analysis — metric mà mọi nhà đầu tư và wealth manager đều cần theo dõi hàng ngày.

3.1 Cách 1: TOTALYTD — Đơn giản và trực tiếp

Portfolio Return YTD = 
TOTALYTD(
    SUM(PortfolioReturns[ReturnAmount]),
    DateTable[Date]
)

Cú pháp của TOTALYTD rất ngắn gọn: chỉ cần truyền vào expression cần tính (ở đây là tổng Return Amount) và cột Date. Hàm sẽ tự động filter lấy tất cả ngày từ đầu năm đến ngày cuối cùng trong filter context hiện tại.

3.2 Cách 2: CALCULATE + DATESYTD — Linh hoạt hơn

Portfolio Return YTD v2 = 
CALCULATE(
    SUM(PortfolioReturns[ReturnAmount]),
    DATESYTD(DateTable[Date])
)

Cách này cho phép bạn thêm các filter bổ sung vào CALCULATE — hữu ích khi cần kết hợp thêm điều kiện lọc theo fund type, asset class, hoặc manager.

3.3 Khi nào dùng TOTALYTD, khi nào dùng CALCULATE + DATESYTD?

Tiêu chí TOTALYTD CALCULATE + DATESYTD
Độ đơn giản Cú pháp ngắn gọn hơn Dài hơn nhưng rõ ràng
Linh hoạt Hạn chế khi thêm filter Dễ kết hợp thêm điều kiện
Fiscal Year Hỗ trợ qua tham số year_end_date Hỗ trợ tương tự
Performance Nhanh hơn một chút (optimized) Tương đương
Khuyến nghị Dùng cho calendar year chuẩn Dùng khi cần logic phức tạp

3.4 YTD Return Percentage

Để tính phần trăm YTD Return (thay vì giá trị tuyệt đối), bạn cần biết giá trị portfolio đầu năm:

YTD Return % = 
VAR _StartValue = 
    CALCULATE(
        SUM(PortfolioReturns[PortfolioValue]),
        FILTER(
            ALL(DateTable),
            DateTable[Date] = DATE(YEAR(MAX(DateTable[Date])), 1, 1)
        )
    )
VAR _CurrentValue = SUM(PortfolioReturns[PortfolioValue])
RETURN
    DIVIDE(_CurrentValue - _StartValue, _StartValue, 0)

Measure này sử dụng VAR để khai báo biến — một best practice giúp công thức dễ đọc và tối ưu hiệu năng hơn so với việc lặp lại biểu thức.

4. So sánh hiệu suất với cùng kỳ năm trước (YoY Analysis)

Ngoài YTD, một câu hỏi thường gặp trong financial analysis là: “So với cùng kỳ năm ngoái, hiệu suất tăng hay giảm?” Đây chính là bài toán Year-over-Year (YoY).

4.1 Portfolio Return cùng kỳ năm trước

Return Same Period Last Year = 
CALCULATE(
    SUM(PortfolioReturns[ReturnAmount]),
    SAMEPERIODLASTYEAR(DateTable[Date])
)

Hàm SAMEPERIODLASTYEAR tự động dịch chuyển filter context lùi đúng 1 năm. Nếu dashboard đang hiển thị tháng 3/2026, measure này sẽ trả về kết quả của tháng 3/2025.

4.2 Tính YoY Growth %

YoY Growth % = 
VAR _CurrentReturn = SUM(PortfolioReturns[ReturnAmount])
VAR _LastYearReturn = 
    CALCULATE(
        SUM(PortfolioReturns[ReturnAmount]),
        SAMEPERIODLASTYEAR(DateTable[Date])
    )
RETURN
    DIVIDE(
        _CurrentReturn - _LastYearReturn,
        ABS(_LastYearReturn),
        0
    )

Lưu ý sử dụng ABS() ở mẫu số để tránh trường hợp lợi nhuận năm trước là số âm dẫn đến kết quả phần trăm bị đảo ngược.

4.3 YTD so với cùng kỳ YTD năm trước (PYTD)

Prior YTD Return = 
CALCULATE(
    [Portfolio Return YTD],
    SAMEPERIODLASTYEAR(DateTable[Date])
)

Measure này kết hợp YTD và YoY — so sánh tích lũy từ đầu năm nay với tích lũy cùng kỳ năm trước. Rất hữu ích để đánh giá liệu portfolio có đang outperform hay underperform so với benchmark thời gian.

5. Rolling Returns — Time Intelligence Power BI phân tích xu hướng liên tục

Rolling Returns (hay còn gọi là trailing returns) giúp làm mượt biến động ngắn hạn và cho thấy xu hướng thực sự của portfolio.

5.1 Rolling 12-Month Return

Rolling 12M Return = 
CALCULATE(
    SUM(PortfolioReturns[ReturnAmount]),
    DATESINPERIOD(
        DateTable[Date],
        MAX(DateTable[Date]),
        -12,
        MONTH
    )
)

Hàm DATESINPERIOD tạo ra một khoảng ngày 12 tháng tính ngược từ ngày cuối cùng trong filter context. Đây là cách phổ biến nhất để tính trailing returns trong financial reporting.

5.2 Running Total — Tích lũy liên tục

Cumulative Return = 
CALCULATE(
    SUM(PortfolioReturns[ReturnAmount]),
    FILTER(
        ALL(DateTable),
        DateTable[Date] <= MAX(DateTable[Date])
    )
)

Running Total cho thấy tổng tích lũy từ ngày đầu tiên trong dataset đến thời điểm hiện tại — đặc biệt hữu ích khi vẽ biểu đồ đường (line chart) thể hiện đường cong tăng trưởng của portfolio.

6. MTD và QTD — Theo dõi hiệu suất ngắn hạn

Không chỉ cần nhìn bức tranh cả năm, các financial analyst cũng cần theo dõi hiệu suất trong tháng hiện tại (MTD) và quý hiện tại (QTD).

-- Month-to-Date Return
MTD Return = 
TOTALMTD(
    SUM(PortfolioReturns[ReturnAmount]),
    DateTable[Date]
)

-- Quarter-to-Date Return
QTD Return = 
TOTALQTD(
    SUM(PortfolioReturns[ReturnAmount]),
    DateTable[Date]
)

Khi kết hợp cả MTD, QTD, và YTD trên cùng một dashboard, bạn sẽ có cái nhìn đa chiều từ ngắn hạn đến dài hạn — giúp phát hiện sớm các tín hiệu thay đổi xu hướng.

7. Xử lý Fiscal Year — Khi năm tài chính không bắt đầu từ tháng 1

Nhiều tổ chức tài chính có năm tài chính (Fiscal Year) bắt đầu từ tháng 4 hoặc tháng 7 thay vì tháng 1. Để xử lý tình huống này, bạn chỉ cần thêm tham số year_end_date:

-- Fiscal Year ending June 30
Fiscal YTD Return = 
TOTALYTD(
    SUM(PortfolioReturns[ReturnAmount]),
    DateTable[Date],
    "6/30"
)

Tham số "6/30" cho Power BI biết năm tài chính kết thúc vào ngày 30 tháng 6. Khi đó, YTD sẽ tính từ ngày 1 tháng 7 thay vì 1 tháng 1.

Ngoài ra, bạn nên bổ sung các cột FiscalYear, FiscalQuarter, và FiscalMonth vào Date Table để việc filter và visualize trên dashboard chính xác hơn.

8. Debugging — Khi Time Intelligence trả về BLANK hoặc sai kết quả

Đây là phần mà rất nhiều người gặp phải khi mới làm việc với Time Intelligence. Dưới đây là checklist debug:

Triệu chứng Nguyên nhân phổ biến Cách khắc phục
Measure trả về BLANK Date Table chưa được Mark as Date Table Model View → Mark as Date Table
Giá trị YTD không đúng Date Table có khoảng trống (gaps) Đảm bảo mọi ngày liên tục từ 1/1 đến 31/12
SAMEPERIODLASTYEAR = BLANK Không có data cho năm trước Kiểm tra phạm vi dữ liệu Fact Table
Kết quả lạ khi có slicer Filter context xung đột Dùng ALL() để xóa filter không mong muốn
YTD bao gồm ngày tương lai Data chứa ngày trong tương lai Thêm filter DateTable[Date] <= TODAY()

Một tip quan trọng: tránh lồng nhiều hàm Time Intelligence vào nhau (nested). Thay vào đó, tạo từng measure riêng rồi tham chiếu — vừa dễ debug, vừa tối ưu performance.

9. Dashboard Financial Analysis với Time Intelligence trong Power BI

Sau khi đã xây dựng đầy đủ các measures, bước tiếp theo là tổ chức chúng thành một dashboard trực quan. Dưới đây là layout gợi ý cho một Financial Performance Dashboard:

  • KPI Cards (hàng trên cùng): YTD Return %, MTD Return, QTD Return, YoY Growth %
  • Line Chart: Cumulative Return theo thời gian — trục X là tháng, trục Y là giá trị tích lũy
  • Clustered Bar Chart: So sánh Return hiện tại vs cùng kỳ năm trước theo từng tháng
  • Matrix Table: Chi tiết theo Asset Class / Fund — các cột: MTD, QTD, YTD, YoY
  • Slicer: Year, Quarter, Asset Class, Fund Manager

Đặt tất cả measures vào một Display Folder có tên “Time Intelligence” trong Model View để giữ data model gọn gàng và chuyên nghiệp.

10. Best Practices — Tối ưu Time Intelligence Power BI cho Financial Analysis

Sau khi đã nắm vững kỹ thuật, dưới đây là những best practices giúp bạn viết DAX Time Intelligence sạch, nhanh, và dễ bảo trì:

  1. Luôn tạo Date Table riêng: Không dùng date column từ Fact Table làm trục thời gian.
  2. Dùng VAR: Khai báo biến giúp tránh tính toán lặp và tăng readability.
  3. Tách measure nhỏ: Tạo base measure (ví dụ: Total Return) rồi build YTD, YoY, Rolling trên nền đó.
  4. Test edge cases: Kiểm tra tại ranh giới năm, quý, tháng — nơi Time Intelligence thường cho kết quả không mong đợi nếu Date Table không hoàn chỉnh.
  5. Cân nhắc Fiscal vs Calendar year: Nếu tổ chức dùng cả hai, tạo song song hai bộ measures rõ ràng.
  6. Đặt tên measure có ý nghĩa: Portfolio Return YTD rõ ràng hơn Measure1 — điều này giúp đồng đội dễ maintain.
  7. Sử dụng DIVIDE() thay cho phép chia “/”: Tránh lỗi chia cho 0 mà không cần viết IF.

Kết luận

Việc thành thạo Time Intelligence Power BI cho financial analysis không chỉ là biết viết một bộ hàm DAX — nó là khả năng kể câu chuyện hiệu suất tài chính theo thời gian. Từ YTD Returns giúp nhà đầu tư biết portfolio đang ở đâu trong năm, đến YoY Growth cho thấy bức tranh tăng trưởng dài hạn, đến Rolling Returns làm mượt biến động ngắn hạn — tất cả đều là công cụ thiết yếu cho bất kỳ Financial Data Analyst nào.

Hãy bắt đầu từ việc xây dựng một Date Table chuẩn, viết từng measure đơn giản, rồi dần dần kết hợp chúng thành dashboard hoàn chỉnh. Khi bạn thành thạo Time Intelligence trong Power BI, bạn sẽ có khả năng biến dữ liệu tài chính thô thành những insight có giá trị cho financial analysis — đúng cách mà thị trường đang cần.

Bài viết tiếp theo trong series: chúng ta sẽ tìm hiểu cách xây dựng Risk-Adjusted Return Measures (Sharpe Ratio, Sortino Ratio) trong Power BI — kết hợp Time Intelligence với statistical analysis.




Tài liệu tham khảo



Bài viết liên quan tại MCNA




Về tác giả

Triều Đặng — Middle Data Analyst tại MCNA Technology School. Chuyên về Financial Data Analytics, Power BI và Automated Reporting trong lĩnh vực Wealth Management.


Về MCNA Technology School

MCNA Technology School là đơn vị tiên phong đào tạo AI, Big Data, Business Intelligence tại Việt Nam. Chuyên sâu về Power BI, Python, SQL và Data Analytics — đối tác đào tạo của 300+ doanh nghiệp.

Đối tác đào tạo tiêu biểu: Viettel Global, Masan Group, Techcombank, VPBank, Daikin.

Liên hệ & kết nối:

Cơ sở đào tạo:

  • 📍 Hà Nội — CS1: 30 Trung Liệt, Đống Đa, Hà Nội
  • 📍 Hà Nội — CS2: Liền kề 44B, TT2, Văn Quán, Hà Đông, Hà Nội
  • 📍 TP.HCM: The BIB Space, 50B Phan Tây Hồ, Cầu Kiệu, TPHCM

Chỉ mục