Explore more topics
Market-data lake

lake.insider_transactions dataset schema

Column types and research semantics for NexusTrade’s lake.insider_transactions dataset. Read the supported schema before submitting a bounded SQL query.

Jump to a section

TL;DR

Use availableAt to decide when an insider disclosure could inform a historical signal, and join prices on resolvedTicker rather than the filer's free-text symbol. Aggregate transaction rows before joining owners so joint filings do not multiply shares. SEC code P identifies a purchase, including possible private terms; grants, exercises and tax withholding are different events. The reported trade price is not necessarily an available public follower entry price.

Query name
lake.insider_transactions
Storage partition
year
Columns
29

Columns and types

VARCHAR

  • accession
  • rowKind
  • rowSk
  • formType
  • issuerCik
  • issuerTicker
  • resolvedTicker
  • availabilitySource
  • securityTitle

TIMESTAMP

  • availableAt

DATE

  • transactionDate
  • deemedExecutionDate

Showing 12 of 29 recorded rows. The complete table is below.

Current logical schema for lake.insider_transactions

Inspect the complete lake.insider_transactions schema

Scroll sideways to compare all columns. Select a heading to sort.

accessionVARCHAR
rowKindVARCHAR
rowSkVARCHAR
formTypeVARCHAR
issuerCikVARCHAR
issuerTickerVARCHAR
resolvedTickerVARCHAR
availableAtTIMESTAMP
availabilitySourceVARCHAR
securityTitleVARCHAR
transactionDateDATE
deemedExecutionDateDATE
transactionFormTypeVARCHAR
transactionCodeVARCHAR
equitySwapInvolvedBOOLEAN
acquiredDisposedVARCHAR
sharesDOUBLE
pricePerShareDOUBLE
totalValueDOUBLE
sharesOwnedFollowingDOUBLE
directIndirectVARCHAR
natureOfOwnershipVARCHAR
exercisePriceDOUBLE
exerciseDateDATE
expirationDateDATE
underlyingTitleVARCHAR
underlyingSharesDOUBLE
rawArchiveKeyVARCHAR
sourceUrlVARCHAR

Current logical schema for lake.insider_transactions

Query lake.insider_transactions using the column names and types below. The query validator and engine use this logical catalog; a field absent from an older shard returns typed NULL.

What this table contains

The logical view is backed by canonical manifest-resolved data. Query this name rather than guessing a physical database collection or object-storage path.

Inspect disclosed purchase rows

Query example, not executed here. The dates and filters define the proposed research scope; returned rows and current coverage must be checked in your workspace.

P/A describes a reported purchase and acquisition. It can include private terms; pricePerShare is not a public follower entry price. Aggregate the transaction rows before joining owner rows to avoid multiplying joint filings.

SQL
SELECT accession, resolvedTicker, availableAt, transactionDate,
       transactionCode, acquiredDisposed, shares, pricePerShare, totalValue
FROM lake.insider_transactions
WHERE availableAt >= TIMESTAMP '2026-09-01'
  AND availableAt < TIMESTAMP '2026-09-19'
  AND transactionCode = 'P' AND acquiredDisposed = 'A'
ORDER BY availableAt, accession, rowSk
LIMIT 20;

Submit the insider_transactions example and read back its parts

Run the exact SQL through the Python SDK

Save this page's SQL as query.sql and the runner below as query.py. Use a registered key with lake scope from Developers. The runner submits the displayed insider_transactions query once, saves its operation, waits on that same ID, saves the returned manifest and downloads its Parquet parts.

This submission has not been executed for the reference page. Inspect the SQL, dates and resource limits before running it. Reuse the request key only for this identical SQL and limits; use a new key when changing them.

Shell
python3 -m pip install nexustrade==1.42.0
export NEXUSTRADE_API_KEY="YOUR_LAKE_SCOPED_KEY"
python3 query.py

Python
import json
from pathlib import Path
from nexustrade import NexusTradeClient

# Save the SQL displayed on this page as query.sql.
sql = Path("query.sql").read_text()
client = NexusTradeClient.from_environment()
operation = client.create_lake_query(
    {"query": sql, "limits": {"timeoutSeconds": 30, "maxRows": 50,
                              "maxResultBytes": 1048576}},
    idempotency_key="reference-insider_transactions-20261012-v1",
)
Path("query-operation.json").write_text(json.dumps(operation, indent=2))
finished = client.wait_for_lake_query(operation["id"])
if finished["status"] != "completed":
    raise RuntimeError(finished)
manifest = client.get_lake_query_manifest(operation["id"])["result"]
Path("query-manifest.json").write_text(json.dumps(manifest, indent=2))
print(json.dumps(manifest, indent=2))
for part in manifest["parts"]:
    Path(f"query-{part['part']}.parquet").write_bytes(
        client.download_lake_query_part(operation["id"], part["part"], max_bytes=1048576)
    )

Coverage and timing

Inspect source coverage and timing before using the rows

The logical view is backed by canonical manifest-resolved data. Query this name rather than guessing a physical database collection or object-storage path.

`availableAt` is the point-in-time column: filter `availableAt <= as_of`. `transactionDate` is when the trade happened, often days before anyone could know; it is never availability.

Join prices and other tables on `resolvedTicker`, never `issuerTicker`. `issuerTicker` is the filer's free text (`NYSE: KRC`, `LEN, LEN.B`, `vicr`, `none`), and 0.8% to 1.6% of rows a year are not a ticker; `resolvedTicker` is that text reduced to one symbol, null when the issuer has no listed symbol.

Rows do not repeat per reporting owner. Join to `insider_filings` on `accession` for owner names and roles, and aggregate shares before that join so a joint filing is not counted twice.

`transactionCode` is SEC's code: P open-market or private purchase, S open-market or private sale, A grant or award, M option exercise, F tax withholding, G gift. A P row is a purchase signal, not proof that a public-market copy could execute on the same terms. Do not treat A, M or F as buys.

`acquiredDisposed` is A (acquired) or D (disposed). `shares` and `pricePerShare` are as reported; `pricePerShare` is 0 for grants.

`sourceUrl` is the filing's SEC EDGAR index page, built from `issuerCik` and `accession` as in `insider_filings`.

Discussion

Sign in or create a free account to join the discussion.

No comments yet.