Home

EarlySignal documentation

CSV Import Schema

The official reference for importing execution history into EarlySignal. One row per fill supports partial executions, scaling in and out, and positions that are still open.

Last updated: October 16, 2026

Start with an execution ledger

For a broker export, upload the original fills, executions or supported trade-history report. Smart Import detects the layout and validates it. For a custom file, use the canonical column names below. Header order does not matter. Headers are normalized for case, spaces and punctuation; avoid duplicate financial headings.

  1. Download the blank template and add one row for each actual fill. Include instrument, currency and stable execution/account IDs whenever available.
  2. Choose the destination bucket in Smart Import. Check the timezone, date convention, number format and source account label.
  3. Review executions, remaining quantities, fees, duplicates, currency, exclusions and position evidence. Resolve blocking issues and acknowledge the requested warnings.
  4. Confirm the current preview. Previewing does not publish trades, but does save a pending import. The signed preview expires after 15 minutes; changing the file, settings or relevant history requires a fresh preview.
Download blank CSV template

Supported files and broker formats

CSV, TSV and delimited TXT are supported, including comma, tab and semicolon delimiters, quoted commas/newlines, statement preambles, repeated headers, labeled sections and Excel sep= directives. Upload decoding handles UTF-8, UTF-16 LE/BE and Windows-1252 fallback. Invalid UTF-16 or binary/control bytes are rejected. XLS/XLSX, PDFs, images and encrypted archives are not supported.

ZIP uploads can contain eligible CSV/TSV/TXT files. Multiple files are treated as complementary evidence and each original document is retained. Limits: 25 MiB ZIP, 25 MiB eligible extracted bytes for archive safety, 20 complementary files, and 5 MiB decoded request content including bundle overhead. Each text file is also limited to 5 MiB.

Recognized source families: EarlySignal / Generic CSV, Schwab / thinkorswim, Fidelity, Webull, Interactive Brokers, Lightspeed, DAS Trader, TradeZero, Moomoo, Robinhood, tastytrade, TradeStation, E*TRADE, Alpaca, TopstepX, Tradier. CenterPoint execution exports use the DAS family. Support depends on the report fields and evidence, rather than the broker name alone.

Broker export coverage and boundaries
Report familySupported evidence and boundaries
Schwab / thinkorswimAccount Trade History execution sections, description-based fills, supported transaction history and qualifying reinvestment inventory rows. Account Order History placement time, requested quantity and price are not execution evidence.
Interactive BrokersActivity Trades sections and Flex trade confirmations with consistent account, instrument, currency and contract facts.
DAS / CenterPoint, Lightspeed, TradeZeroExecution/trades windows and blotters, including split date/time and component fees. Time-only DAS files require a supplied trade date.
Webull, Moomoo, TradeStationFilled order/trade reports with observed filled quantity, price and execution time. Partial fills and cumulative snapshots are supported only when their identities and progression can be proved.
Alpaca, Robinhood, tastytrade, TradierSupported fill/activity/transaction rows; non-fill activity is excluded. Some Tradier reports provide only a date.
Fidelity, E*TRADESupported transaction-history layouts can retain DATE_ONLY precision. A settlement date or order submission time does not become an observed fill time.
TopstepXSupported fills and closed-trade summaries with contract/multiplier evidence. Summary rows are not equivalent to a complete execution tape.
Unfamiliar layouts / round-trip summariesA validated mapping may select renamed columns, multiple tables, or entry/exit legs. Partial closing quantity must be positive and no larger than opening quantity; blank closing fields can retain an entry-only position. Mapping availability depends on the layout and configured provider or manual recovery; arbitrary exit_price columns are not canonical fields.

Depending on configuration, an AI provider may propose a mapping for an unfamiliar layout. EarlySignal parses and validates the rows locally; the model does not supply financial truth. A column-selection recovery tool is available in Import. See the Privacy Policy for data-sharing details and the broker export guide for report instructions (sign-in required).

Required canonical columns

These six values must be available for each execution. Canonical side and type are position semantics; BUY/SELL belong to broker-specific or mapped layouts. On narrow screens, scroll tables sideways to read every column.

