Field37H

Struct Field37H 

Source
pub struct Field37H {
    pub rate_indicator: char,
    pub is_negative: Option<bool>,
    pub rate: f64,
}
Expand description

Field 37H: Interest Rate

§Purpose

Specifies interest rates for financial instruments, derivatives, and investment products. This field family provides precise rate specifications required for interest calculations, derivative pricing, option valuations, and various financial product definitions. Interest rates are fundamental to financial market operations and risk management.

§Format

  • Swift Format: 1!a[N]12d (Field 37H), [N]12d (Field 37R), 12d (Field 37L)
  • Rate Indicator: 1!a - C (Credit) or D (Debit) for directional rates
  • Negative Sign: [N] - Optional ‘N’ for negative rates
  • Rate Value: 12d - Decimal rate with comma separator

§Presence

  • Status: Conditional/Mandatory depending on instrument type and market requirements
  • Swift Error Codes: T40 (invalid rate), T51 (format violation), T50 (invalid indicator)
  • Usage Context: Interest rate specifications and derivative pricing

§Usage Rules

  • Rate Expression: Typically expressed as percentage (e.g., 2.5000 = 2.5%)
  • Sign Logic: Negative rates supported in low interest rate environments
  • Precision: Adequate precision for accurate interest calculations
  • Market Standards: Compliance with market rate quotation conventions

§Network Validation Rules

  • Format Validation: Must follow exact rate format specifications
  • Rate Range: Must be within reasonable market rate ranges
  • Precision Rules: Integer part must contain at least one digit
  • Decimal Requirement: Decimal comma mandatory for proper formatting
  • Negative Validation: If rate is zero, negative sign must not be present

§Field Variants and Applications

§Field 37H - Interest Rate with Indicator

  • Format: 1!a[N]12d
  • Usage: Directional interest rates with credit/debit specification
  • Indicator Logic: C (Credit rate), D (Debit rate)
  • Applications: Account interest, loan rates, deposit rates

§Field 37R - Settlement Rate

  • Format: [N]12d
  • Usage: Settlement rates for derivatives and financial instruments
  • Applications: Forward rate agreements, interest rate swaps
  • Context: Final settlement rate determination

§Field 37L - Lower Barrier Level

  • Format: 12d
  • Usage: Barrier levels for structured products and options
  • Applications: Knock-in/knock-out options, barrier derivatives
  • Context: Risk management and option pricing

§Business Context

  • Interest Calculations: Precise interest accrual and payment calculations
  • Derivative Pricing: Essential component of derivative valuation models
  • Risk Management: Interest rate risk assessment and hedging
  • Market Operations: Standard market rate communication and processing

§Examples

:37H:C2,5000        // 2.5% credit interest rate
:37H:D3,7500        // 3.75% debit interest rate
:37H:CN0,2500       // -0.25% negative credit rate
:37R:N0,1000        // -0.1% negative settlement rate
:37L:1,2500         // 1.25% lower barrier level

§Interest Rate Types

  • Fixed Rates: Predetermined rates for entire term
  • Floating Rates: Variable rates linked to reference rates
  • Negative Rates: Below-zero rates in low interest environments
  • Barrier Levels: Trigger levels for structured products

§Rate Calculation Applications

  • Simple Interest: Principal × Rate × Time
  • Compound Interest: Principal × (1 + Rate)^Time
  • Day Count Conventions: ACT/360, ACT/365, 30/360
  • Accrual Periods: Daily, monthly, quarterly, annual

§Regional Considerations

  • European Markets: ECB rates, EURIBOR, negative rate environments
  • US Markets: Federal funds rate, LIBOR transition, SOFR adoption
  • Asian Markets: Local reference rates and central bank policies
  • Emerging Markets: High volatility and inflation considerations

§Rate Precision Standards

  • Standard Rates: Typically 4 decimal places (basis points)
  • High Precision: 6+ decimal places for complex calculations
  • Market Convention: Alignment with market quoting standards
  • Regulatory Compliance: Meeting precision requirements for reporting

§Error Prevention

  • Rate Validation: Verify rate is within reasonable market ranges
  • Sign Consistency: Ensure negative sign usage is appropriate
  • Precision Check: Confirm adequate precision for calculations
  • Market Alignment: Validate rate against current market conditions
  • Field 30: Date specifications (rate effective dates)
  • Field 32A: Value Date, Currency, Amount (principal amounts)
  • Field 36: Exchange Rate (currency conversion rates)
  • Derivative Terms: Rate application and calculation periods

§Interest Rate Environment

  • Normal Rates: Positive interest rate environments
  • Zero Rates: Zero interest rate policy (ZIRP) periods
  • Negative Rates: Negative interest rate policy (NIRP) environments
  • Volatile Rates: High volatility and uncertainty periods

§STP Processing

  • Rate Standardization: Consistent rate format for automation
  • Automated Calculations: System-driven interest calculations
  • Validation Enhancement: Real-time rate validation and verification
  • Exception Handling: Automated detection of rate anomalies

§Compliance Framework

  • Regulatory Rates: Central bank and regulatory rate requirements
  • Market Conduct: Fair and transparent rate setting and application
  • Documentation: Comprehensive rate documentation and audit trails
  • Risk Management: Rate risk assessment and control frameworks

§Risk Management Applications

  • Interest Rate Risk: Duration and convexity analysis
  • Credit Risk: Credit spread and default rate considerations
  • Market Risk: Rate volatility and scenario analysis
  • Operational Risk: Rate accuracy and calculation precision

§See Also

  • Swift FIN User Handbook: Interest Rate Field Specifications
  • Market Rate Standards: Rate Quotation and Calculation Conventions
  • Central Bank Guidelines: Reference Rate Standards and Policies
  • Risk Management: Interest Rate Risk Measurement and Control Field 37H: Interest Rate Structure

Contains interest rate with directional indicator and negative rate support.

Fields§

§rate_indicator: char

Rate type indicator

Format: 1!a - ‘C’ (Credit rate) or ‘D’ (Debit rate) Specifies whether rate applies to credit or debit transactions

§is_negative: Option<bool>

Negative rate indicator

Format: [1!a] - Optional indicator for negative interest rates True when rate is negative (below zero), None for positive rates

§rate: f64

Interest rate value

Format: 12d - Decimal rate with comma separator (typically percentage) Example: 2,5000 represents 2.5% interest rate

Trait Implementations§

Source§

impl Clone for Field37H

Source§

fn clone(&self) -> Field37H

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Field37H

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Field37H

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Field37H

Source§

fn eq(&self, other: &Field37H) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Field37H

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl SwiftField for Field37H

Source§

fn parse(value: &str) -> Result<Self>

Parse field value from string representation
Source§

fn to_swift_string(&self) -> String

Convert field back to SWIFT string format
Source§

fn format_spec() -> &'static str

Get field format specification
Source§

fn parse_with_variant( value: &str, _variant: Option<&str>, _field_tag: Option<&str>, ) -> Result<Self>
where Self: Sized,

Parse field value with variant hint for enum fields Default implementation falls back to regular parse
Source§

fn valid_variants() -> Option<Vec<&'static str>>

Get valid variant letters for enum fields Returns None for non-enum fields, Some(vec) for enum fields
Source§

impl StructuralPartialEq for Field37H

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,