> ## Documentation Index
> Fetch the complete documentation index at: https://docs.centaur.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Profile Trades

> How messages, events, and positions relate on trader and asset profiles.

Profile trade views combine messages, events, and positions.

## Messages

Messages are source texture. They preserve what a trader said, when they said it, and attachments or links when available.

Use messages for:

* original reasoning
* sentiment and conviction
* source text or media
* hydrating a Source Message ID referenced by an event

Messages are not a second trade ledger. They should not be used to reconstruct positions manually.

## Events

Events are structured trade actions:

* open
* increase
* decrease
* close

Events connect a trader, asset, direction, timestamp, optional price, related position, and optional source message.

## Positions

Positions group related events into one trade record. Position reads are the right surface for:

* open and closed position history
* `1D`, `7D`, and `30D` time-based performance
* position IDs referenced by event rows

Open-position reads are the right surface for current mark-to-market state.

Positions lasting at most 60 seconds and their structured events are omitted from product trade views. Independent source messages and narrative summaries remain available under their existing access rules.

## Profile chart and event drawers

On profile pages, chart markers and event drawers are source-backed when source material exists. Some events may be retrospective, assumed, or auto-generated; these classifications explain how the position history was reconstructed.

When a return is unavailable, treat it as missing data, not zero. A time-based return can be unavailable because the position is too young, a forward price is missing, the entry price is missing, or a calculation failed.

## Hydration pattern

Use this pattern when moving from a profile event to more context:

1. Start with the event.
2. Use `positionId` to hydrate position details and time-based performance.
3. Use `messageId` to hydrate source text or attachments when available.
4. Use trader and asset discovery to render names, symbols, avatars, and logos.