Column, Data type, Rules and valid values
ColumnData typeRules and valid values
symbolTextRequired. Instrument symbol, e.g. AAPL. Whitespace is trimmed and letters normalized to uppercase. Use a contract-specific symbol for derivatives.
sideEnumRequired. LONG or SHORT. This is the position direction on every row, including exits.
typeEnumRequired. ENTRY or EXIT. ENTRY increases the position; EXIT reduces it.
executed_atTimestamp or dateRequired (or separate date/time columns). Prefer ISO 8601 with Z or a numeric offset, e.g. 2026-10-01T09:30:00-04:00. A date alone is DATE_ONLY.
priceDecimalRequired. Price per quantity unit, before fees. Zero is allowed for STOCK, OPTION, FUTURE and OTHER; negative prices only for FUTURE. FOREX and CRYPTO prices must be positive.
quantityPositive decimalRequired. Actual executed shares, contracts or units, not requested order quantity. Fractional quantities are supported. Use positive magnitudes for both entries and exits.

Optional and conditionally required columns

Optional does not mean unnecessary for reliable accounting. Contract identity, multiplier, currency or prior history may be required by your instrument and source.

Column, Data type, Rules and valid values
ColumnData typeRules and valid values
instrumentEnumSTOCK, OPTION, FUTURE, FOREX, CRYPTO or OTHER. Explicitly include it in custom files; inference is accepted only with sufficient source evidence.
value_multiplierPositive decimalCash value of a one-point price change for one quantity unit. Default is 100 for OPTION and 1 otherwise, but derivatives/FOREX/OTHER require an explicit or independently verified multiplier for reliable financial interpretation. Do not assume the default matches your contract.
currencyCurrency / quote-asset codeExecution denomination, e.g. USD, CAD, USDT. Use the actual unit. Must agree with qualified price/amount headers, pair and fee currency evidence.
account_currencyCurrency codeReporting-currency metadata. Does not convert execution prices or P&L and does not override the destination account settings.
feesSigned decimalOptional total net cost for this execution; blank means 0. Positive = charge; negative = credit/rebate. Do not repeat a whole-order fee on each partial fill.
trade_idText identifierOptional grouping hint within account, currency, instrument and multiplier. Use a different ID for each flat-to-flat lifecycle. Does not let you combine incompatible contracts or reopen a closed lifecycle.
execution_idText identifierStable fill ID. Strongly recommended for overlapping exports. Distinct partial fills need distinct IDs even if their order_id is identical. fill_id is an alias.
external_idText identifierStable source execution identity. Falls back to execution_id, then a transaction ID qualified by trade date. Never reuse an ID for changed financial facts.
transaction_idText identifierSource transaction identifier; retained with trade-date context.
order_idText identifierParent order ID. Several executions may share it. An order ID alone does not establish that rows are cumulative snapshots or duplicates.
broker_account_idText identifierSource brokerage account ID. Keep stable across files; keep different accounts separate. An accountless file may require account selection before reconciliation.
sessionEnumPREMARKET, REGULAR or AFTERHOURS. Aliases PRE/PRE_MARKET, DAY/RTH and AH/AFTER_HOURS are accepted. Blank/unrecognized values may be inferred for supported equity schedules; otherwise unset.
timestamp_precisionEnumEXACT or DATE_ONLY (also DATETIME/DATE_TIME and DATE/DATEONLY). A date without a time stays DATE_ONLY even if marked EXACT. Unrecognized values fall back to parsed precision.
setup, notesTextOptional trade annotations, selected from the first incoming row when constructing the group. Existing annotations are preserved during reconciliation.
execution_noteTextOptional per-fill note. Quote text containing commas, double quotes or newlines.
bucketTextRecognized source label only. The Target bucket selected in Smart Import determines where records are written; rows do not create or route to buckets.
opening_position_statusEnumUNKNOWN (default), USER_CONFIRMED_FLAT or PROVEN. A supplied label is a declaration, not independently verified evidence. Use flat confirmation only when the source really starts with zero inventory.
source_granularityEnumexecution (default), order_aggregate, ledger_trade or unknown. Aggregate records retain their analytical limitations; a label cannot turn a summary into observed fills.
trade_dateCalendar dateSource trading date. Prefer YYYY-MM-DD. Used for provenance and transaction identity, not a replacement for the execution timestamp.
raw_action, source_status, order_typeTextSource provenance. These columns do not replace canonical side/type or prove an order was filled.

