RustyQLib 0.0.3

RustyQLib is a lightweight yet robust quantitative finance library designed to price derivatives and perform risk analysis
Documentation
<?xml version="1.0" encoding="UTF-8"?>
<!--
  The XML equivalent of equity_option.json.

  Conventions:
    - elements are object fields
    - attributes are object fields too (handy for enum tags: type="flat")
    - <item> children make an array, including single-element arrays
    - scalars are inferred: numbers become numbers, "2027-03-31" stays a string
-->
<contracts>
  <asset>EQ</asset>
  <contracts>
    <!-- European call, flat rate, analytic -->
    <item>
      <action>PV</action>
      <asset>EQ</asset>
      <product_type product_type="option">
        <symbol>ABC</symbol>
        <underlying_price>100.0</underlying_price>
        <put_or_call>C</put_or_call>
        <payoff_type>vanilla</payoff_type>
        <strike_price>100.0</strike_price>
        <volatility>0.4</volatility>
        <maturity>2027-03-31</maturity>
        <dividend>0.01</dividend>
        <risk_free_rate>0.06</risk_free_rate>
        <exercise_style>European</exercise_style>
        <pricer>Analytical</pricer>
      </product_type>
    </item>

    <!-- European put on a zero curve and a strike x expiry vol surface -->
    <item>
      <action>PV</action>
      <asset>EQ</asset>
      <product_type product_type="option">
        <symbol>ABC</symbol>
        <underlying_price>100.0</underlying_price>
        <put_or_call>P</put_or_call>
        <payoff_type>vanilla</payoff_type>
        <strike_price>100.0</strike_price>
        <maturity>2027-03-31</maturity>
        <dividend>0.01</dividend>
        <exercise_style>European</exercise_style>
        <pricer>Analytical</pricer>
        <discount_curve type="zero_rates">
          <tenors>
            <item>0.25</item>
            <item>0.5</item>
            <item>1.0</item>
            <item>2028-03-31</item>
          </tenors>
          <rates>
            <item>0.045</item>
            <item>0.05</item>
            <item>0.055</item>
            <item>0.06</item>
          </rates>
          <compounding>continuous</compounding>
          <day_count>Act365</day_count>
        </discount_curve>
        <vol_surface type="strike_expiry">
          <expiries>
            <item>0.25</item>
            <item>1.0</item>
            <item>2.0</item>
          </expiries>
          <strikes>
            <item>80.0</item>
            <item>90.0</item>
            <item>100.0</item>
            <item>110.0</item>
            <item>120.0</item>
          </strikes>
          <vols>
            <item>
              <item>0.46</item><item>0.43</item><item>0.40</item><item>0.38</item><item>0.37</item>
            </item>
            <item>
              <item>0.44</item><item>0.42</item><item>0.40</item><item>0.39</item><item>0.38</item>
            </item>
            <item>
              <item>0.43</item><item>0.41</item><item>0.40</item><item>0.39</item><item>0.39</item>
            </item>
          </vols>
          <day_count>Act365</day_count>
        </vol_surface>
      </product_type>
    </item>

    <!-- Equity future -->
    <item>
      <action>PV</action>
      <asset>EQ</asset>
      <product_type product_type="future">
        <symbol>ABC</symbol>
        <underlying_price>100.0</underlying_price>
        <current_price>104.0</current_price>
        <risk_free_rate>0.06</risk_free_rate>
        <maturity>2027-03-31</maturity>
        <dividend>0.01</dividend>
      </product_type>
    </item>
  </contracts>
</contracts>