@yottagraph-app/aether-instructions 1.1.8 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -8
- package/commands/update_instructions.md +30 -23
- package/package.json +1 -1
- package/skills/data-model/SKILL.md +58 -0
- package/skills/data-model/edgar/DATA_DICTIONARY.md +306 -0
- package/skills/data-model/edgar/schema.yaml +1893 -0
- package/skills/data-model/fdic/DATA_DICTIONARY.md +243 -0
- package/skills/data-model/fdic/schema.yaml +356 -0
- package/skills/data-model/fred/DATA_DICTIONARY.md +313 -0
- package/skills/data-model/fred/schema.yaml +155 -0
- package/skills/data-model/gleif/DATA_DICTIONARY.md +211 -0
- package/skills/data-model/gleif/schema.yaml +254 -0
- package/skills/data-model/newsdata/schema.yaml +650 -0
- package/skills/data-model/overview.md +77 -0
- package/skills/data-model/polymarket/DATA_DICTIONARY.md +384 -0
- package/skills/data-model/polymarket/schema.yaml +601 -0
- package/skills/data-model/sanctions/DATA_DICTIONARY.md +140 -0
- package/skills/data-model/sanctions/schema.yaml +153 -0
- package/skills/data-model/stocks/DATA_DICTIONARY.md +122 -0
- package/skills/data-model/stocks/schema.yaml +131 -0
- package/skills/data-model/system_schema.yaml +71 -0
- package/skills/data-model/wikipedia/DATA_DICTIONARY.md +185 -0
- package/skills/data-model/wikipedia/schema.yaml +255 -0
- package/skills/elemental-api/SKILL.md +37 -0
- package/skills/elemental-api/articles.md +386 -0
- package/skills/elemental-api/entities.md +393 -0
- package/skills/elemental-api/events.md +145 -0
- package/skills/elemental-api/find.md +279 -0
- package/skills/elemental-api/graph.md +239 -0
- package/skills/elemental-api/llm.md +18 -0
- package/skills/elemental-api/overview.md +51 -0
- package/skills/elemental-api/relationships.md +310 -0
- package/skills/elemental-api/schema.md +379 -0
- package/skills/elemental-api/sentiment.md +93 -0
- package/skills/elemental-api/server.md +186 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Data Dictionary: Sanctions
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Sanctioned persons and organizations from [OpenSanctions](https://www.opensanctions.org/), which aggregates sanctions lists from US OFAC, UK HM Treasury, EU, UN, Swiss SECO, and others. Input is OpenSanctions JSON (arrays or newline-delimited). Static reference data loaded in bulk. Only entities with `target: true` are ingested.
|
|
6
|
+
|
|
7
|
+
`Record.Source`: `sanctions-source`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Entity Types
|
|
12
|
+
|
|
13
|
+
### `person`
|
|
14
|
+
|
|
15
|
+
A sanctioned individual listed on one or more sanctions lists.
|
|
16
|
+
|
|
17
|
+
- Primary key: OpenSanctions entity ID (`sanctions_id`)
|
|
18
|
+
|
|
19
|
+
### `organization`
|
|
20
|
+
|
|
21
|
+
A sanctioned company, legal entity, or other organization. OpenSanctions schema types `"Company"`, `"Organization"`, and `"LegalEntity"` all map here.
|
|
22
|
+
|
|
23
|
+
- Primary key: OpenSanctions entity ID (`sanctions_id`)
|
|
24
|
+
|
|
25
|
+
### `sanction_program`
|
|
26
|
+
|
|
27
|
+
A government or international sanctions program. Created implicitly as relationship targets; resolved by strong ID (the program name).
|
|
28
|
+
|
|
29
|
+
- Primary key: program name (e.g. `"OFAC-SDN"`, `"SECO-UKRAINE"`)
|
|
30
|
+
|
|
31
|
+
### `country`
|
|
32
|
+
|
|
33
|
+
Referenced by the `country` relationship on organization entities. Not created by this source.
|
|
34
|
+
|
|
35
|
+
- Primary key: ISO country code
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Properties
|
|
40
|
+
|
|
41
|
+
### Shared Properties (person + organization)
|
|
42
|
+
|
|
43
|
+
#### Identity
|
|
44
|
+
|
|
45
|
+
* `sanctions_id`
|
|
46
|
+
* Definition: unique identifier from OpenSanctions.
|
|
47
|
+
* Examples: `"ch-seco-94982"`, `"us-ofac-12345"`
|
|
48
|
+
* Derivation: `id` field from the JSON entity record.
|
|
49
|
+
|
|
50
|
+
* `name`
|
|
51
|
+
* Definition: a known name for this entity. One atom per entry in the source `name` array.
|
|
52
|
+
* Examples: `"Zhongheng Lin"`, `"Acme Industries LLC"`
|
|
53
|
+
* Derivation: each entry in `properties.name`.
|
|
54
|
+
|
|
55
|
+
* `alias`
|
|
56
|
+
* Definition: an alternative name or spelling. One atom per source alias.
|
|
57
|
+
* Examples: `"林仲恒 Lin"`, `"V. Putin"`
|
|
58
|
+
* Derivation: each entry in `properties.alias`.
|
|
59
|
+
|
|
60
|
+
#### Sanctions Classification
|
|
61
|
+
|
|
62
|
+
* `sanction_program`
|
|
63
|
+
* Definition: link to the sanctions program(s) under which this entity is designated. One atom per program.
|
|
64
|
+
* Examples: `"SECO-UKRAINE"`, `"OFAC-SDN"`, `"GB-RUS"`
|
|
65
|
+
* Derivation: each entry in `properties.programId`. Target `sanction_program` entity resolved by strong ID.
|
|
66
|
+
|
|
67
|
+
* `sanctions_topic`
|
|
68
|
+
* Definition: classification tag for the type of designation. One atom per topic.
|
|
69
|
+
* Examples: `"sanction"`, `"poi"`, `"debarment"`, `"entity.associate"`
|
|
70
|
+
* Derivation: each entry in `properties.topics`.
|
|
71
|
+
|
|
72
|
+
#### Context
|
|
73
|
+
|
|
74
|
+
* `notes`
|
|
75
|
+
* Definition: context about why this entity is sanctioned. Multiple source notes concatenated with ` | `.
|
|
76
|
+
* Derivation: all entries from `properties.notes` concatenated.
|
|
77
|
+
|
|
78
|
+
* `sanctioned`
|
|
79
|
+
* Definition: boolean flag (`1.0`) indicating a sanctions target. Emitted only when `notes` is absent.
|
|
80
|
+
* Derivation: fallback marker set to `1.0` when the entity has no notes.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### Person-Only Properties
|
|
85
|
+
|
|
86
|
+
* `birth_date`
|
|
87
|
+
* Definition: date of birth. Only the first value is stored.
|
|
88
|
+
* Examples: `"1958-01-06"`, `"1952-10-07"`
|
|
89
|
+
* Derivation: `properties.birthDate[0]`. ISO 8601 date string.
|
|
90
|
+
|
|
91
|
+
* `nationality`
|
|
92
|
+
* Definition: nationality as a two-letter ISO country code. Falls back to `country` if nationality is empty.
|
|
93
|
+
* Examples: `"cn"`, `"ru"`, `"us"`
|
|
94
|
+
* Derivation: `properties.nationality[0]`, falling back to `properties.country[0]`.
|
|
95
|
+
|
|
96
|
+
* `position`
|
|
97
|
+
* Definition: job title, political role, or official position. Only the first value is stored.
|
|
98
|
+
* Examples: `"President of Russia"`, `"Owner of Shenzhen Biguang Technology"`
|
|
99
|
+
* Derivation: `properties.position[0]`.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### Organization-Only Properties
|
|
104
|
+
|
|
105
|
+
* `country`
|
|
106
|
+
* Definition: link to the associated country entity. Only the first value is stored.
|
|
107
|
+
* Examples: `"ru"`, `"cn"`, `"ir"`
|
|
108
|
+
* Derivation: `properties.country[0]`. Target entity uses the ISO country code as name.
|
|
109
|
+
|
|
110
|
+
* `address`
|
|
111
|
+
* Definition: physical address. Only the first value is stored.
|
|
112
|
+
* Examples: `"123 Main Street, Moscow, Russia"`, `"PO Box 456, Tehran"`
|
|
113
|
+
* Derivation: `properties.address[0]`.
|
|
114
|
+
|
|
115
|
+
* `sector`
|
|
116
|
+
* Definition: business sector or industry classification. Only the first value is stored.
|
|
117
|
+
* Examples: `"Energy"`, `"Banking"`, `"Defense"`
|
|
118
|
+
* Derivation: `properties.sector[0]`.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
### Sanction Program Properties
|
|
123
|
+
|
|
124
|
+
None. Program entities carry only a strong ID (the program name) for resolution.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Entity Relationships
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
person ──[sanction_program]──→ sanction_program
|
|
132
|
+
organization ──[sanction_program]──→ sanction_program
|
|
133
|
+
organization ──[country]───────────→ country
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Attributes
|
|
139
|
+
|
|
140
|
+
None beyond standard atom metadata. Entity resolution snippets are carried on `Subject.NamedEntityResolverInformation.Snippets`.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Dataset schema for sanctions data (OpenSanctions).
|
|
2
|
+
#
|
|
3
|
+
# This schema describes entity types, properties, and relationships produced
|
|
4
|
+
# by atomizing structured JSON from the OpenSanctions aggregated dataset.
|
|
5
|
+
# All elements are passive — they are created by the atomizer from parsed
|
|
6
|
+
# JSON fields, not by LLM extraction.
|
|
7
|
+
name: "sanctions"
|
|
8
|
+
description: "Sanctioned persons, organizations, and their associated sanctions programs from the OpenSanctions aggregated dataset"
|
|
9
|
+
|
|
10
|
+
extraction:
|
|
11
|
+
flavors: closed
|
|
12
|
+
properties: closed
|
|
13
|
+
relationships: closed
|
|
14
|
+
attributes: closed
|
|
15
|
+
events: closed
|
|
16
|
+
|
|
17
|
+
flavors:
|
|
18
|
+
- name: "person"
|
|
19
|
+
description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
|
|
20
|
+
display_name: "Person"
|
|
21
|
+
mergeability: not_mergeable
|
|
22
|
+
passive: true
|
|
23
|
+
|
|
24
|
+
- name: "organization"
|
|
25
|
+
description: "A particular business, institution, or organization such as a corporation, university, government agency, or non-profit"
|
|
26
|
+
display_name: "Organization"
|
|
27
|
+
mergeability: not_mergeable
|
|
28
|
+
passive: true
|
|
29
|
+
|
|
30
|
+
- name: "sanction_program"
|
|
31
|
+
description: "A government or international sanctions program under which entities are designated"
|
|
32
|
+
display_name: "Sanction Program"
|
|
33
|
+
mergeability: not_mergeable
|
|
34
|
+
passive: true
|
|
35
|
+
|
|
36
|
+
- name: "country"
|
|
37
|
+
description: "A country referenced by sanctioned organizations, identified by ISO country code"
|
|
38
|
+
display_name: "Country"
|
|
39
|
+
mergeability: not_mergeable
|
|
40
|
+
passive: true
|
|
41
|
+
|
|
42
|
+
properties:
|
|
43
|
+
- name: "sanctions_id"
|
|
44
|
+
type: string
|
|
45
|
+
description: "Unique identifier assigned to this entity by the upstream sanctions data provider (OpenSanctions entity ID)"
|
|
46
|
+
display_name: "Sanctions ID"
|
|
47
|
+
mergeability: not_mergeable
|
|
48
|
+
domain_flavors: ["person", "organization"]
|
|
49
|
+
examples: ["ch-seco-94982", "us-ofac-12345"]
|
|
50
|
+
passive: true
|
|
51
|
+
|
|
52
|
+
- name: "name"
|
|
53
|
+
type: string
|
|
54
|
+
description: "Display name of the entity"
|
|
55
|
+
display_name: "Name"
|
|
56
|
+
mergeability: not_mergeable
|
|
57
|
+
domain_flavors: ["person", "organization"]
|
|
58
|
+
examples: ["Zhongheng Lin", "Vladimir Putin"]
|
|
59
|
+
passive: true
|
|
60
|
+
|
|
61
|
+
- name: "alias"
|
|
62
|
+
type: string
|
|
63
|
+
description: "An alternative name or spelling for this entity, one atom per alias"
|
|
64
|
+
display_name: "Alias"
|
|
65
|
+
mergeability: not_mergeable
|
|
66
|
+
domain_flavors: ["person", "organization"]
|
|
67
|
+
passive: true
|
|
68
|
+
|
|
69
|
+
- name: "birth_date"
|
|
70
|
+
type: string
|
|
71
|
+
description: "Date of birth as reported in the sanctions listing, in ISO 8601 format"
|
|
72
|
+
display_name: "Birth Date"
|
|
73
|
+
mergeability: not_mergeable
|
|
74
|
+
domain_flavors: ["person"]
|
|
75
|
+
examples: ["1958-01-06", "1952-10-07"]
|
|
76
|
+
passive: true
|
|
77
|
+
|
|
78
|
+
- name: "nationality"
|
|
79
|
+
type: string
|
|
80
|
+
description: "Nationality or country affiliation as a two-letter ISO country code, falling back to the country field when nationality is not specified"
|
|
81
|
+
display_name: "Nationality"
|
|
82
|
+
mergeability: not_mergeable
|
|
83
|
+
domain_flavors: ["person"]
|
|
84
|
+
examples: ["cn", "ru", "us"]
|
|
85
|
+
passive: true
|
|
86
|
+
|
|
87
|
+
- name: "position"
|
|
88
|
+
type: string
|
|
89
|
+
description: "Job title, political role, or official position as stated in the sanctions listing"
|
|
90
|
+
display_name: "Position"
|
|
91
|
+
mergeability: not_mergeable
|
|
92
|
+
domain_flavors: ["person"]
|
|
93
|
+
examples: ["President of Russia", "Owner of Shenzhen Biguang Technology"]
|
|
94
|
+
passive: true
|
|
95
|
+
|
|
96
|
+
- name: "sanctions_topic"
|
|
97
|
+
type: string
|
|
98
|
+
description: "Classification tag indicating the type of sanctions designation, one atom per topic"
|
|
99
|
+
display_name: "Sanctions Topic"
|
|
100
|
+
mergeability: not_mergeable
|
|
101
|
+
domain_flavors: ["person", "organization"]
|
|
102
|
+
examples: ["sanction", "poi", "debarment", "entity.associate"]
|
|
103
|
+
passive: true
|
|
104
|
+
|
|
105
|
+
- name: "notes"
|
|
106
|
+
type: string
|
|
107
|
+
description: "Descriptive notes or commentary associated with the entity"
|
|
108
|
+
display_name: "Notes"
|
|
109
|
+
mergeability: not_mergeable
|
|
110
|
+
domain_flavors: ["person", "organization"]
|
|
111
|
+
passive: true
|
|
112
|
+
|
|
113
|
+
- name: "sanctioned"
|
|
114
|
+
type: float
|
|
115
|
+
description: "Boolean flag indicating this entity is a sanctions target, emitted only when no notes are present as a fallback marker"
|
|
116
|
+
display_name: "Sanctioned"
|
|
117
|
+
mergeability: not_mergeable
|
|
118
|
+
domain_flavors: ["person", "organization"]
|
|
119
|
+
passive: true
|
|
120
|
+
|
|
121
|
+
- name: "address"
|
|
122
|
+
type: string
|
|
123
|
+
description: "Physical address of the sanctioned organization as stated in the sanctions listing"
|
|
124
|
+
display_name: "Address"
|
|
125
|
+
mergeability: not_mergeable
|
|
126
|
+
domain_flavors: ["organization"]
|
|
127
|
+
passive: true
|
|
128
|
+
|
|
129
|
+
- name: "sector"
|
|
130
|
+
type: string
|
|
131
|
+
description: "Business sector or industry classification of the sanctioned organization"
|
|
132
|
+
display_name: "Sector"
|
|
133
|
+
mergeability: not_mergeable
|
|
134
|
+
domain_flavors: ["organization"]
|
|
135
|
+
examples: ["Energy", "Banking", "Defense"]
|
|
136
|
+
passive: true
|
|
137
|
+
|
|
138
|
+
relationships:
|
|
139
|
+
- name: "sanction_program"
|
|
140
|
+
description: "Links a sanctioned entity to the sanctions program under which it is designated"
|
|
141
|
+
display_name: "Sanction Program"
|
|
142
|
+
mergeability: not_mergeable
|
|
143
|
+
domain_flavors: ["person", "organization"]
|
|
144
|
+
target_flavors: ["sanction_program"]
|
|
145
|
+
passive: true
|
|
146
|
+
|
|
147
|
+
- name: "country"
|
|
148
|
+
description: "Links a sanctioned organization to its associated country"
|
|
149
|
+
display_name: "Country"
|
|
150
|
+
mergeability: not_mergeable
|
|
151
|
+
domain_flavors: ["organization"]
|
|
152
|
+
target_flavors: ["country"]
|
|
153
|
+
passive: true
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Data Dictionary: Alpha Vantage Stocks
|
|
2
|
+
|
|
3
|
+
## Source Overview
|
|
4
|
+
|
|
5
|
+
Alpha Vantage stock market data via the `TIME_SERIES_DAILY` REST API. Provides daily OHLCV (open, high, low, close, volume) candlestick data for US-listed equities on NYSE, NASDAQ, and AMEX exchanges.
|
|
6
|
+
|
|
7
|
+
Historical data available via `outputsize=full` (20+ years). Recent data (last 100 trading days) available via `outputsize=compact`. The streamer uses `full` for initial backfill and `compact` for daily incremental updates.
|
|
8
|
+
|
|
9
|
+
Symbol universe: ~6,900 tickers (after filtering preferred stock symbols) sourced from the NASDAQ screener (static CSV, downloaded 2026-03-13). Symbols containing `^` (preferred shares) are excluded because Alpha Vantage does not support them.
|
|
10
|
+
|
|
11
|
+
Rate limit: 1,200 requests/minute (premium plan). Downloads run concurrently (10 workers) with the Alpha Vantage client rate limiter gating throughput.
|
|
12
|
+
|
|
13
|
+
| Pipeline | `Record.Source` |
|
|
14
|
+
|----------|----------------|
|
|
15
|
+
| Daily OHLCV | `stocks` |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Entity Types
|
|
20
|
+
|
|
21
|
+
### `financial_instrument`
|
|
22
|
+
|
|
23
|
+
A publicly traded equity security (common stock, preferred stock, ETF, etc.) listed on a US exchange.
|
|
24
|
+
|
|
25
|
+
- Primary key: `ticker_symbol` (e.g., `"AAPL"`, `"IBM"`, `"BRK-B"`)
|
|
26
|
+
- Entity resolver: named entity, mergeable. Strong ID = `ticker_symbol`.
|
|
27
|
+
- Entity name: ticker symbol (e.g., `"AAPL"`).
|
|
28
|
+
|
|
29
|
+
### `organization`
|
|
30
|
+
|
|
31
|
+
A company or entity whose equity securities are publicly traded on a US exchange.
|
|
32
|
+
|
|
33
|
+
- Primary key: none (resolved by name).
|
|
34
|
+
- Entity resolver: named entity, mergeable.
|
|
35
|
+
- Entity name: full security name from the NASDAQ screener CSV (e.g., `"Apple Inc. Common Stock"`).
|
|
36
|
+
- Note: for dual-class shares (e.g., GOOGL and GOOG), separate organization entities are created per share class. Entity resolution may merge these with organizations from other sources (e.g., EDGAR).
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Properties
|
|
41
|
+
|
|
42
|
+
### Financial Instrument Properties
|
|
43
|
+
|
|
44
|
+
#### Identity
|
|
45
|
+
|
|
46
|
+
* `ticker_symbol`
|
|
47
|
+
* Definition: Stock ticker symbol as listed on the exchange.
|
|
48
|
+
* Examples: `"AAPL"`, `"IBM"`, `"MSFT"`, `"BRK-B"`
|
|
49
|
+
* Derivation: `symbol` field from the NASDAQ screener CSV; also present in Alpha Vantage response `Meta Data` → `2. Symbol`.
|
|
50
|
+
|
|
51
|
+
* `company_name`
|
|
52
|
+
* Definition: Full registered security name.
|
|
53
|
+
* Examples: `"Apple Inc. Common Stock"`, `"International Business Machines Corporation Common Stock"`
|
|
54
|
+
* Derivation: `name` field from the NASDAQ screener CSV.
|
|
55
|
+
|
|
56
|
+
* `exchange`
|
|
57
|
+
* Definition: US stock exchange where the security is listed.
|
|
58
|
+
* Examples: `"NYSE"`, `"NASDAQ"`, `"AMEX"`
|
|
59
|
+
* Derivation: `exchange` field from the NASDAQ screener CSV.
|
|
60
|
+
|
|
61
|
+
* `sector`
|
|
62
|
+
* Definition: Market sector classification.
|
|
63
|
+
* Examples: `"Technology"`, `"Health Care"`, `"Industrials"`
|
|
64
|
+
* Derivation: `sector` field from the NASDAQ screener CSV. May be empty for some securities (e.g., SPACs, warrants).
|
|
65
|
+
|
|
66
|
+
* `industry`
|
|
67
|
+
* Definition: Industry sub-classification within the sector.
|
|
68
|
+
* Examples: `"Computer Manufacturing"`, `"Biotechnology: Laboratory Analytical Instruments"`
|
|
69
|
+
* Derivation: `industry` field from the NASDAQ screener CSV. May be empty.
|
|
70
|
+
|
|
71
|
+
#### Price Data (per daily candle)
|
|
72
|
+
|
|
73
|
+
Each record represents one daily OHLCV candlestick for a single security. The atom timestamp is the trading day's date (Eastern time, converted to UTC).
|
|
74
|
+
|
|
75
|
+
* `open_price`
|
|
76
|
+
* Definition: Opening price of the trading day. Unit: USD.
|
|
77
|
+
* Examples: `233.55`, `247.10`
|
|
78
|
+
* Derivation: `1. open` field from Alpha Vantage `Time Series (Daily)` response, parsed as float.
|
|
79
|
+
|
|
80
|
+
* `high_price`
|
|
81
|
+
* Definition: Highest price reached during the trading day. Unit: USD.
|
|
82
|
+
* Examples: `234.00`, `250.05`
|
|
83
|
+
* Derivation: `2. high` field from Alpha Vantage response, parsed as float.
|
|
84
|
+
|
|
85
|
+
* `low_price`
|
|
86
|
+
* Definition: Lowest price reached during the trading day. Unit: USD.
|
|
87
|
+
* Examples: `233.00`, `245.64`
|
|
88
|
+
* Derivation: `3. low` field from Alpha Vantage response, parsed as float.
|
|
89
|
+
|
|
90
|
+
* `close_price`
|
|
91
|
+
* Definition: Closing price of the trading day. Unit: USD.
|
|
92
|
+
* Examples: `233.50`, `247.68`
|
|
93
|
+
* Derivation: `4. close` field from Alpha Vantage response, parsed as float.
|
|
94
|
+
|
|
95
|
+
* `trading_volume`
|
|
96
|
+
* Definition: Number of shares traded during the day. Unit: shares.
|
|
97
|
+
* Examples: `1858`, `5547724`
|
|
98
|
+
* Derivation: `5. volume` field from Alpha Vantage response, parsed as integer (stored as float per v2 convention).
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Entity Relationships
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
organization ──[traded_as]──→ financial_instrument
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
* `traded_as`
|
|
109
|
+
* Definition: Links a company to the stock ticker under which its equity is publicly traded.
|
|
110
|
+
* Examples: `"Apple Inc. Common Stock" traded_as AAPL`, `"NVIDIA Corporation" traded_as NVDA`
|
|
111
|
+
* Derivation: one record per symbol, emitted alongside the price candle records. The organization name comes from the NASDAQ screener CSV `name` field; the financial_instrument is identified by the `ticker_symbol` strong ID.
|
|
112
|
+
* Note: one organization record with a `traded_as` relationship is emitted per download file (not per candle).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Notes
|
|
117
|
+
|
|
118
|
+
- **Timestamps**: Alpha Vantage returns timestamps in US/Eastern time. All atom timestamps are converted to UTC before storage.
|
|
119
|
+
- **Adjusted prices**: The daily endpoint returns raw (as-traded) prices. Split/dividend-adjusted data is available via `TIME_SERIES_DAILY_ADJUSTED` (premium) but is not currently used.
|
|
120
|
+
- **Missing data**: Not all symbols have data for all dates. Candles only exist for days with trading activity.
|
|
121
|
+
- **Streaming model**: HandleStream runs as a continuous polling loop. First run downloads full history (`outputsize=full`). Subsequent runs download compact data (`outputsize=compact`, last 100 trading days) and atomize only candles newer than the checkpoint. Default poll interval: 24 hours.
|
|
122
|
+
- **Preferred stock symbols**: Tickers containing `^` (e.g., `AHT^F`, `F^C`) are filtered out during symbol loading because Alpha Vantage returns empty responses for them.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Dataset schema for Alpha Vantage stock market data.
|
|
2
|
+
#
|
|
3
|
+
# This schema describes entity types and properties produced by atomizing
|
|
4
|
+
# OHLCV (open, high, low, close, volume) candlestick data from the Alpha
|
|
5
|
+
# Vantage TIME_SERIES_INTRADAY and TIME_SERIES_DAILY endpoints.
|
|
6
|
+
#
|
|
7
|
+
# All elements are passive -- created by the atomizer from structured JSON
|
|
8
|
+
# fields, not by LLM extraction.
|
|
9
|
+
name: "stocks"
|
|
10
|
+
description: "US equity OHLCV price data from Alpha Vantage, covering NYSE, NASDAQ, and AMEX listed securities at 15-minute and daily intervals"
|
|
11
|
+
|
|
12
|
+
extraction:
|
|
13
|
+
flavors: closed
|
|
14
|
+
properties: closed
|
|
15
|
+
relationships: closed
|
|
16
|
+
attributes: closed
|
|
17
|
+
events: closed
|
|
18
|
+
|
|
19
|
+
flavors:
|
|
20
|
+
- name: "financial_instrument"
|
|
21
|
+
description: "A publicly traded equity security (common stock, preferred stock, ETF, etc.) listed on a US exchange, identified by its ticker symbol"
|
|
22
|
+
display_name: "Financial Instrument"
|
|
23
|
+
mergeability: not_mergeable
|
|
24
|
+
strong_id_properties: ["ticker_symbol"]
|
|
25
|
+
passive: true
|
|
26
|
+
|
|
27
|
+
- name: "organization"
|
|
28
|
+
description: "A company or entity whose equity securities are publicly traded on a US exchange"
|
|
29
|
+
display_name: "Organization"
|
|
30
|
+
mergeability: not_mergeable
|
|
31
|
+
passive: true
|
|
32
|
+
|
|
33
|
+
properties:
|
|
34
|
+
# --- Identity ---
|
|
35
|
+
|
|
36
|
+
- name: "ticker_symbol"
|
|
37
|
+
type: string
|
|
38
|
+
description: "Stock ticker symbol as listed on the exchange (e.g., AAPL, IBM, BRK-B), from the NASDAQ screener and Alpha Vantage Meta Data"
|
|
39
|
+
display_name: "Ticker Symbol"
|
|
40
|
+
mergeability: not_mergeable
|
|
41
|
+
domain_flavors: ["financial_instrument"]
|
|
42
|
+
examples: ["AAPL", "IBM", "MSFT", "BRK-B"]
|
|
43
|
+
passive: true
|
|
44
|
+
|
|
45
|
+
- name: "company_name"
|
|
46
|
+
type: string
|
|
47
|
+
description: "Full registered security name from the NASDAQ screener"
|
|
48
|
+
display_name: "Company Name"
|
|
49
|
+
mergeability: not_mergeable
|
|
50
|
+
domain_flavors: ["financial_instrument"]
|
|
51
|
+
examples: ["Apple Inc. Common Stock", "International Business Machines Corporation Common Stock"]
|
|
52
|
+
passive: true
|
|
53
|
+
|
|
54
|
+
- name: "exchange"
|
|
55
|
+
type: string
|
|
56
|
+
description: "US stock exchange where the security is listed"
|
|
57
|
+
display_name: "Exchange"
|
|
58
|
+
mergeability: not_mergeable
|
|
59
|
+
domain_flavors: ["financial_instrument"]
|
|
60
|
+
examples: ["NYSE", "NASDAQ", "AMEX"]
|
|
61
|
+
passive: true
|
|
62
|
+
|
|
63
|
+
- name: "sector"
|
|
64
|
+
type: string
|
|
65
|
+
description: "Market sector classification from the NASDAQ screener; may be empty for SPACs, warrants, and other non-standard securities"
|
|
66
|
+
display_name: "Sector"
|
|
67
|
+
mergeability: not_mergeable
|
|
68
|
+
domain_flavors: ["financial_instrument"]
|
|
69
|
+
examples: ["Technology", "Health Care", "Industrials"]
|
|
70
|
+
passive: true
|
|
71
|
+
|
|
72
|
+
- name: "industry"
|
|
73
|
+
type: string
|
|
74
|
+
description: "Industry sub-classification within the sector from the NASDAQ screener; may be empty"
|
|
75
|
+
display_name: "Industry"
|
|
76
|
+
mergeability: not_mergeable
|
|
77
|
+
domain_flavors: ["financial_instrument"]
|
|
78
|
+
examples: ["Computer Manufacturing", "Biotechnology: Laboratory Analytical Instruments"]
|
|
79
|
+
passive: true
|
|
80
|
+
|
|
81
|
+
# --- Price Data (per candle) ---
|
|
82
|
+
|
|
83
|
+
- name: "open_price"
|
|
84
|
+
type: float
|
|
85
|
+
description: "Opening price of the trading interval in USD, from Alpha Vantage field '1. open'"
|
|
86
|
+
display_name: "Open Price"
|
|
87
|
+
mergeability: not_mergeable
|
|
88
|
+
domain_flavors: ["financial_instrument"]
|
|
89
|
+
passive: true
|
|
90
|
+
|
|
91
|
+
- name: "high_price"
|
|
92
|
+
type: float
|
|
93
|
+
description: "Highest price reached during the trading interval in USD, from Alpha Vantage field '2. high'"
|
|
94
|
+
display_name: "High Price"
|
|
95
|
+
mergeability: not_mergeable
|
|
96
|
+
domain_flavors: ["financial_instrument"]
|
|
97
|
+
passive: true
|
|
98
|
+
|
|
99
|
+
- name: "low_price"
|
|
100
|
+
type: float
|
|
101
|
+
description: "Lowest price reached during the trading interval in USD, from Alpha Vantage field '3. low'"
|
|
102
|
+
display_name: "Low Price"
|
|
103
|
+
mergeability: not_mergeable
|
|
104
|
+
domain_flavors: ["financial_instrument"]
|
|
105
|
+
passive: true
|
|
106
|
+
|
|
107
|
+
- name: "close_price"
|
|
108
|
+
type: float
|
|
109
|
+
description: "Closing price of the trading interval in USD, from Alpha Vantage field '4. close'"
|
|
110
|
+
display_name: "Close Price"
|
|
111
|
+
mergeability: not_mergeable
|
|
112
|
+
domain_flavors: ["financial_instrument"]
|
|
113
|
+
passive: true
|
|
114
|
+
|
|
115
|
+
- name: "trading_volume"
|
|
116
|
+
type: float
|
|
117
|
+
description: "Number of shares traded during the interval, from Alpha Vantage field '5. volume'; stored as float per v2 convention"
|
|
118
|
+
display_name: "Trading Volume"
|
|
119
|
+
mergeability: not_mergeable
|
|
120
|
+
domain_flavors: ["financial_instrument"]
|
|
121
|
+
passive: true
|
|
122
|
+
|
|
123
|
+
relationships:
|
|
124
|
+
- name: "traded_as"
|
|
125
|
+
description: "Links a company (organization) to the financial instrument (stock ticker) under which its equity is publicly traded"
|
|
126
|
+
display_name: "Traded As"
|
|
127
|
+
mergeability: not_mergeable
|
|
128
|
+
domain_flavors: ["organization"]
|
|
129
|
+
target_flavors: ["financial_instrument"]
|
|
130
|
+
examples: ["Apple Inc. traded as AAPL", "International Business Machines Corporation traded as IBM"]
|
|
131
|
+
passive: true
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# System schema: universal infrastructure elements for all datasets.
|
|
2
|
+
#
|
|
3
|
+
# These elements are created by the atomizer, not by LLM extraction. Every
|
|
4
|
+
# dataset gets them for free via WithSystemSchema(). The schema:: prefix
|
|
5
|
+
# follows the meta-schema naming convention from the schemaless design
|
|
6
|
+
# (experimental/jon/schemaless/DESIGN.md) and prevents collision with
|
|
7
|
+
# dataset-defined elements.
|
|
8
|
+
#
|
|
9
|
+
# This schema should rarely change. Dataset-specific elements (source
|
|
10
|
+
# flavors, publications, topics, trustworthiness, etc.) belong in the
|
|
11
|
+
# dataset schema.
|
|
12
|
+
|
|
13
|
+
name: "system"
|
|
14
|
+
description: "Universal infrastructure elements for all datasets"
|
|
15
|
+
|
|
16
|
+
flavors:
|
|
17
|
+
- name: "schema::flavor::event"
|
|
18
|
+
description: "A significant occurrence extracted from source text"
|
|
19
|
+
display_name: "Event"
|
|
20
|
+
mergeability: not_mergeable
|
|
21
|
+
|
|
22
|
+
relationships:
|
|
23
|
+
- name: "schema::relationship::participant"
|
|
24
|
+
description: "An entity participates in an event"
|
|
25
|
+
display_name: "Participant"
|
|
26
|
+
mergeability: not_mergeable
|
|
27
|
+
domain_flavors: ["schema::flavor::event"]
|
|
28
|
+
|
|
29
|
+
properties:
|
|
30
|
+
- name: "schema::property::event_category"
|
|
31
|
+
type: string
|
|
32
|
+
description: "The category of an event (e.g., Bankruptcy, IPO, Layoffs)"
|
|
33
|
+
display_name: "Event Category"
|
|
34
|
+
mergeability: not_mergeable
|
|
35
|
+
domain_flavors: ["schema::flavor::event"]
|
|
36
|
+
|
|
37
|
+
- name: "schema::property::event_likelihood"
|
|
38
|
+
type: string
|
|
39
|
+
description: "Temporal status of an event: confirmed, ongoing, likely, or speculative"
|
|
40
|
+
display_name: "Event Likelihood"
|
|
41
|
+
mergeability: not_mergeable
|
|
42
|
+
domain_flavors: ["schema::flavor::event"]
|
|
43
|
+
|
|
44
|
+
- name: "schema::property::event_date"
|
|
45
|
+
type: string
|
|
46
|
+
description: "The date an event occurred in YYYY-MM-DD format (or YYYY-MM or YYYY for partial dates)"
|
|
47
|
+
display_name: "Event Date"
|
|
48
|
+
mergeability: not_mergeable
|
|
49
|
+
domain_flavors: ["schema::flavor::event"]
|
|
50
|
+
|
|
51
|
+
- name: "schema::property::event_description"
|
|
52
|
+
type: string
|
|
53
|
+
description: "A detailed, objective description of an event"
|
|
54
|
+
display_name: "Event Description"
|
|
55
|
+
mergeability: not_mergeable
|
|
56
|
+
domain_flavors: ["schema::flavor::event"]
|
|
57
|
+
|
|
58
|
+
attributes:
|
|
59
|
+
- property: "schema::relationship::participant"
|
|
60
|
+
name: "role"
|
|
61
|
+
type: string
|
|
62
|
+
description: "The entity's role in the event (e.g., acquirer, target, plaintiff)"
|
|
63
|
+
display_name: "Role"
|
|
64
|
+
mergeability: not_mergeable
|
|
65
|
+
|
|
66
|
+
- property: "schema::relationship::participant"
|
|
67
|
+
name: "sentiment"
|
|
68
|
+
type: float
|
|
69
|
+
description: "Impact score for this entity's involvement in the event"
|
|
70
|
+
display_name: "Sentiment"
|
|
71
|
+
mergeability: not_mergeable
|