Partial fills, scaling and open positions

Canonical position and action mapping
sidetypeEconomic action
LONGENTRYBuy to open / increase
LONGEXITSell to reduce / close
SHORTENTRYSell short to open / increase
SHORTEXITBuy to cover / reduce

Keep partial fills as separate rows. Several fills can share an order_id; each fill should retain its own execution_id. Repeated timestamps and identical prices are possible real fills and are not sufficient grounds for deduplication.

Multiple ENTRY and EXIT rows are supported, including a new scale-in after a partial exit. Running inventory is entries minus exits. A fully reconciled lifecycle stays OPEN while quantity remains and becomes CLOSED at zero. Total closing quantity may be less than total opening quantity; no artificial balancing row is needed.

An entry-only position is valid. Omit closing rows completely until real fills exist. Closing timestamp and average exit price remain empty, and there is no exit realization. Do not add a zero-quantity exit, a zero-price placeholder or a future date to mark an open position.

For a reconciled lifecycle, an exit cannot exceed the inventory available at that point or occur before its entry. If history is missing, supply earlier executions with matching source/account identity. Eligible unresolved executions may instead be preserved with uncertainty, or only the source retained; that does not establish missing basis or make their P&L authoritative.

Without trade_id, grouping separates account, currency, instrument/contract, multiplier and position direction, then splits at flat boundaries. Explicit IDs are scoped grouping hints and cannot override lifecycle checks. For a canonical reversal, use a real EXIT to flat and a separate opposite-side ENTRY for the remaining quantity, with separate lifecycle IDs and correctly allocated fees; supported broker mappings may split a reversal automatically.

Accounting uses chronological moving-average cost, linear valuation and net positions. Each exit realizes only its closed quantity. Entry fees are allocated proportionally as inventory closes; exit fees apply to that exit. Later entries do not change an earlier realization. FIFO/LIFO tax-lot accounting, hedged inventory and nonlinear/inverse payoffs are not supported accounting models. Different currencies remain separate; there is no implied FX conversion.

Downloadable templates and verified examples

All examples below are synthetic stock trades with fictitious account/order/fill IDs. Each assumes zero inventory before its first entry and explicitly declares USER_CONFIRMED_FLAT. This assumption is specific to these examples; use UNKNOWN or the actual evidence for your own file. Replace every demo value and ID before using a template for real history. Import examples only into a separate demo bucket.

Partial fills and scaling in/out

6 fills; 190 opened, 190 closed; CLOSED. Moving-average gross P&L 176.00, fees 1.90, net P&L 174.10 USD.

Download partial-fills-and-scaling.csv
View example CSV
trade_id,symbol,instrument,side,type,executed_at,price,quantity,fees,currency,broker_account_id,execution_id,order_id,opening_position_status
DEMO-SCALE,AAPL,STOCK,LONG,ENTRY,2026-10-01T09:30:00-04:00,100,60,0.30,USD,DEMO-ACCOUNT,DEMO-S1,DEMO-ORDER-1,USER_CONFIRMED_FLAT
DEMO-SCALE,AAPL,STOCK,LONG,ENTRY,2026-10-01T09:30:01-04:00,100,40,0.20,USD,DEMO-ACCOUNT,DEMO-S2,DEMO-ORDER-1,USER_CONFIRMED_FLAT
DEMO-SCALE,AAPL,STOCK,LONG,EXIT,2026-10-01T09:35:00-04:00,102,40,0.20,USD,DEMO-ACCOUNT,DEMO-S3,DEMO-ORDER-2,USER_CONFIRMED_FLAT
DEMO-SCALE,AAPL,STOCK,LONG,ENTRY,2026-10-01T09:40:00-04:00,101.80,90,0.45,USD,DEMO-ACCOUNT,DEMO-S4,DEMO-ORDER-3,USER_CONFIRMED_FLAT
DEMO-SCALE,AAPL,STOCK,LONG,EXIT,2026-10-01T09:45:00-04:00,102.08,100,0.50,USD,DEMO-ACCOUNT,DEMO-S5,DEMO-ORDER-4,USER_CONFIRMED_FLAT
DEMO-SCALE,AAPL,STOCK,LONG,EXIT,2026-10-01T09:50:00-04:00,101,50,0.25,USD,DEMO-ACCOUNT,DEMO-S6,DEMO-ORDER-5,USER_CONFIRMED_FLAT

