9 releases
| 0.1.8 | Dec 25, 2022 |
|---|---|
| 0.1.7 | Dec 23, 2022 |
#156 in Finance
4,925 downloads per month
565KB
1K
SLoC
Package codes-iso-10383
This package contains an implementation of the ISO 10383 Securities and related financial instruments — Codes for exchanges and market identification (MIC) specification.
ISO 10383 specifies a universal method of identifying exchanges, trading platforms, regulated or non-regulated markets and trade reporting facilities as sources of prices and related information in order to facilitate automated processing.
It is intended for use in any application and communication for identification of places
- where a financial instrument is listed (place of official listing),
- where a related trade is executed (place of trade), and
- where trade details are reported (trade reporting facility).
Note that field descriptions are taken from ISO 10383 Market Identifier Codes - Release 2.0 Factsheet.
For notes on the design of the API, see the repository README.
Example
use codes_iso_10383::{Category, MarketIdCode, Status};
let market = MarketIdCode::XNCM;
assert_eq!(market.code(), "XNCM");
assert_eq!(market.operating_code(), Some(MarketIdCode::XNAS));
assert_eq!(market.is_segment(), true);
assert_eq!(market.status(), Status::Active);
assert_eq!(market.market_category_code(), Some(Category::NSPD));
assert_eq!(market.acronym(), None);
// feature = "real_url"
// assert_eq!(market.website_url(), Some(url::Url::from_str("http://www.nasdaq.com").unwrap()));
// or
// assert_eq!(market.website_url(), Some("http://www.nasdaq.com"));
// feature = "market_name"
// assert_eq!(market.market_name(), "NASDAQ CAPITAL MARKET");
// feature = "location"
// assert_eq!(market.country_code(), Some(CountryCode::US));
// assert_eq!(market.city(), Some("NEW YORK"));
// feature = "legal_entity"
// assert_eq!(market.legal_entity_name(), None);
// assert_eq!(market.legal_entity_id(), None);
// feature = "dates"
// assert_eq!(market.creation_date(), "2008-02-25");
// assert_eq!(market.last_update_date(), Some("2008-02-25"));
// assert_eq!(market.last_validation_date(), None);
// assert_eq!(market.expiration_date(), None);
// feature = "comments"
// assert_eq!(market.comments(), Some("..."));
The following demonstrates the from_str_extended which searches the
acronym values if there is not a direct MIC match via from_str.
use codes_iso_10383::MarketIdCode;
use std::str::FromStr;
assert!(MarketIdCode::from_str("NASDAQ").is_err());
let market = MarketIdCode::from_str_extended("NASDAQ");
assert!(market.is_ok());
assert_eq!(market.unwrap().code(), "XNAS");
Features
By default only the serde feature is enabled, the MarketIdCode::code and
MarketIdCode::operating_code, and MarketIdCode::is_segment methods cannot be excluded.
serde- Enables serialization of theMarketIdCodetype.market_name- Adds theMarketIdCode::market_namemethod.location- Adds theMarketIdCode::country_codeandMarketIdCode::citymethods.legal_entity- Adds theMarketIdCode::legal_entity_idandMarketIdCode::legal_entity_namemethods.real_url - Uses theUrltype from theurlcrate for theMarketIdCode::website_url` method.dates- Adds theMarketIdCode::creation_date,MarketIdCode::last_update_date,MarketIdCode::last_validation_date, andMarketIdCode::expiration_datemethods.real_dates- Used theDateTime<Utc>types from thechronocrate for date functions Work In Progresscomments- Adds theMarketIdCode::commentsmethod.
Changes
Version 0.1.8
- Catering for new
buildmodule in codes-common
Version 0.1.7
- Implemented
StandardizedandFixedLengthCodetraits.
Version 0.1.6
- Added new
from_str_extendedmethod.
Version 0.1.5
- Fixed template bugs for
country_codeandwebsite_url.
Version 0.1.4
- Added all missing methods.
Version 0.1.3
- Using new
codes-commonCSV handling framework.
Version 0.1.2
- Added
ALL_CODESconstant.
Version 0.1.1
- Clean-up implementation based on newer
codes-common - Using new
Codetrait and macro-created implementation.
Version 0.1.0
- Initial release
TODO
TBD
Dependencies
~0.3–2.7MB
~50K SLoC