#![allow(clippy::redundant_closure_call)]
#![allow(clippy::needless_lifetimes)]
#![allow(clippy::match_single_binding)]
#![allow(clippy::clone_on_copy)]
#[doc = r" Error types."]
pub mod error {
#[doc = r" Error from a `TryFrom` or `FromStr` implementation."]
pub struct ConversionError(::std::borrow::Cow<'static, str>);
impl ::std::error::Error for ConversionError {}
impl ::std::fmt::Display for ConversionError {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
::std::fmt::Display::fmt(&self.0, f)
}
}
impl ::std::fmt::Debug for ConversionError {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
::std::fmt::Debug::fmt(&self.0, f)
}
}
impl From<&'static str> for ConversionError {
fn from(value: &'static str) -> Self {
Self(value.into())
}
}
impl From<String> for ConversionError {
fn from(value: String) -> Self {
Self(value.into())
}
}
}
#[doc = "`ConfidencePercentageChanges`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"p01\","]
#[doc = " \"p05\","]
#[doc = " \"p10\","]
#[doc = " \"p25\","]
#[doc = " \"p50\","]
#[doc = " \"p75\","]
#[doc = " \"p90\","]
#[doc = " \"p95\","]
#[doc = " \"p99\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"p01\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p05\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p10\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p25\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p50\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p75\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p90\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"p99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"minimum\": -100.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct ConfidencePercentageChanges {
pub p01: f64,
pub p05: f64,
pub p10: f64,
pub p25: f64,
pub p50: f64,
pub p75: f64,
pub p90: f64,
pub p95: f64,
pub p99: f64,
}
#[doc = "`ConfidenceProbabilities`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"p01\","]
#[doc = " \"p05\","]
#[doc = " \"p10\","]
#[doc = " \"p25\","]
#[doc = " \"p50\","]
#[doc = " \"p75\","]
#[doc = " \"p90\","]
#[doc = " \"p95\","]
#[doc = " \"p99\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"p01\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p05\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p10\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p25\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p50\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p75\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p90\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct ConfidenceProbabilities {
pub p01: f64,
pub p05: f64,
pub p10: f64,
pub p25: f64,
pub p50: f64,
pub p75: f64,
pub p90: f64,
pub p95: f64,
pub p99: f64,
}
#[doc = "`ConfidenceTimings`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"p01\","]
#[doc = " \"p05\","]
#[doc = " \"p10\","]
#[doc = " \"p25\","]
#[doc = " \"p50\","]
#[doc = " \"p75\","]
#[doc = " \"p90\","]
#[doc = " \"p95\","]
#[doc = " \"p99\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"p01\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p05\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p10\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p25\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p50\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p75\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p90\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p95\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"p99\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct ConfidenceTimings {
pub p01: u64,
pub p05: u64,
pub p10: u64,
pub p25: u64,
pub p50: u64,
pub p75: u64,
pub p90: u64,
pub p95: u64,
pub p99: u64,
}
#[doc = "`Event`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"event_id\","]
#[doc = " \"generated_timestamp_ms\","]
#[doc = " \"generated_timezone\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"event_id\": {"]
#[doc = " \"type\": \"string\","]
#[doc = " \"format\": \"uuid\""]
#[doc = " },"]
#[doc = " \"generated_timestamp_ms\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"generated_timezone\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Event {
pub event_id: ::uuid::Uuid,
pub generated_timestamp_ms: u64,
pub generated_timezone: ::std::string::String,
}
#[doc = "`Generator`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"creator\","]
#[doc = " \"generator_id\","]
#[doc = " \"name\","]
#[doc = " \"version\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"creator\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"generator_id\": {"]
#[doc = " \"type\": \"string\","]
#[doc = " \"format\": \"uuid\""]
#[doc = " },"]
#[doc = " \"name\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"version\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Generator {
pub creator: ::std::string::String,
pub generator_id: ::uuid::Uuid,
pub name: ::std::string::String,
pub version: ::std::string::String,
}
#[doc = "`HorizonConfidencesByMillis`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"maxProperties\": 20,"]
#[doc = " \"minProperties\": 1,"]
#[doc = " \"additionalProperties\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(transparent)]
pub struct HorizonConfidencesByMillis(pub ::std::collections::HashMap<::std::string::String, u64>);
impl ::std::ops::Deref for HorizonConfidencesByMillis {
type Target = ::std::collections::HashMap<::std::string::String, u64>;
fn deref(&self) -> &::std::collections::HashMap<::std::string::String, u64> {
&self.0
}
}
impl ::std::convert::From<HorizonConfidencesByMillis>
for ::std::collections::HashMap<::std::string::String, u64>
{
fn from(value: HorizonConfidencesByMillis) -> Self {
value.0
}
}
impl ::std::convert::From<::std::collections::HashMap<::std::string::String, u64>>
for HorizonConfidencesByMillis
{
fn from(value: ::std::collections::HashMap<::std::string::String, u64>) -> Self {
Self(value)
}
}
#[doc = "`Instrument`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"base\","]
#[doc = " \"product\","]
#[doc = " \"quote\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"base\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"product\": {"]
#[doc = " \"type\": \"string\","]
#[doc = " \"enum\": ["]
#[doc = " \"spot\""]
#[doc = " ]"]
#[doc = " },"]
#[doc = " \"quote\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Instrument {
pub base: ::std::string::String,
pub product: InstrumentProduct,
pub quote: ::std::string::String,
}
#[doc = "`InstrumentProduct`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"string\","]
#[doc = " \"enum\": ["]
#[doc = " \"spot\""]
#[doc = " ]"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(
:: serde :: Deserialize,
:: serde :: Serialize,
Clone,
Copy,
Debug,
Eq,
Hash,
Ord,
PartialEq,
PartialOrd,
)]
pub enum InstrumentProduct {
#[serde(rename = "spot")]
Spot,
}
impl ::std::fmt::Display for InstrumentProduct {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
match *self {
Self::Spot => f.write_str("spot"),
}
}
}
impl ::std::str::FromStr for InstrumentProduct {
type Err = self::error::ConversionError;
fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
match value {
"spot" => Ok(Self::Spot),
_ => Err("invalid value".into()),
}
}
}
impl ::std::convert::TryFrom<&str> for InstrumentProduct {
type Error = self::error::ConversionError;
fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
value.parse()
}
}
impl ::std::convert::TryFrom<&::std::string::String> for InstrumentProduct {
type Error = self::error::ConversionError;
fn try_from(
value: &::std::string::String,
) -> ::std::result::Result<Self, self::error::ConversionError> {
value.parse()
}
}
impl ::std::convert::TryFrom<::std::string::String> for InstrumentProduct {
type Error = self::error::ConversionError;
fn try_from(
value: ::std::string::String,
) -> ::std::result::Result<Self, self::error::ConversionError> {
value.parse()
}
}
#[doc = "`MarketContext`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"market_regime\","]
#[doc = " \"regime_persistence\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"market_regime\": {"]
#[doc = " \"$ref\": \"#/definitions/market_regime\""]
#[doc = " },"]
#[doc = " \"regime_persistence\": {"]
#[doc = " \"$ref\": \"#/definitions/regime_persistence\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketContext {
pub market_regime: MarketRegime,
pub regime_persistence: RegimePersistence,
}
#[doc = "`MarketRegime`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"classifications\","]
#[doc = " \"cycle\","]
#[doc = " \"trend\","]
#[doc = " \"volatility\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"classifications\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"confidence\","]
#[doc = " \"dominant\","]
#[doc = " \"top_alternatives\","]
#[doc = " \"unclassified\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"confidence\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"dominant\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"top_alternatives\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"maxProperties\": 5,"]
#[doc = " \"additionalProperties\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"unclassified\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"cycle\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"accumulation\","]
#[doc = " \"distribution\","]
#[doc = " \"markdown\","]
#[doc = " \"markup\","]
#[doc = " \"neutral\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"accumulation\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"distribution\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"markdown\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"markup\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"neutral\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"trend\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"bearish\","]
#[doc = " \"bullish\","]
#[doc = " \"sideways\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"bearish\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"bullish\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"sideways\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"volatility\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"snapshot\","]
#[doc = " \"trend\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"snapshot\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"high\","]
#[doc = " \"low\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"high\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"low\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"trend\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"compression\","]
#[doc = " \"expansion\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"compression\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"expansion\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegime {
pub classifications: MarketRegimeClassifications,
pub cycle: MarketRegimeCycle,
pub trend: MarketRegimeTrend,
pub volatility: MarketRegimeVolatility,
}
#[doc = "`MarketRegimeClassifications`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"confidence\","]
#[doc = " \"dominant\","]
#[doc = " \"top_alternatives\","]
#[doc = " \"unclassified\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"confidence\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"dominant\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"top_alternatives\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"maxProperties\": 5,"]
#[doc = " \"additionalProperties\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"unclassified\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeClassifications {
pub confidence: f64,
pub dominant: ::std::string::String,
pub top_alternatives: ::std::collections::HashMap<::std::string::String, f64>,
pub unclassified: f64,
}
#[doc = "`MarketRegimeCycle`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"accumulation\","]
#[doc = " \"distribution\","]
#[doc = " \"markdown\","]
#[doc = " \"markup\","]
#[doc = " \"neutral\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"accumulation\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"distribution\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"markdown\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"markup\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"neutral\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeCycle {
pub accumulation: f64,
pub distribution: f64,
pub markdown: f64,
pub markup: f64,
pub neutral: f64,
}
#[doc = "`MarketRegimeTrend`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"bearish\","]
#[doc = " \"bullish\","]
#[doc = " \"sideways\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"bearish\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"bullish\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"sideways\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeTrend {
pub bearish: f64,
pub bullish: f64,
pub sideways: f64,
}
#[doc = "`MarketRegimeVolatility`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"snapshot\","]
#[doc = " \"trend\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"snapshot\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"high\","]
#[doc = " \"low\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"high\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"low\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"trend\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"compression\","]
#[doc = " \"expansion\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"compression\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"expansion\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeVolatility {
pub snapshot: MarketRegimeVolatilitySnapshot,
pub trend: MarketRegimeVolatilityTrend,
}
#[doc = "`MarketRegimeVolatilitySnapshot`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"high\","]
#[doc = " \"low\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"high\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"low\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeVolatilitySnapshot {
pub high: f64,
pub low: f64,
}
#[doc = "`MarketRegimeVolatilityTrend`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"compression\","]
#[doc = " \"expansion\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"compression\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"expansion\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct MarketRegimeVolatilityTrend {
pub compression: f64,
pub expansion: f64,
}
#[doc = "`Metadata`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"$schema\","]
#[doc = " \"event\","]
#[doc = " \"generator\","]
#[doc = " \"provenance\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"$schema\": {"]
#[doc = " \"type\": \"string\","]
#[doc = " \"format\": \"uri\""]
#[doc = " },"]
#[doc = " \"event\": {"]
#[doc = " \"$ref\": \"#/definitions/event\""]
#[doc = " },"]
#[doc = " \"generator\": {"]
#[doc = " \"$ref\": \"#/definitions/generator\""]
#[doc = " },"]
#[doc = " \"provenance\": {"]
#[doc = " \"$ref\": \"#/definitions/provenance\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Metadata {
pub event: Event,
pub generator: Generator,
pub provenance: Provenance,
#[serde(rename = "$schema")]
pub schema: ::std::string::String,
}
#[doc = "`Prediction`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"horizon_confidences_by_millis\","]
#[doc = " \"optimal_horizon_millis\","]
#[doc = " \"percentage_changes\","]
#[doc = " \"risk\","]
#[doc = " \"validity_duration_millis\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"horizon_confidences_by_millis\": {"]
#[doc = " \"$ref\": \"#/definitions/horizon_confidences_by_millis\""]
#[doc = " },"]
#[doc = " \"optimal_horizon_millis\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"percentage_changes\": {"]
#[doc = " \"$ref\": \"#/definitions/confidence_percentage_changes\""]
#[doc = " },"]
#[doc = " \"risk\": {"]
#[doc = " \"$ref\": \"#/definitions/prediction_risk\""]
#[doc = " },"]
#[doc = " \"validity_duration_millis\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Prediction {
pub horizon_confidences_by_millis: HorizonConfidencesByMillis,
pub optimal_horizon_millis: u64,
pub percentage_changes: ConfidencePercentageChanges,
pub risk: PredictionRisk,
pub validity_duration_millis: u64,
}
#[doc = "`PredictionRisk`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"percentage_risks\","]
#[doc = " \"risk_factors\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"percentage_risks\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"cvar_95\","]
#[doc = " \"cvar_99\","]
#[doc = " \"max_drawdown_95\","]
#[doc = " \"max_drawdown_99\","]
#[doc = " \"var_95\","]
#[doc = " \"var_99\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"cvar_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"cvar_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"max_drawdown_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 100.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"max_drawdown_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 100.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"var_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"var_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " },"]
#[doc = " \"risk_factors\": {"]
#[doc = " \"type\": \"object\","]
#[doc = " \"maxProperties\": 20,"]
#[doc = " \"additionalProperties\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct PredictionRisk {
pub percentage_risks: PredictionRiskPercentageRisks,
pub risk_factors: ::std::collections::HashMap<::std::string::String, f64>,
}
#[doc = "`PredictionRiskPercentageRisks`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"cvar_95\","]
#[doc = " \"cvar_99\","]
#[doc = " \"max_drawdown_95\","]
#[doc = " \"max_drawdown_99\","]
#[doc = " \"var_95\","]
#[doc = " \"var_99\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"cvar_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"cvar_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"max_drawdown_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 100.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"max_drawdown_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 100.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"var_95\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " },"]
#[doc = " \"var_99\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"exclusiveMaximum\": 0.0,"]
#[doc = " \"minimum\": -100.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct PredictionRiskPercentageRisks {
pub cvar_95: f64,
pub cvar_99: f64,
pub max_drawdown_95: f64,
pub max_drawdown_99: f64,
pub var_95: f64,
pub var_99: f64,
}
#[doc = "`Provenance`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"description\","]
#[doc = " \"methodology\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"description\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"methodology\": {"]
#[doc = " \"type\": \"string\""]
#[doc = " },"]
#[doc = " \"references\": {"]
#[doc = " \"type\": \"array\","]
#[doc = " \"items\": {"]
#[doc = " \"type\": \"string\","]
#[doc = " \"format\": \"uri\""]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct Provenance {
pub description: ::std::string::String,
pub methodology: ::std::string::String,
#[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
pub references: ::std::vec::Vec<::std::string::String>,
}
#[doc = "`RegimePersistence`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"regime_persistence_confidence\","]
#[doc = " \"remaining_durations_millis\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"regime_persistence_confidence\": {"]
#[doc = " \"type\": \"number\","]
#[doc = " \"maximum\": 1.0,"]
#[doc = " \"minimum\": 0.0"]
#[doc = " },"]
#[doc = " \"remaining_durations_millis\": {"]
#[doc = " \"type\": \"integer\","]
#[doc = " \"minimum\": 0.0"]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct RegimePersistence {
pub regime_persistence_confidence: f64,
pub remaining_durations_millis: u64,
}
#[doc = "Schema for crypto trading signals with market regime context and probabilistic predictions"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"$id\": \"https://stock-trek.com/docs/schemas/signal/v0.3/schema.json\","]
#[doc = " \"title\": \"Stock-Trek Event\","]
#[doc = " \"description\": \"Schema for crypto trading signals with market regime context and probabilistic predictions\","]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"metadata\","]
#[doc = " \"signal\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"metadata\": {"]
#[doc = " \"$ref\": \"#/definitions/metadata\""]
#[doc = " },"]
#[doc = " \"signal\": {"]
#[doc = " \"$ref\": \"#/definitions/StockTrekSignal\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct StockTrekEvent {
pub metadata: Metadata,
pub signal: StockTrekSignal,
}
#[doc = "`StockTrekSignal`"]
#[doc = r""]
#[doc = r" <details><summary>JSON schema</summary>"]
#[doc = r""]
#[doc = r" ```json"]
#[doc = "{"]
#[doc = " \"type\": \"object\","]
#[doc = " \"required\": ["]
#[doc = " \"instrument\","]
#[doc = " \"market_context\","]
#[doc = " \"prediction\""]
#[doc = " ],"]
#[doc = " \"properties\": {"]
#[doc = " \"instrument\": {"]
#[doc = " \"$ref\": \"#/definitions/instrument\""]
#[doc = " },"]
#[doc = " \"market_context\": {"]
#[doc = " \"$ref\": \"#/definitions/market_context\""]
#[doc = " },"]
#[doc = " \"prediction\": {"]
#[doc = " \"$ref\": \"#/definitions/prediction\""]
#[doc = " }"]
#[doc = " },"]
#[doc = " \"additionalProperties\": false"]
#[doc = "}"]
#[doc = r" ```"]
#[doc = r" </details>"]
#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
#[serde(deny_unknown_fields)]
pub struct StockTrekSignal {
pub instrument: Instrument,
pub market_context: MarketContext,
pub prediction: Prediction,
}