Unequal opening and closing quantities

3 fills; 100 opened, 35 closed, 65 remain; OPEN. Gross realized P&L 70.00, net realized P&L 69.65 USD; remaining entry fees stay with the open inventory.

Download unequal-quantities-open.csv
View example CSV
trade_id,symbol,instrument,side,type,executed_at,price,quantity,fees,currency,broker_account_id,execution_id,order_id,opening_position_status
DEMO-PARTIAL,MSFT,STOCK,LONG,ENTRY,2026-10-01T10:00:00-04:00,400,60,0.30,USD,DEMO-ACCOUNT,DEMO-P1,DEMO-ORDER-6,USER_CONFIRMED_FLAT
DEMO-PARTIAL,MSFT,STOCK,LONG,ENTRY,2026-10-01T10:01:00-04:00,400,40,0.20,USD,DEMO-ACCOUNT,DEMO-P2,DEMO-ORDER-7,USER_CONFIRMED_FLAT
DEMO-PARTIAL,MSFT,STOCK,LONG,EXIT,2026-10-01T10:05:00-04:00,402,35,0.175,USD,DEMO-ACCOUNT,DEMO-P3,DEMO-ORDER-8,USER_CONFIRMED_FLAT

Open position without closing executions

2 entry fills; 12.5 opened, 0 closed; OPEN. No exit realization, no closing date and no average exit price.

Download open-position-no-exits.csv
View example CSV
trade_id,symbol,instrument,side,type,executed_at,price,quantity,fees,currency,broker_account_id,execution_id,order_id,opening_position_status
DEMO-OPEN,NVDA,STOCK,LONG,ENTRY,2026-10-01T11:00:00-04:00,120,10,0.10,USD,DEMO-ACCOUNT,DEMO-O1,DEMO-ORDER-9,USER_CONFIRMED_FLAT
DEMO-OPEN,NVDA,STOCK,LONG,ENTRY,2026-10-01T11:01:00-04:00,121,2.5,0.025,USD,DEMO-ACCOUNT,DEMO-O2,DEMO-ORDER-10,USER_CONFIRMED_FLAT

Short entry and cover

2 fills; 10 opened and closed; CLOSED. Gross P&L 20.00, fees 0.20, net P&L 19.80 USD.

Download short-position.csv
View example CSV
trade_id,symbol,instrument,side,type,executed_at,price,quantity,fees,currency,broker_account_id,execution_id,order_id,opening_position_status
DEMO-SHORT,AMD,STOCK,SHORT,ENTRY,2026-10-01T12:00:00-04:00,150,10,0.10,USD,DEMO-ACCOUNT,DEMO-H1,DEMO-ORDER-11,USER_CONFIRMED_FLAT
DEMO-SHORT,AMD,STOCK,SHORT,EXIT,2026-10-01T12:10:00-04:00,148,10,0.10,USD,DEMO-ACCOUNT,DEMO-H2,DEMO-ORDER-12,USER_CONFIRMED_FLAT

In the scaling example, the first 40-share exit realizes 80 USD gross. After the next entry, 150 shares have an average basis of 101.08. The remaining exits realize 100 and −4 USD gross, respectively. Total 176 gross minus 1.90 fees = 174.10 USD net.

Blank canonical template includes the six required columns plus instrument, multiplier, currency, fees, grouping and source identity. A header-only file is a starting template, not an importable trade.

