Skip to content

Transaction Data Rules ​

Rover Portfolio stores portfolio activity as individual transactions. Those transactions produce positions and can be combined with an imported set of starting positions.

This page is the reference for how imported and entered data is interpreted. For file preparation and examples, start with Importing portfolio data.

Proceeds-based accounting ​

The facility uses proceeds, not cost, as the signed transaction amount:

text
Proceeds = -(Quantity × Price) - Fees
ActivityQuantityProceedsCash effect
BuyPositiveNegativeConsumes cash
SellNegativePositiveGenerates cash
Cash inflowZeroPositiveAdds cash
Cash outflowZeroNegativeRemoves cash

Fees reduce proceeds in every case.

A useful way to remember the signs

Quantity describes the position: buys add units and sells remove units. Proceeds describes cash: money received is positive and money spent is negative.

Trade and cash definitions ​

Trade ​

A trade has:

  • A symbol
  • A non-zero quantity
  • Either a positive price or non-zero proceeds

Sells use a negative quantity. For an initial position import, a short position also uses a negative quantity.

In the Positions view, a negative quantity is labeled Short. Its signed Cost is the negative of the opening short-sale proceeds. If a position snapshot does not include that amount, Rover Portfolio reconstructs the proceeds from the sell transactions that make up the open short quantity. Only a position without either source shows the affected calculations as N/A.

Open short-position calculations use:

Signed Cost = -Opening Short-Sale Proceeds

Cost Per Share = Signed Cost / Short Quantity

Unrealized Gain/Loss = Current Value - Signed Cost

Gain Per Share = Unrealized Gain/Loss / Absolute Quantity

Unrealized Gain/Loss % = Unrealized Gain/Loss / Absolute Signed Cost

Cash transaction ​

A cash transaction has:

  • Quantity of 0
  • Price of 0
  • Non-zero proceeds

A cash transaction with a non-blank Symbol is treated as a dividend. $Cash is reserved for cash transactions.

Symbols ​

  • Symbols may contain no more than 64 characters; a longer symbol causes the transaction to be rejected.
  • Symbols are converted to uppercase.
  • Spaces are preserved.
  • $Cash is reserved for cash transactions.

Check leading, trailing, and embedded spaces before import. Because spaces are preserved, BRK B and BRKB remain different values.

Source and identifier ​

Source and Identifier values may contain up to 64 characters. Longer values are truncated rather than rejected.

These fields are especially useful when imported activity must be traced back to a broker, institution, statement, or external record.

Supported number formats ​

The parser accepts common US number formats:

text
12345.67
12,345.67
$12345.67
$12,345.67
-123.45
(123.45)

Parentheses indicate a negative value. Avoid mixing currency symbols or separators from other locales in the same file.

Supported date formats ​

Use one of these formats:

text
2026-03-18
03-18-26
03/18/26
03/18/2026

When a file has no Date column, the import date is used for every row.

Duplicate handling ​

Duplicate checking can be enabled or disabled for each import.

A trade is considered a duplicate when all of these values match an existing trade:

  • Date
  • Symbol
  • Quantity
  • Price
  • Fees
  • Source
  • Identifier

A cash transaction is considered a duplicate when all of these values match an existing cash transaction:

  • Date
  • Symbol
  • Proceeds
  • Source
  • Identifier

Enable duplicate checking when re-importing an overlapping statement period. Disable it only when identical activity is intentional and should be recorded more than once.

Transaction IDs ​

Rover Portfolio assigns ID numbers as records are posted to each data table. These IDs are convenient human references, but they are not accounting inputs.

  • IDs increase in posting order, not transaction-date order.
  • IDs are not guaranteed to be globally unique.
  • IDs have no computational effect.

Use Source and Identifier when you need a stable link to an external system; do not rely on the generated transaction ID as an external unique key.

Matching behavior ​

Matching is case-insensitive where applicable. Imported column headers also match when they contain an accepted header word: Fees & Commissions, for example, matches the Fees field.

See the complete alias list and sample files in Importing portfolio data.

Clarity for the decisions that shape your portfolio.