Skip to main content

finance_query/constants/
exchange_codes.rs

1/// Typed exchange code for screener queries.
2#[non_exhaustive]
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4pub enum ExchangeCode {
5    // ── US Equity ─────────────────────────────────────────────────────────
6    /// NYSE American / AMEX ("ASE")
7    Ase,
8    /// OTC Bulletin Board ("BTS")
9    Bts,
10    /// NASDAQ Capital Market ("NCM")
11    Ncm,
12    /// NASDAQ Global Market ("NGM")
13    Ngm,
14    /// NASDAQ Global Select Market ("NMS") — primary NASDAQ tier
15    Nms,
16    /// New York Stock Exchange ("NYQ")
17    Nyq,
18    /// NYSE Arca ("PCX")
19    Pcx,
20    /// OTC Pink Sheets / OTC Markets ("PNK")
21    Pnk,
22    // ── US Funds ──────────────────────────────────────────────────────────
23    /// NASDAQ — used for US mutual funds ("NAS")
24    Nas,
25    // ── International ─────────────────────────────────────────────────────
26    /// Australian Securities Exchange ("ASX")
27    Asx,
28    /// Bombay Stock Exchange ("BSE")
29    Bse,
30    /// Hong Kong Stock Exchange ("HKG")
31    Hkg,
32    /// Korea Exchange ("KRX")
33    Krx,
34    /// London Stock Exchange ("LSE")
35    Lse,
36    /// National Stock Exchange of India ("NSI")
37    Nsi,
38    /// Shanghai Stock Exchange ("SHH")
39    Shh,
40    /// Shenzhen Stock Exchange ("SHZ")
41    Shz,
42    /// Tokyo Stock Exchange ("TYO")
43    Tyo,
44    /// Toronto Stock Exchange ("TOR")
45    Tor,
46    /// XETRA / Deutsche Börse ("GER")
47    Ger,
48}
49
50impl ExchangeCode {
51    /// Returns the exchange code string used by Yahoo Finance.
52    pub fn as_str(self) -> &'static str {
53        match self {
54            ExchangeCode::Ase => "ASE",
55            ExchangeCode::Bts => "BTS",
56            ExchangeCode::Ncm => "NCM",
57            ExchangeCode::Ngm => "NGM",
58            ExchangeCode::Nms => "NMS",
59            ExchangeCode::Nyq => "NYQ",
60            ExchangeCode::Pcx => "PCX",
61            ExchangeCode::Pnk => "PNK",
62            ExchangeCode::Nas => "NAS",
63            ExchangeCode::Asx => "ASX",
64            ExchangeCode::Bse => "BSE",
65            ExchangeCode::Hkg => "HKG",
66            ExchangeCode::Krx => "KRX",
67            ExchangeCode::Lse => "LSE",
68            ExchangeCode::Nsi => "NSI",
69            ExchangeCode::Shh => "SHH",
70            ExchangeCode::Shz => "SHZ",
71            ExchangeCode::Tyo => "TYO",
72            ExchangeCode::Tor => "TOR",
73            ExchangeCode::Ger => "GER",
74        }
75    }
76}
77
78impl From<ExchangeCode> for String {
79    fn from(v: ExchangeCode) -> Self {
80        v.as_str().to_string()
81    }
82}