Advanced fields, aliases and source declarations

Prefer the canonical headings above for new files. Common aliases include ticker for symbol, direction for side, action for type, qty for quantity, account_id/account_number for broker_account_id and currency_code for currency. In the canonical parser, action still means ENTRY/EXIT. Broker-specific synonyms and mapped roles depend on the observed report; there is no universal list of arbitrary broker headers.

Fee aliases include commission_and_fees, commission_fees, commissions_and_fees, commissions_fees, total_fees and commission. The canonical parser selects a total rather than summing arbitrary columns; the signed fees column is the recommended form. Broker adapters use validated charge/rebate and component meanings. Overlapping totals/components or ambiguous linked fees cannot be guessed.

Column, Data type, Rules and valid values
ColumnData typeRules and valid values
executed_date, executed_timeDate + timeAlternative to executed_at; execution_date/filled_date/date and execution_time/filled_time/time are also recognized. date_time/date_and_time alias the combined timestamp.
timezoneZone or offsetTimestamp timezone metadata; time_zone/tz also accepted. Prefer an explicit offset in executed_at. Without one, the selected import timezone applies (normally America/New_York).
instrument_type, asset_class, asset_type, asset_category, security_type, product_typeInstrument enum / recognized aliasAlternative asset-type headings. Use instrument in new canonical files.
native_symbol, underlying, expiration, strike, option_type, futures_contractText; date; positive decimal; enumContract identity. expiration: YYYY-MM-DD; strike: positive decimal; option_type: CALL or PUT (C/P aliases). Supply complete option identity and the actual futures contract, not just a root.
base_currency, quote_currency, exchangeText codesPair and venue identity. Quantity is in base units and price in quote units after any explicitly declared conversion.
conid, security_id, security_id_type, cusip, isin, sedol, figi, underlying_conidText identifiersOptional stable security identifiers, preserved as instrument metadata.
instrument_metadata_jsonJSON object in a quoted CSV cellAlternative to individual metadata columns; instrument_metadata is an alias. Recognized keys: nativeSymbol, underlying, expiration, strike, optionType, futuresContract, baseCurrency, quoteCurrency, exchange, identifiers. Use valid JSON with doubled CSV quotes.
quantity_unit, lot_size, quantity_scaleText + positive decimal scaleExplicit linear quantity conversion. LOT/LOTS requires lot_size or quantity_scale; unknown units require quantity_scale. SHARES, UNITS, CONTRACTS, COINS, TOKENS and BASE are already quantity units. quantity_units is an alias.
price_unit, price_scaleText + positive decimal scaleCENTS/CENT, PENCE or MINOR requires explicit price_scale (e.g. 0.01). QUOTE/MAJOR or matching currency is already in major units. price_units is an alias.
cost_basis_method, accounting_methodEnumIf declared: MOVING_AVERAGE, AVERAGE_COST, WEIGHTED_AVERAGE, WEIGHTED_AVERAGE_COST or WAC. FIFO/LIFO declarations are incompatible.
position_mode, inventory_modelEnumIf declared: NETTING, NET or NET_POSITION. Hedging is not a supported reconstruction model.
valuation_model, payoff_modelEnumIf declared: LINEAR or PRICE_TIMES_QUANTITY. Nonlinear/inverse contract accounting is unsupported.
execution_gross_pnl, execution_net_pnl, trade_gross_pnl, trade_net_pnlSigned decimalOptional reported P&L checks. Execution scope checks an exit realization; trade scope requires a complete closed lifecycle. These values never replace reconstructed P&L.
pnl, realized_pnl, pnl_basis, pnl_scope, pnl_currencyDecimal + enums / currencyGeneric reported P&L needs pnl_basis=GROSS|NET and pnl_scope=EXECUTION|TRADE to be verified; currency must match the execution. Unknown semantics produce an unverified-report acknowledgement.
amount, gross_amount, net_amountSigned decimalOptional source notional/cash-flow checks when recognized by the mapping. Must agree with price × quantity × multiplier, gross/net meaning, fees and source rounding. Do not put realized P&L in an amount column.
source_row, source_partPositive integer; enumExport provenance. source_row falls back to the physical record. source_part: WHOLE, ROUND_TRIP_ENTRY, ROUND_TRIP_EXIT, REVERSAL_CLOSE or REVERSAL_OPEN; must agree with type. Preserve exported values.
execution_sequence, execution_order_statusInteger text; enumOptional source ordering: sequence is 1–30 digits; order status ORDERED or UNORDERED. Equal timestamps need observed sequence or finer precision when order changes accounting. Do not manufacture sequence to resolve uncertainty.
source_file_hash, import_source, parser_version, currency_originTextExport provenance and compatibility metadata. Preserve when re-importing an EarlySignal export. User-supplied text does not independently verify source ownership or currency.
financial_data_statusEnumExport status: VERIFIED, NATIVE_CURRENCY, UNKNOWN_CURRENCY, UNVERIFIED_MULTIPLIER or INCOMPLETE_INSTRUMENT. Unsafe facts cannot be repaired by simply replacing this label.
opening_inventory_anchor_jsonJSON objectExported inventory evidence (quantity, coverageStart and source context). Preserve only from a real export. It is not a substitute for missing execution cost basis.

