Choose the row shape
A signal uses timestamp and value, with ticker for asset scope and row_id for distinct same-time records. Generic tables remain datasets; they are not automatically signal indicators. Name the indicator after what value actually measures, such as disclosed dollars instead of an unexplained binary.
Set when each value became available
observation is a point available at timestamp. period_aggregate becomes available at the end of its declared period. disclosed requires every row to carry availableAt because the event happened before its publication. Declaring timing prevents a research model from reading a fact before it was public.
Supported aggregate periods are 1min, 1d, 1w, 1mo and 1q. A minute aggregate uses an explicit-zone bar-open timestamp and becomes available at bar close.
Save and check the indicator
Create the dataset using the supported create_dataset tool or the custom-data interface. Supply indicator_name only when you intend promotion, and set scope and point_kind deliberately. The validator rejects invalid signal rows before they can be used for research.
After creation, use the returned dataset_id with get_dataset to inspect metadata and head/tail samples. Check the timestamp, value and ticker fields against the intended signal. Use list_custom_indicators to confirm the promoted indicator's ID, point count and scope. If promotion fails, read the validation error and correct the row shape or availability declaration before resubmitting. Inspect the saved rows and version before referencing the indicator in a strategy. Account-specific dataset bytes stay private; this guide publishes the workflow only.