A readout to a client's leadership team
Case study

FJ Capital Management automated daily P&L attribution on Microsoft Fabric

Reporting for a $1B+ fund depended on one person running SQL by hand, and Power BI had hit its row limit.

FJ Capital Management

FJ Capital Management · Finance and reporting

4xmore trade history in the live dashboards

The workflow before#

FJ Capital Management manages more than $1B, and its portfolio managers want to know each morning what made and lost money, by manager and by sector. The data to answer that lived in the AlphaDesk order management system, fund administrator files and Excel sheets. One employee ran SQL queries by hand each day and refreshed Power BI, so when that person was out, reporting stopped. The dashboards had also hit the Power BI Pro ceiling of about 350K rows. The team could see only part of its own trading history, which made longer-range attribution questions hard to answer at all.

What we built#

We built a lakehouse in Microsoft Fabric that collects FJ's trade, position and administrator data automatically and turns it into the reports the team reads each morning. The logic that used to live in one person's head is now written down as code. The numbers arrive whether or not anyone is at a desk.

Data that arrives on its own

Pipelines pull trade and position data from the AlphaDesk API and fold in fund administrator files and SQL Server sources. Data moves through bronze, silver and gold layers: raw as received, cleaned and matched, then shaped for reporting. We kept the raw layer intact so any number on a dashboard can be traced back to what the source actually sent.

Attribution that produces itself

Daily P&L attribution by portfolio manager and by sector now runs every morning with no manual step. The attribution rules are version controlled as infrastructure as code, so a change to the logic is reviewed and recorded instead of edited in a query someone runs by hand. That's what removed the key person risk.

Dashboards on the full history

We redesigned the Power BI semantic models to run on all 8 years of history, more than 1.5M rows, without lag. Portfolio managers can now look across the full record instead of a recent slice. We moved the heavy lifting into the lakehouse so the dashboards stay fast as the history grows.

How we delivered it

We started by documenting the existing reporting logic with the employee who ran it, so nothing was lost in translation. Then we built the pipelines and the attribution layer and ran the new reports side by side with the manual ones until they matched. Once the numbers agreed, the manual process was retired.

Before and after#

MeasureBeforeAfter
History in dashboardsAbout 350K rows (Power BI Pro limit)1.5M+ rows, full 8 years
Daily P&L attributionManual SQL and refresh by one employeeAutomated every day, by PM and sector
Key person dependencyOne person held the reporting logicLogic in code, runs without them

What's next#

Trade, position and P&L data now sit in one governed lakehouse. That's the groundwork for an analytics assistant that lets portfolio managers ask about attribution and exposure in plain English, instead of waiting for someone to build a report for them.

ShareLinkedInEmail

Automated extraction from the AlphaDesk API and fund administrator sources lands in Azure Data Lake storage inside Microsoft Fabric, organized as a bronze, silver and gold medallion lakehouse. Existing SQL Server sources were folded into the same pipelines rather than left as a side feed.

Data modeling and attribution logic are version controlled as infrastructure as code. Power BI semantic models were redesigned for the full 1.5M+ row history, removing the Pro capacity bottleneck.

Next step

Let's build the case study we tell next.