Broker mapping roles (format-dependent)

The following are mapping roles, not extra required canonical headers. A supported adapter or validated mapping must establish their source meaning. Different brokers use different names and codes; opaque codes require documented declarations and validation.

Column, Data type, Rules and valid values
ColumnData typeRules and valid values
action, position_effect, open_closeAction / position codesBUY or SELL and independently established opening/closing semantics. Native vocabulary can include buy-to-open, sell-to-close, sell-short and buy-to-cover. Plain BUY/SELL alone does not prove the initial inventory.
status, row_type, descriptionText / declared codesUsed to distinguish executions, orders, fees and ancillary rows. Non-fill order statuses cannot become executions without explicit fill quantity, price and time; unexplained fill-shaped rows cannot be ignored.
filled quantity, fill price, fill timestampPositive decimal; decimal; timestampActual execution facts. Cumulative order-filled quantities require stable order identity and proven progression before conversion to incremental fills. Requested order quantity/time are metadata, not fill facts.
exitQuantity, exitPrice, exitDateTime, exitDate, exitTimeMapped closing-leg rolesFor supported round-trip summary layouts, opening facts use ordinary price/quantity/time roles. The closing leg uses these roles; quantity may default to the shared source quantity only when justified. If all closing facts are absent, the entry may remain open. Incomplete closing facts are invalid.
feeCurrency, feeEventId, feesCurrency; stable identifier; decimal componentsMappings can select validated fee components or linked fee rows with proven execution/order linkage. Total-versus-component and charge-versus-credit meaning must be explicit. Stable economic fee identity prevents repeated charges.
orderQuantity, orderTimestampDecimal; timestampOrder metadata used to check fill/aggregate semantics. These cannot replace missing execution quantity or execution time.

Opening inventory and complementary evidence files

A balanced buy/sell excerpt alone does not prove that its opening inventory was zero. A source account label can establish consistent user-scoped lineage across files, but does not prove a position boundary or broker account ownership. Use the same label only for exports from the same actual account.

UNKNOWN is the default opening status. When chronological fills permit it, EarlySignal can show a provisional flat-start reconstruction; missing basis or unreliable ordering can make calculations unavailable. Do not interpret a provisional figure as a verified historical result. The preview discloses which records are excluded or uncertain. Flat-start controls are optional and should be used only with actual knowledge of the starting inventory.

Complementary coverage and position CSVs can establish a boundary when complete and consistent with executions. These are evidence tables, not substitute fills. The importer requires exact ISO timestamps with seconds and Z/offset for these tables.

