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#
| Measure | Before | After |
|---|---|---|
| History in dashboards | About 350K rows (Power BI Pro limit) | 1.5M+ rows, full 8 years |
| Daily P&L attribution | Manual SQL and refresh by one employee | Automated every day, by PM and sector |
| Key person dependency | One person held the reporting logic | Logic 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.





