Am I Making Money? PNL vs Balances vs My Broker

I am attempting validate the output of the PNL feature and need some clarity. Here's the situation:

When I run the pnl function I see the following PNL:

When I look at Balances for this account and manually calculate PNL, this is result:
(I promise they're all the same account)

There is no other trading happening on this paper account. My questions are as follows:

  1. Why wouldn't these two numbers match (or at least be close)?
  2. How does the PNL feature Calculate PNL?
  3. How should the PNL report be verified?
    4.Is there something I am missing about how this feature functions?
  4. Am I correct in that the balances function checks the connected account values (NLV, Margin, etc.) at 11:59pm before the following day starts? And could therefore be relied upon as a starting balance for the trading day.

Currently, I cannot tell within Quantrocket if I am making or losing money. When I look at my broker's report for this account, I can see a PNL closer to the PNL in the balances but its still off by about $100 USD.


PNL is calculated from executions. You can query your executions for a more granular look at the trade executions used to calculate PNL. See the usage guide and API Reference. PNL calculation is described in the docs.

QuantRocket PNL shows the PNL for the order_refs and accounts you are querying. You’re not filtering by account in your screenshot so the results that are returned reflect all accounts in which you have traded the specified order refs. That could explain the difference if you have multiple accounts where you’ve traded these order refs. Your Alpaca balance reflects all trading and non-trading activity within a single account. Another source of difference would be if you’ve traded multiple order refs in this Alpaca account and aren’t querying all of them. A more apples-to-apples comparison would be to query PNL for just this account, omitting the order_refs filter.

Ultimately, if you want to fully reconcile the two and figure out why they’re different, you would need to compare your QuantRocket executions (which the blotter gets from your broker) to your activity log (including non-trade activity) from Alpaca.