Column, Data type, Rules and valid values
ColumnData typeRules and valid values
account_id, currencyText codes; requiredRequired on coverage and snapshot records (or unambiguous source context). Must match the execution account and currency.
period_start, period_endExact timestamps; required for coverageIncreasing range; execution coverage is start-inclusive and end-exclusive.
execution_coverage, inventory_event_coverageEnum; required for coverageBoth must say COMPLETE. Declare completeness only when the source actually covers every execution and inventory-changing event.
symbol, as_of, position_quantityText; exact timestamp; signed decimalRequired snapshot facts. position_quantity allows up to 12 decimal places; negative denotes short inventory. Snapshot must match the covered instrument and inventory conservation. A nonzero snapshot supplies quantity, not cost basis.
instrument_type, value_multiplierEnum; positive decimalSnapshot defaults are STOCK and multiplier 1 for stock. Other instruments require the actual multiplier and matching contract metadata (native_symbol, underlying, expiration, strike, option_type, futures_contract or pair fields as applicable).

Assignment, exercise, expiration, cash settlement, splits, reorganizations, spin-offs and security transfers require inventory transformations the execution importer cannot safely invent. They may block financial publication; retaining source documents does not implement those events.

Informational columns in EarlySignal exports

EarlySignal CSV exports contain additional market-data and enrichment fields listed below. The current canonical importer does not restore them into float overrides, market-data approvals, provider observations, snapshot identities or enrichment job statuses. They can remain in an export for reference, but are not writable import fields. Market data is obtained through the normal enrichment workflow.

float_shares, float_shares_override, float_shares_provider, float_selection_status, float_approval_status, float_suggested_shares, float_requested_at, float_observed_at, float_effective_date, float_source, float_security_id, float_run_id, float_content_hash, float_vendor_source_url, float_fetched_at, market_cap, market_cap_as_of, market_cap_currency, ticker_metric_snapshot_id, ticker_metrics_provider, ticker_metrics_fetched_at, ticker_metrics_status

Other unrecognized columns may be preserved as source cells but do not automatically become tags, reviews, attachments or application fields. CSV is an execution interchange format, not a full account restore.

Formatting, validation and common errors

  • Use plain decimal numbers and a dot separator in custom CSVs. Numeric values must be finite, exactly representable through the importer’s numeric path and have no more than 12 decimal places. Execution price/fee magnitudes and quantity/multiplier cannot exceed 1,000,000,000. A larger database decimal capacity does not increase import limits.
  • Grouping separators, scientific notation, currency-qualified numbers and decimal-comma reports are supported when unambiguous. Choose the number convention when prompted. Percent values, malformed grouping and conflicting units fail validation. Quote a comma-containing value inside a comma CSV.
  • Use ISO dates. Other supported conventions include US month/day, European day/month and compact YYYYMMDD; ambiguous dates require a selected convention. Excel serials require an explicit 1900 or 1904 system. Impossible dates and ambiguous/nonexistent daylight-saving local times require correction or an explicit offset.
  • Date-only imports preserve the calendar date using a local-noon carrier; noon is not an observed fill time. Timing, session and holding-duration analytics are limited. Sub-millisecond source timestamps and observed execution sequence are retained for ordering; database DateTime alone does not preserve all source precision.
  • Use standard CSV quoting: wrap comma/newline-containing cells in double quotes and double any internal quote. Keep text and IDs as text when editing in spreadsheets. Downloaded examples contain no formulas, credentials or real account records.
Issue or error, Meaning, How to resolve it
Issue or errorMeaningHow to resolve it
Missing/invalid symbol, side, type, quantity or executed_atA required execution fact is missing or invalid.Use LONG/SHORT, ENTRY/EXIT, a positive quantity and a real execution date/time. Check the chosen mapping and header row.
TRADE_DATE / DATE_FORMAT / NUMBER_FORMATThe source has time-only rows or an ambiguous convention.Supply the trade date or select the source convention in Import. Do not replace execution time with placed time.
MISSING_ENTRY / EXCESS_EXIT_QUANTITY / EXIT_BEFORE_ENTRYKnown inventory does not support the closing rows.Add matching earlier history, verify account identity and chronology, or use the offered uncertainty/source-retention option. Do not invent an entry or shrink a real fill.
Invalid fee / amount contradiction / reported P&L conflictAmounts, signs, units or reported results disagree with validated executions.Check multiplier, fee totals versus components, charge/rebate signs, gross/net and execution/trade scope. Financial contradictions cannot be waived with an acknowledgement.
Unknown currency / unsafe instrument factsCurrency, contract identity or multiplier is missing or contradictory.Use evidenced facts and review the execution-currency controls. The current policy may default missing currency from the linked account or destination bucket, with a warning when required; a preference is not proof of the source denomination.
Duplicate / correction conflictProven existing fills are skipped; the same stable identity with changed financial facts conflicts.Check preview counts. Distinct identical fills need their genuine separate IDs. Resolve corrections through the supported correction workflow; do not mint new IDs to bypass a conflict.
IMPORT_BUCKET_OWNERSHIP / account selectionMatching history belongs to another bucket or the source omits account identity.Select the owning bucket or the correct account and refresh. Source similarity does not establish ownership.
IMPORT_PREVIEW_EXPIRED / STALE / INTEGRITY_MISMATCHThe saved preview expired or no longer matches current inputs/history.Prepare and review a fresh preview.
IMPORT_UNCERTAIN / interrupted confirmationThe client cannot verify whether commit completed.Check import status and recent imports before retrying. Reusing the same confirmation is receipt-based and idempotent.
Unsupported report / unmapped rows / provider unavailableThe report lacks provable fills or a validated mapping.Choose the broker execution report, use manual column recovery or convert actual fills to the canonical template. Do not discard unexplained fill-shaped rows.

Operational ceilings: 20,000 physical records and 512 columns per parsed document; 10,000 selected source execution records, 5,000 reconciled trades and 2,500 executions per trade. History loading is bounded to 25,000 executions, with at most 250 existing trade rewrites and 500 calculation-only refreshes per import. Account ceilings are 50,000 trades and 500,000 executions; plan entitlements can impose further limits. Split large histories into source-consistent date ranges and retain stable IDs.

A bad financial row may quarantine its affected symbol ledger, so valid-looking neighboring rows can also be excluded. Review the complete skipped/excluded list. A source-only save retains evidence without publishing executions. Blocking risks remain blocking; acknowledging a warning does not repair a contradiction.

Execution and database model

An import runs as synchronous preview and confirmation requests. Confirmation rechecks the signed plan against current history, then publishes within a serializable database transaction (60-second transaction budget). Trade aggregates, execution records, realization projections and source evidence commit together; a failure rolls the transaction back. Subsequent enrichment is handled separately.

Record, Storage, Purpose
RecordStoragePurpose
TradeOne lifecycle with many executionsInstrument/contract, direction, account/currency, OPEN/CLOSED state and cached quantities, prices, fees and P&L. Closed date is nullable.
ExecutionOne observed fill or explicitly identified expanded legENTRY/EXIT, time/precision, price, quantity, signed fees, note and source IDs/provenance. Financial values use PostgreSQL Decimal(30,12).
TradeRealizationPer-exit accounting projection when availableClosed quantity, gross P&L, allocated entry fees, exit fees and net P&L. Rebuilt transactionally; an open remainder does not require a final exit.
ImportJobPENDING → PROCESSING → COMPLETED, or FAILED / ROLLED_BACKPreview plan, expiring confirmation hash, counts, errors and recoverable receipt metadata.
CsvImportAccount / Document / Record / EvidenceTenant-scoped source evidenceAccount declarations, immutable decoded originals, positional cells and append-only outcomes survive eligible import rollback.
CsvImportOccurrence / FeeClaimActive unique source/economic claimsPrevent repeat physical occurrences or identified fees from publishing twice. Rollback releases active claims while retaining evidence.
Schema mapping recordsVersioned per-user and de-identified shared mappingsDescribe columns, not substitute financial facts. Every replay still validates the source locally.

Database tenant relationships, stable source identity indexes, immutable evidence guards and execution/lifecycle constraints complement application validation. Rollback is guarded and may be unavailable after later edits or related journal data; it is not a general undo for arbitrary history. No schema migration or importer behavior change is required to use this reference.

Open Smart Import
CSV Import Schema · EarlySignal