{ "cells": [ { "cell_type": "markdown", "id": "6163172a-1a41-4d8b-ba8d-afb0cc29604c", "metadata": {}, "source": [ "# 03-Finance Tutorial- Pricing European Call Options\n", "### Modified for Quantum Rings toolkit for Qiskit 2.x" ] }, { "cell_type": "code", "execution_count": 3, "id": "4b5b9a17-773c-4aca-afac-04b00bad927f", "metadata": {}, "outputs": [], "source": [ "# This code is from:\n", "# https://qiskit-community.github.io/qiskit-finance/tutorials/03_european_call_option_pricing.html\n", "\n", "# Modified for use with Quantum Rings toolkit" ] }, { "cell_type": "code", "execution_count": 4, "id": "ce3450ff-3ec2-4546-a563-20d954c86ba0", "metadata": {}, "outputs": [], "source": [ "#\n", "# Setup your account\n", "# You can also save your account locally using the class method QrRuntimeService.save_account(...) and\n", "# invoke the QrRuntimeService class constructor without any arguments.\n", "#\n", "import os\n", "\n", "my_token = os.environ[\"QR_TOKEN\"]\n", "my_name = os.environ[\"QR_ACCOUNT\"]\n", "\n", "#\n", "# Set the backend of your choice, depending upon the task and your hardware configuration.\n", "# See SDK documentation for additional help.\n", "#\n", "\n", "my_backend = \"scarlet_quantum_rings\"" ] }, { "cell_type": "code", "execution_count": 5, "id": "daf6cd2d-4dcb-4a52-9e0b-07f5cc5a87de", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "import numpy as np\n", "\n", "from qiskit import QuantumCircuit\n", "from qiskit_algorithms import IterativeAmplitudeEstimation, EstimationProblem\n", "from qiskit.circuit.library import LinearAmplitudeFunction\n", "#from qiskit_aer.primitives import Sampler\n", "from qiskit_finance.circuit.library import LogNormalDistribution\n", "\n", "from quantumrings.toolkit.qiskit import QrRuntimeService\n", "from quantumrings.toolkit.qiskit import QrSamplerV2 as Sampler\n", "\n", "#\n", "# Acquire Quantum Rings Backend\n", "#\n", "\n", "qr_services = QrRuntimeService(name = my_name, token = my_token)\n", "qr_backend = qr_services.backend(name = my_backend, precision = \"single\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "33f326d2-691e-48e0-a906-9ef82b8ebf72", "metadata": {}, "outputs": [], "source": [ "# number of qubits to represent the uncertainty\n", "num_uncertainty_qubits = 3\n", "\n", "# parameters for considered random distribution\n", "S = 2.0 # initial spot price\n", "vol = 0.4 # volatility of 40%\n", "r = 0.05 # annual interest rate of 4%\n", "T = 40 / 365 # 40 days to maturity\n", "\n", "# resulting parameters for log-normal distribution\n", "mu = (r - 0.5 * vol**2) * T + np.log(S)\n", "sigma = vol * np.sqrt(T)\n", "mean = np.exp(mu + sigma**2 / 2)\n", "variance = (np.exp(sigma**2) - 1) * np.exp(2 * mu + sigma**2)\n", "stddev = np.sqrt(variance)\n", "\n", "# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.\n", "low = np.maximum(0, mean - 3 * stddev)\n", "high = mean + 3 * stddev\n", "\n", "# construct A operator for QAE for the payoff function by\n", "# composing the uncertainty model and the objective\n", "uncertainty_model = LogNormalDistribution(\n", " num_uncertainty_qubits, mu=mu, sigma=sigma**2, bounds=(low, high)\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "id": "aecf2641-126d-4c21-af13-45dadceb4d86", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "<>:8: SyntaxWarning: invalid escape sequence '\\$'\n", "<>:9: SyntaxWarning: invalid escape sequence '\\%'\n", "<>:8: SyntaxWarning: invalid escape sequence '\\$'\n", "<>:9: SyntaxWarning: invalid escape sequence '\\%'\n", "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_21124\\2885665035.py:8: SyntaxWarning: invalid escape sequence '\\$'\n", " plt.xlabel(\"Spot Price at Maturity $S_T$ (\\$)\", size=15)\n", "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_21124\\2885665035.py:9: SyntaxWarning: invalid escape sequence '\\%'\n", " plt.ylabel(\"Probability ($\\%$)\", size=15)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAHpCAYAAACx2imvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaaNJREFUeJzt3Qd4FOX3PvyTBAi9CdJ7l16kiAiCFEE6KKIIol8VQUFUBCnSlCJFpCoKKCjSO1Kl9yJVivSO9E6AZP7XfX7v7LvZ7CabbAYyu/fnupYNM7sz82w9+8x5zhNkGIYhRERERBSvguN3c0REREQEDLKIiIiILMAgi4iIiMgCDLKIiIiILMAgi4iIiMgCDLKIiIiILMAgi4iIiMgCDLKIiIiILJDIio2SdyIiIuTcuXOSKlUqCQoKetKHQ0RERF5AHfdbt25J1qxZJTg4mv4qw0bu3r1r9OzZ0yhQoIARGhpqZMmSxXj77beNM2fOeL2Nhw8fGl999ZVRt25dI0+ePEbKlCl1W/nz5zfatWtnnDhxwu39Wrdujcr4Hi9jx46NdXtOnz4d7TZ54YUXXnjhhRdJsBd8j0cnCP+IDdy/f19efPFF2bx5s2TJkkWqVKkiJ06ckK1bt0rGjBl1ed68eWPczu3bt7XnKGXKlFKiRAmNQh88eCC7du2SU6dOSerUqWXlypVSrly5SPdr06aN/PLLL1K7dm3JnDlzlO22bt1ajy82bty4IWnTppXTp0/rfu3k4cOHsmzZMqlVq5YkTpxY/FEgtDFQ2sk2+o9AaCfbmPDdvHlTcuTIIdevX5c0adLY/3Rh//79NZCqVKmSPjEIkmDYsGHy6aefStu2bWX16tUxbidp0qSyfv16qVChgiRK9P83Pzw8XHr06CEDBw6UDz74QLZv3+72/l27dpVq1arFS5vMU4QIsOwYZCVPnlyP245vEG8EQhsDpZ1so/8IhHayjfYRU6qPLRLf0dM0atQo/Xv06NGOAAs6d+6sPVJr1qyRHTt2xLgtBFaVK1eOFGBBSEiI9OvXT4MwbAe9TERERERxZYsga8OGDRr05MuXT0qXLh1lfbNmzfR6wYIFPkekCLZwnSRJEp+2RURERIHNFqcLd+/erddlypRxu95cvmfPnjjvA6lpgwYNkjt37kj16tUlWbJkbm83e/ZsmTVrlp5ezJMnj9SvX18KFy4c5/0SERGRf7JFkIWEdMiePbvb9ebykydPxmq7X3zxhVy8eFET2BCgHT16VIoUKSI//fSTx/uMHDkyyjbatWsnI0aMiHIK0lVYWJheTNiveW4aFzsxj9duxx0bgdDGQGkn2+g/AqGdbGPC5+1x2yLIwohAQJKcOylSpNBr1KyIDfRIIbAyIbdrypQp2kPlCqcpkXSPXi4EdRcuXJA///xTk+XHjBmjpxeHDx8e7f4GDBggffr0ibIcifye2pbQLV++XPxdILQxUNrJNvqPQGgn25hw3b1716vb2aKEw3vvvSfjx4+X7t276yhDV0eOHJECBQro5fDhw7He/uXLlzXZHdtHjxb2hZIM3ti/f7+erkRh0WPHjumQztj0ZOH22L8dRxfizVGzZk1bjwwJ9DYGSjvZRv8RCO1kGxM+fH9nyJBB88Wj+/62RU+WOZrQU+SIPCpA/au4wAOF+lcVK1aU4sWL6+k/9FhFFzCZihYtKg0aNJCZM2dqfS3U0/IkNDRUL67wArPji8zux+6tQGhjoLSTbfQfgdBOtjHh8vaYbTG6MGfOnHp95swZt+vN5bly5fJpPygohkT2e/fuxaoLEz1ocP78eZ/2T0RERP7DFkFWyZIl9Xrnzp1u15vLkVPlK/RqwaVLl7y+z7Vr1yLlhhERERHZIshC8VD0MiFJHdPfuMKpOkAvlK9Q1BRQk8sbyLFatGhRtCUmiIiIKPDYIsjCyL0OHTro3+3bt3fkYJnT6iBZvWrVqlK2bFnHclSIR/2qbt26RdoWAqKNGzdG2QfyvZD4jiALcxPWqVPHse7gwYMyefLkSEnrZm9XixYtdO5B9LYhGCQiIiKyTeI7oFTCihUrNEBCDhQmiEZdrC1btugE0RMmTIh0e4zYO3ToUJQ8qW3btmkZhWzZskmpUqW0hwzlGNBDdvXqVf3/9OnTI03dg/VvvfWWdOzYUSeOxv7OnTunIxJRNgIlHXCfmOYwIiIiosBhmyALcwquWrVKa039/vvvMnfuXEmfPr2O5sOcg54Klbpq0qSJBkbr1q3TgAuBFaq758+fX95//3356KOPJEuWLJHuU7BgQenUqZNOUL137165cuWKjhLEcpyiRPCVLl06i1pOREREdmSbIAsQDPXt21cvMendu7deXCE5fujQobHab9asWWMsNEpERERku5wsIiIiIruxVU8WEfmn3F3/b4SuVUJDDBlcXqRY76USFm5d7uSJgfUs2zYR2Q97soiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgCPci6d++e9OrVSwoWLChJkyaVrFmzStu2beXs2bNeb+PRo0fSu3dvqVevnuTNm1dSpUql2ypQoIB8+OGHcvLkSY/3DQ8Pl+HDh0vx4sUlWbJkkjFjRnn11VflwIED8dRCIiIi8he2CbLu378v1atXl379+snt27elYcOGkiNHDpk4caKULl1ajh075vV2+vTpI2vXrpUsWbJInTp1pHbt2vLgwQMZO3aslChRQrZv3x7lfhEREdK8eXPp3LmznDlzRoO0okWLysyZM6VcuXKydetWC1pNREREdmWbIKt///6yefNmqVSpkhw+fFimTZsmW7ZskaFDh8qlS5e0R8sb6LVav369XLt2TTZs2CAzZsyQefPmaZDWtWtXuXnzpnzwwQdR7jdhwgSZM2eO9ngdPHhQg6vVq1fr/e/evStvvPGG9pIRERER2SbIQi/TqFGj9O/Ro0dLypQpHevQs4TepzVr1siOHTti3FaiRImkcuXKeu0sJCREe8kQhGE7N27ciLR+2LBhej148GDJlCmTY3nTpk2lQYMGcuTIEQ3WiIiIiGwTZKHHCUFPvnz59NSgq2bNmun1ggULfNpPUFCQBlu4TpIkiWP58ePHNe8KeVg4TWjV/omIiMh/2CLI2r17t16XKVPG7Xpz+Z49e+K8D8MwZNCgQXLnzh158cUXNaBy3X+xYsUkceLEluyfiIiI/Evkc2YJ1KlTp/Q6e/bsbteby6MbGejOF198IRcvXtQ8LARIR48elSJFishPP/1kyf7DwsL0YsJ+4eHDh3qxE/N47XbcsREIbUwo7QwNMazdfrAR6doqT/IxTAjP4+MQCO1kGxM+b4/bFkEWRhNC8uTJ3a5PkSKFXt+6dStW2501a5YGVibkdk2ZMkXy5Mljyf4HDBigIxtdLVu2zOO2E7rly5eLvwuENj7pdg4u/3j2069chKXbX7x4sTxpfL36D7Yx4cKAN78JsqyCZHW4fPmyJrt3795dypYtK+PHj5fWrVvH+/66deumifrOPVkoQ1GrVi1JnTq12C2Kx5ujZs2abk+h+oNAaGNCaWex3kst3T56sBBg9dweLGERQZbtZ1/v2hLIz+PjEAjtZBsTPvNMlF8EWeZoQk+RI/KoAIVF4yJDhgxaK6tixYpaaLRdu3ZakwsBUHzuPzQ0VC+u8AKz44vM7sfurUBo45NuZ1h40OPZT0SQpftKCK8Tvl79B9uYcHl7zLZIfM+ZM6deowioO+byXLly+bSfNGnSSP369bWyvHMX5uPaPxEREfkPWwRZJUuW1OudO3e6XW8uR06Vr9CrBShw6rr/ffv2uU12i8/9ExERkX+wRZCF4qHoZUKS+q5du6KsR/V1QC+Ur1DUFFCTy4REeIw6RA/XokWLLN0/ERER+QdbBFkoDNqhQwf9u3379o4cKLMSO8ovVK1aVZPWTagQX7hwYU02d4YgaePGjVH2gXwrJL4jyMqcObPOaejMTFjv0qWL/Pfff47ls2fPlvnz50v+/Pl1PkUiIiIi2yS+Q48ePWTFihUaIGH+wCpVqmhdKsxfmDFjRp1b0BlGDB46dEjOnz8fafm2bdu0jEK2bNmkVKlS2kN24cIF7SG7evWq/n/69OmRpu4BzI2I4dmYvxDBW40aNXQfCMpQuBSlH1yn6iEiIqLAZYueLMCcgqtWrZKePXtqTam5c+dqkNWmTRvNicqbN69X22nSpIn2SmXNmlUDLgRUuEbSOnq9MH0OAjhXwcHBOhk0JqTGfRcuXCh79+7VuQu3b98uFSpUsKDVREREZFe26npBj1Hfvn31EpPevXvrxRWS0xEoxQXmNUSA5lzrioiIiMjWPVlEREREdmKrniwiIrvK3TXqyOT4nv8R0xOher6VBVdPDKxn2baJ/A17soiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgswCCLiIiIyAIMsoiIiIgCPci6d++e9OrVSwoWLChJkyaVrFmzStu2beXs2bNeb+P69evy+++/y+uvvy558uSRJEmSSKpUqaRChQoyYsQIefjwodv7tWnTRoKCgjxexo0bF48tJSIiIrtLJDZx//59qV69umzevFmyZMkiDRs2lBMnTsjEiRNl4cKFujxv3rwxbmfIkCHy9ddfa2BUqlQpDa4uXbokGzZskK1bt8rMmTNl6dKlkjx5crf3r127tmTOnDnK8kKFCsVLO4mIiMg/2CbI6t+/vwZSlSpVkmXLlknKlCl1+bBhw+TTTz/VHq3Vq1fHuJ0UKVJIly5dpH379pIzZ07H8n///VdeeuklWb9+ve7rm2++cXv/rl27SrVq1eKxZUREROSPbHG68MGDBzJq1Cj9e/To0Y4ACzp37iwlSpSQNWvWyI4dO2LcVrdu3WTQoEGRAiwoUKCADBw4UP+eOnVqvLeBiIiIAostgiycyrtx44bky5dPSpcuHWV9s2bN9HrBggU+7adkyZJ6fe7cOZ+2Q0RERGSL04W7d+/W6zJlyrhdby7fs2ePT/s5duyYXrvLuTLNnj1bZs2aJeHh4Zo4X79+fSlcuLBP+yUiIiL/Y4sg69SpU3qdPXt2t+vN5SdPnvRpPxhdCEiq92TkyJGR/v/FF19Iu3bt9L6JEkX/cIaFhenFdPPmTb3GiEZPoxoTKvN47XbcsREIbUwo7QwNMazdfrAR6doq0T2GgdDGQHm9Wo1tTPi8Pe4gwzCM+MiZOnDggI7SQ4mEtGnTSsaMGaVIkSJaIsFX7733nowfP166d++uSemujhw5ojlVuBw+fDhO+0AJBgRLOPb9+/dreQhnCKJQNgIjHBHUXbhwQf7880/p0aOHXLt2TTp16iTDhw+Pdh+9e/eWPn36RFmOkhKeRjMSERFRwnL37l1p2bKlpjKlTp06/oMsBFSTJk2SRYsWaekD5x4aU2hoqJQvX15eeeUVad26tQZeCTHIWrdunY4sRGSKU4GNGzf2+r4IyHC6MiIiQk835siRI1Y9Wbj95cuXo32SEiI8VsuXL5eaNWtK4sSJxR8FQhsTSjuL9V5q6fbRu9OvXIT03B4sYRFBlu1nX+/aAd3GQHm9Wo1tTPjw/Z0hQ4YYg6xYny5EQNOzZ0+ZM2eO9mABdlS2bFlJnz697gw7Re/OwYMHZe3atXpBj0+TJk2kb9++kj9//ljt0xxNiMjRnTt37ug1iorG1r59+/T0INry/fffxyrAgqJFi0qDBg20vtbKlSu1aKknCDpxcYUXmB1fZHY/dm8FQhufdDvDwoMez34igizdV3SPXyC08XEKhPcl25hweXvMsQqyOnTooD1KSPp+8cUXtasMNaOQAO4JendWrVqlp8SmT5+uPUXomXLNbYqOWW7hzJkzbteby3PlyhWb5sjx48elVq1aGhDiVN5HH30kcYEeNDh//nyc7k9EREQBXsJhwoQJmreERHR087399tvRBliAKuzvvPOO9vIgMf2DDz7Q7cSltMLOnTvdrjeXo16WtxAQoZsS1x07dpSvvvpK4gpBmlnolIiIiCjWQRZ6pb777rsoSeHeypYtmyaQHz16NFb3q1y5sqRJk0bvt2vXrijrcaoOUE7B26AI0+NgewgUY0pYjw5yrJCXFl2JCSIiIgo8sQqyoqsfZeV2MEIRpyoB0+GYOVjmtDqoj1W1alXNCzOhQjzqV6HCuzPkddWrV0/27t0rr776qp7+xDyG0UFu2eTJk6Mk9yP5v0WLFnL69GntbUMwSERERGSbOlmAxPkVK1bIxo0bNQeqSpUqevpxy5YtOmrR9RQkRuwdOnQoSp4URihu2rRJQkJCtK4VTmW6g5GTJpRreOutt/S0Yrly5XR/qAqPaXxu3bqlJR2QbxZTsEZERESBI96DrPv372uS+z///CPBwcFSrFgx7e3xtV4WalQhgX7AgAG6/blz5+poRozm69evn8dCpZ7yp5C8j+144hxkFSxYUOtgYYJq9IBduXJFRwliOU5RIvhKly6dT+0jIiIi/xKvQRZO26EmlvMoQPTuoGwDCneao/DiKlmyZLotXGKC0YK4uAuenAMobyAHzZe8LSIiIgo88TpB9Pvvv689POhxQt7Uf//9J0OHDpUTJ07Ixx9/HJ+7IiIiIvKfniycAnzmmWfcrkMxT+RHITcJSehmzxNOsyGXCoEXERERUaCIVU9WqVKl5LPPPpPbt29HWYckclRARe+VKyxDwEVEREQUKGIVZCEX6ocffpBChQrJb7/9FnlDwcE6vUzXrl11fsElS5bI7NmzpVmzZrJ9+/ZYT1dDREREFDBBFgKoAwcOyPPPPy+tWrXS04IYbWdCAIZpdnr16qW1qBBgmYEWE8eJiIgokMQ68R2lEqZNm6bT5KCUAQqAooQBJoVGSYX58+drfSqUWJg3b55OKI08LXOSZyIiIqJAEOfRhZggevfu3TJw4ED55ZdftGaUWRoBpRpQPwoXzF1IREREFGh8KuGAqumdO3fWaWcwFyCqpz/33HPy999/x98REhEREQVSkPXo0SM9XWjORfjrr7/K2rVr5d69e1K+fHlp166do7o6ERERUaCJdZCF/KoSJUpoSYann35ac61ee+01OXr0qE6QjPn8vvvuO70dTiH++OOP1hw5ERERkb8EWWPHjpXXX39d617h1GCXLl2kZs2aMmfOHKlQoYKcPXtWSzm0b99eDh8+LI0aNdIeLfRsbd261bpWEBEREdk5yBoyZIjkyJFDyziMGzdOJ2tGgIVeq6tXr8qECRMct33qqadk/PjxOqkyIFeLiIiIKFDEKshCTxVKNqRLly7S8ho1auj1uXPnotzn2Wef1V4s1NAiIiIiChSxCrKKFi2q9bG2bdvmWGYYhk4CHRQU5HFeQ8DpRSIiIqJAkSi2pwvr1q0rFStW1Kl10KN17NgxuXjxoibDM5AiIiIiikNPFgqQIh/rgw8+0Oru169f10mjR4wYIVu2bJHkyZPHZnNEREREfitWPVmQO3duGT16tDVHQ0REROQnfKr4TkRERETxEGTt378/Nje3fDtEREREfhFkIbkdxUj37NkTp51hTsNXX31VSpYsGaf7ExEREfllkPXVV1/JokWLpHTp0prwPmjQIC02GhYW5vb29+/fl02bNmnR0uLFi0u5cuVkyZIluh0iIiIifxarxPdevXrpyMKvv/5aJ4Tu1q2b1sdKlCiRVoJHSYdUqVLJrVu3tAL86dOnJTw8XGtppUmTRjp27Kj3yZgxo3UtIiIiIrLj6EJMCo2SDQMHDtTpdBYuXCjr16/XelmuMmfOLFWqVJF69erpacKkSZPG13ETERER+VeQZUqWLJm0bt1aL3Dp0iWdOPrGjRvaa4VgjD1WREREFKjiHGS5QkDFoIqIiIjo/7BOFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREVFCC7L69OkjZ86cib+jISIiIvITPgdZefLkkfr168v8+fMlIiIi/o6MiIiIKFCDrP79+0vOnDll0aJF0rhxY50kumfPnnLixAmxwr1793SS6oIFC+o8iFmzZpW2bdvK2bNnvd7G9evX5ffff5fXX39dA8QkSZLopNYVKlTQORkfPnzo8b6Y7Hr48OFSvHhxnVYIFe4xJ+OBAwfiqYVERETkL3wKsr788ks5evSoLFu2TJo3by5XrlyRr7/+WvLnzy916tSRWbNmyaNHj+LlQO/fvy/Vq1eXfv36ye3bt6Vhw4Ya1E2cOFFKly7tdoJqd4YMGSJvvPGGTJs2TdKlSydNmjSR8uXLy+7du6VTp066j7t370a5H3rp0MbOnTvrKVJMel20aFGZOXOmlCtXTrZu3Rov7SQiIiL/EC+J7y+99JL88ccf2qOEIKZQoUIaeKGXJ3v27NK1a1f5999/xddes82bN0ulSpXk8OHDGiRt2bJFhg4dqpNTo0fLGylSpJAuXbpob9vOnTv1uFeuXCl79+7VXrn169frvlxNmDBB5syZIwUKFJCDBw9qcLV69WqZMWOGBmUI3OIroCQiIiL7i9fRhU899ZT29Ozfv1+DFZyS+++//+Tbb7+VwoULS40aNTRQia0HDx7IqFGj9O/Ro0dLypQpHeuwvxIlSsiaNWtkx44dMW6rW7duMmjQIA2onCF4GjhwoP49derUKPcbNmyYXg8ePFgyZcrkWN60aVNp0KCBHDlyRObNmxfrthEREZF/sqSEA04hLliwQHuITOjRWrVqlTRr1kxPz50+fdrr7W3YsEFu3Lgh+fLl01ODrrBNwD59UbJkSb0+d+5cpOXHjx/XvCvkYeE0oVX7JyIiIv8Rb0EWEsZx6g29VUhMR28RTp+hpwmn106ePKnB0ssvvyzbt2+XDh06eL1t5EtBmTJl3K43l+/Zs8enNph5XZkzZ3a7/2LFiknixIkt2z8RERH5j0S+bgA9POPHj5fJkyfL1atXxTAMee655+SDDz7QRPHQ0FDHbZFPtXDhQqlYsaKe3vPWqVOnHL1h7pjLEcj5AqMLAUn1T2L/RERE5D98CrKef/552bRpkwZWqVOnlnbt2mlwhR6f6GBU3rZt27zeD0YTQvLkyT0ms8OtW7ckrsaNGycrVqyQtGnTaqK+FfsPCwvTi+nmzZuOXsDoSkckRObx2u24YyMQ2phQ2hkaYli7/WAj0rVVonsMA6GNgfJ6tRrbmPB5e9w+BVkbN27UU2UIrFq2bOkxCHH17rvvygsvvCAJxbp166Rjx44SFBSkowhRf8sKAwYM0AKurjAS09vHLqFZvny5+LtAaOOTbufg8o9nP/3KWVswefHixQHdxscpEN6XbGPC5a7UU7wHWeiNKlu2bKzvh9OGuHjLHE3oqVF37tzRaxQVja19+/bp6UGMYPz++++1qKpV+8fIRuSoOfdkodZXrVq1tCfQblE83hw1a9Z0m6fmDwKhjQmlncV6L7V0++jdQfDRc3uwhEUEWbaffb1rB3QbA+X1ajW2MeEzz0RZGmShnAJOGcZUo2rSpEmydu1a7SWKC7Pcgqd5Es3luXLlitV2MWoQAc61a9ekd+/e8tFHH1m6f+SnOeeomfACs+OLzO7H7q1AaOOTbmdYeNDj2U9EkKX7iu7xC4Q2Pk6B8L5kGxMub4/Zp9GFCJ5QDysmGFX4yy+/+FxaAcVD3TGXo16Wt86fP68RNK5xqvCrr76Kcf/o9XJ3HjYu+yciIiL/ZkmdLFc4FRcSEhLn+1euXFnSpEmj9bd27doVZT2qrwMmqvYGeq5q166t23v77bd1PsLoYI7DIkWK6NyJmKfR1/0TERGR/7M8yMLIQ/T0YDLluMIkzmZdrfbt2ztyoMxK7KhPVbVq1Uj5YagQjyrzyINyhrwqFBTFNDqY9gflJ5DwHhMzlwpT8qCKvWn27Nkyf/58na/RtfQDERERBa5Y52RhAmVnS5YsibLMhGKk6C26cOGCtGrVKu5HKSI9evTQEgsY0YgpcKpUqaJ1qTB/IQI413yvy5cvy6FDh/R0oLPu3btr2Qn0rCVKlEjeeecdj6dCnSHvDKNqMC2QOUUQ9oF6X6gEP2XKFN0eEREREcQ6KsCkyCb0ACGAwiW65LBXXnlFJ472RdKkSXVaHpRB+P3332Xu3LmSPn16adOmjfTr189joVB3pwohPDxct+OJa5AVHBysk0GjYCkCOhRVRX0szF2IsgzPPPOMT+0jIiKiAA+yMCLPPA2YN29enbcPE0B7Os2XIUOGeBs5gB6jvn376iUmGC2Ii7vgyTWA8hZ6v3Da0LkMAxEREVG8BFnOZQowIg8TNse2dAIRERGRv/MpiSi6sgdEREREgeyxlHAgIiIiCjSx6slCDhaS3THKD7Wj8H9v4X4YaUhEREQUCGIVZJ04cUKvzarn5v+JiIiIyIcgKyIiItr/ExEREdH/YU4WERERkQUYZBERERElhMT3uGLiOxEREQWSOCW+ExEREZGFie9ERERE5B5zsoiIiIgswCCLiIiIyAIMsoiIiIgswGl1iIiIiCzAaXWIiIiILMBpdYiIiIgswJwsIiIiIgswyCIiIiJ60qcLvXHt2jW9Tps2rSa7ExEREQWieOnJmj9/vtSqVUtSpkwpGTJk0EuqVKl02bx58+JjF0RERESBE2QZhiFt27aVxo0ba1mHu3fvSpo0afSCv7GsSZMm0qZNG70tERERUaDwKcgaMWKETJo0SbJkySJjx46V69evy9WrV/Vy48YNGTdunK6bPHmy3paIiIgoUPgUZP3444+SPHlyWbdunbz//vuSOnVqxzqcLnzvvfd0XbJkyfS2RERERIHCpyDr+PHjUqNGDa3+7gnW4Ta4LREREVGg8Gl0YcaMGSVJkiQx3i5x4sSaDE9EsZe76yJLtx8aYsjg8iLFei+VsHDrRgSfGFjPsm0TEfldTxYS3v/66y9H2QZ3kJ+F2zRq1MiXXREREREFTpDVv39/nSS6evXqGki5WrVqldSsWVPy5csn33zzjS+7IiIiIvLf04UIplzhdOGOHTs0mEqfPr3kypVLl586dUquXLmif1esWFF7slauXBlfx01ERETkP0HW6tWrPa5DHSwEVWZg5WzTpk2s/k5EREQBJVZBFkcIEhEREVkQZJmnAomIiIjoMcxdSERERETxWCfLzMX67bffdCLof//9V27duuV2nkLkZB09etTX3RERERH5f5D14MEDqVevnpZv8DQBNIIrTg5NREREgcan04VDhw7VsgyvvPKK9mK1atVKg6qwsDA5cOCA9O7dW1KkSCGff/65RERE+Hyw9+7dk169eknBggUladKkkjVrVmnbtq2cPXs2VttZs2aN9OnTRwNEVK3HMefOnTva+7Rp00Zv5+mCybCJiIiI4qUna9q0aVob6/fff9dgKjg42DGNTqFChTQgevHFF/WC/yMgiqv79+9rna7NmzdLlixZpGHDhnLixAmZOHGiLFy4UJejMKo3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ERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREVGgB1n37t2TXr16ScGCBSVp0qSSNWtWadu2rZw9ezbW27p27Zp07NhRcuXKJaGhoXrdqVMnuX79utvbt2nTRoKCgjxexo0bFw8tJCIiIn+RSGzi/v37Ur16ddm8ebNkyZJFGjZsKCdOnJCJEyfKwoULdXnevHm92tbly5elUqVKcuTIEb1Po0aNZP/+/TJixAj5888/ZdOmTZI+fXq3961du7Zkzpw5yvJChQr53EYiIiLyH7YJsvr376+BFIKjZcuWScqUKXX5sGHD5NNPP9UerdWrV3u1LfRYIcBq0qSJTJs2TRIl+r+H4eOPP5aRI0dK586dZdKkSW7v27VrV6lWrVo8toyIiIj8kS1OFz548EBGjRqlf48ePdoRYAECohIlSsiaNWtkx44dMW7r/PnzMnXqVEmSJImMGTPGEWDBt99+KxkzZpQpU6bIf//9Z1FriIiIKBDYIsjasGGD3LhxQ/LlyyelS5eOsr5Zs2Z6vWDBghi3tWTJEomIiJAqVapIpkyZIq1Dblb9+vUlPDxcFi9eHI8tICIiokBji9OFu3fv1usyZcq4XW8u37NnT7xsa8KECR63NXv2bJk1a5YGYnny5NGgrHDhwl63hYiIiAKDLYKsU6dO6XX27NndrjeXnzx50vJtIWfL2RdffCHt2rXTpHnnU4/uhIWF6cV08+ZNvX748KFe7MQ8Xrsdtx3bGBpiWLv9YCPStVWiexzZRv9oYyC1MxA+e6z00OZt9Pa4bRFk3b59W6+TJ0/udn2KFCn0+tatW5ZtC6cpkXSPEY4IxC5cuKAjEXv06KG5XcjxGj58eLT7HjBggPTp0yfKciTyezqehG758uXi7550GweXfzz76VcuwtLtR3cKnm30jzYGUjsD4bPncVhu0zbevXvXf4KshAA1tZzhVOGHH34oVatW1VOMSMxHEn6OHDk8bqNbt256G+eeLNy+Vq1akjp1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot probability distribution\n", "x = uncertainty_model.values\n", "y = uncertainty_model.probabilities\n", "plt.bar(x, y, width=0.2)\n", "plt.xticks(x, size=15, rotation=90)\n", "plt.yticks(size=15)\n", "plt.grid()\n", "plt.xlabel(\"Spot Price at Maturity $S_T$ (\\$)\", size=15)\n", "plt.ylabel(\"Probability ($\\%$)\", size=15)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "id": "d48073ba-ab68-4034-bb99-048c3aa79e07", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_21124\\944600917.py:13: DeprecationWarning: The class ``qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction`` is deprecated as of Qiskit 2.2. It will be removed in Qiskit 3.0. Use the class qiskit.circuit.library.LinearAmplitudeFunctionGate instead.\n", " european_call_objective = LinearAmplitudeFunction(\n" ] }, { "data": { "text/html": [ "
     ┌───────┐┌────┐\n",
       "q_0: ┤0      ├┤0   ├\n",
       "     │       ││    │\n",
       "q_1: ┤1 P(X) ├┤1   ├\n",
       "     │       ││    │\n",
       "q_2: ┤2      ├┤2   ├\n",
       "     └───────┘│    │\n",
       "q_3: ─────────┤3 F ├\n",
       "              │    │\n",
       "q_4: ─────────┤4   ├\n",
       "              │    │\n",
       "q_5: ─────────┤5   ├\n",
       "              │    │\n",
       "q_6: ─────────┤6   ├\n",
       "              └────┘
" ], "text/plain": [ " ┌───────┐┌────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ │\n", "q_3: ─────────┤3 F ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " │ │\n", "q_6: ─────────┤6 ├\n", " └────┘" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# set the strike price (should be within the low and the high value of the uncertainty)\n", "strike_price = 1.896\n", "\n", "# set the approximation scaling for the payoff function\n", "c_approx = 0.25\n", "\n", "# setup piecewise linear objective fcuntion\n", "breakpoints = [low, strike_price]\n", "slopes = [0, 1]\n", "offsets = [0, 0]\n", "f_min = 0\n", "f_max = high - strike_price\n", "european_call_objective = LinearAmplitudeFunction(\n", " num_uncertainty_qubits,\n", " slopes,\n", " offsets,\n", " domain=(low, high),\n", " image=(f_min, f_max),\n", " breakpoints=breakpoints,\n", " rescaling_factor=c_approx,\n", ")\n", "\n", "# construct A operator for QAE for the payoff function by\n", "# composing the uncertainty model and the objective\n", "num_qubits = european_call_objective.num_qubits\n", "european_call = QuantumCircuit(num_qubits)\n", "european_call.append(uncertainty_model, range(num_uncertainty_qubits))\n", "european_call.append(european_call_objective, range(num_qubits))\n", "\n", "# draw the circuit\n", "european_call.draw()" ] }, { "cell_type": "code", "execution_count": 9, "id": "1daabde9-869c-49af-b40d-ac4fcf9fa438", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAH9CAYAAADh8YP0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAayhJREFUeJzt3Qd4FNXXBvA3JPQuvTdBbHQLIvUTUBFBEEQEKXapoiAI0hWVKoINBEWlCyj8RQFFQJoiIqgIUqQJCtJ7CPs97x0nhs2GJCTZ2Z15f8+z7DK7O7l3stk9e+fccyN8Pp8PIiIiIhIr3X83RURERIQUIImIiIj4UYAkIiIi4kcBkoiIiIgfBUgiIiIifhQgiYiIiPhRgCQiIiLiRwGSiIiIiB8FSCIiIiJ+FCCJuFxERMQll3Tp0iFXrlyoWbMmJk6ciHAppr99+3bcd999yJs3r+kD+/LNN9+Y+2JiYtC/f3+UKVMGGTJkMPe1b9/+svv7448/4h0b/0ti+wh177//vunHwIEDnW6KSNiJcroBIhIc7dq1iw0mGGysXLkS3377Lb766itMmzYNoezixYu4//77sWHDBtx6660oW7asCZIKFixo7n/99dcxZMgQFC5cGM2aNUOmTJlw++23J2nfWbNmNfsOJKn7cAoDuA8++ABLly5FnTp1nG6OiKsoQBLxCI4mxLV48WLcfffdmD59Oh566CHcc889CFUc7WFwxFGv5cuXx7t/3rx55nrFihUoXbp0svbNESn/Y+MWHHFjQMk+ikjy6BSbiEfVr18fbdu2vSTACFV79+411wkFP4nd71U5c+ZE+fLlFSCJXAEFSCIeVrlyZXO9Z88ec3306FG88cYbaNiwIUqUKIGMGTMiT548uPPOO82Ik78bbrjB5Lhs2bIl4P6538jISJQqVSpertOHH35oTmHlyJEDWbJkQYUKFTBs2DCcPXv2ksdx/7Vr1za3eTrJzg/iKSWeYuLtnTt3xj7WvnDUKbUwh4f7TGikqWTJkub+uJgfZecxHT58GE899RQKFSpkjimP26RJkxL8eTxuXbt2Rbly5ZA5c2ZcddVVqFatGgYNGoTjx4/H9pXHg+rWrRuw75fLQTp9+rQ5Lcm28GcwmKpVq5YZUUysj8xd4++Lz+NpzieeeMK8dkTcRKfYRDzsxIkT5pof2rRmzRrzwcwPw2uuuQbVq1fH7t27sWjRInPhB2PHjh1jn88PRj6e24cPHx5v/wwCmD/06KOPXhJA8HnvvvuuyRWqV6+eCZAYULzwwguYP38+lixZYrbZuVMHDhzAl19+aZKw7byguCMjs2fPxqlTp2LzrChbtmwIBQwceBxPnjxpThEeOnTInCZ85JFHYo9NXDxNeO+995rn8ffQuHFjnDlzBr/99psJdJo0aYJKlSqZvjKHjPlkDGjtfKyk9J2/dwZVP/zwA/Lly2dOr/L4ff311+bnr1692uR1BdKrVy9zHwPUq6++2uSy8Xe5efNmLFu2LF6gKBK2fCLiavwzD/SnfvHiRV/16tXNfX379jXbduzY4Vu9enW8x65fv96XK1cuX44cOXwnTpyI3X706FFflixZfPny5fOdO3fukufExMT4ihcv7ouMjPTt27cvdvvs2bPNzyxcuLBv69atl+zr9ttvN/c9++yzl+xr6dKlZnu7du0C9rFEiRIB+3g5O3fuNM/hcxMzYMAA89jJkycn+efbbealVatWvrNnz8beN3fuXLOdxyeuf/75xxxL3jd8+HBzDONatWqV76+//or9P48HH8ufFQjby/vZ/rg6d+5sttetW9d3/Pjx2O2bN2/25c+f39w3f/78gH0sWLCg77fffovdfvDgQd/VV19t7vvqq68CtkMkHOkUm4jHcBbb77//bkaCOFLA0aMOHTqY+3gqjEm9gU7FderUyZze4YwpG0/LtGrVCgcPHsSnn356yXM44sTRp0aNGpnZZbaxY8ea6wEDBpjZaHH3NX78eDMC8c4778Q71ZZWdu3aleA0/9TAU4jjxo2LHaWjpk2bmlNbPD5xTwVyJI7Hkqc0n3vuOTNTLy6OROXPnz9F7eFI0XvvvWf2/eabbyJ79uyx93FUrl+/fuZ2QiNIPC3H0UUbR/GefPJJcztQAr1IuNIpNhGPCPSBzw9H5rHw1FXcAIpT/1etWoX9+/fj3LlzZjuDqrjXNn448lTahAkT0KJFi9jt/D89/vjjsduio6PNaTzizDl/zGvh5aeffoqd0p/WLjfNPzVUrVrV5HH5Y37Rzz//bI4xT6URTy3apyDTCk+r8ZQdc5oYEPlj4j5Pm/LUGU8B+gdpDRo0CNgXYl9E3EIBkohH2Pk5/MDjqMaNN95oagblzp37ktlgzEdhgJJY3pLtpptuQpUqVcyHO5OlOQr1119/mVyiokWLmtEQ2z///IPz58+bUQcGJoEwWODP37dvH4Ihraf58xgEYo/c2AFo3GT5uAFravvzzz/NtR2U+WMRUY7mHTt2DEeOHIkX3AXqT6C+iIQ7nWIT8QgGAbxwtGfMmDEmSThucERMGGZw0rx5c6xdu9YkCnNEialMPO1FgSpvcxSJ23nqhjgqxdEinsbjLLbkCMckX460JMR/BCYcXO53EI79EbkSeqWLSGxuCqfyFyhQADNmzMDNN99sRhLsD8QdO3Yk+NzWrVubUanJkyfjwoULJpeGz2MQFhdHI7gUCGdy8ecFYufkFClSBKGCbSbORPPHAJKz7FJDsWLFzDVnpqUVOx+MuVeBcOSIgTGn8PsH0CJeogBJRGI/GDkSwlo9/qM+HA2aO3dugs/l6bI2bdqY0zecBs48JU49L168+CWPS58+fWxeUaB6O8zJ4QgWp6lzKnuo4DGhrVu3xruPSes8PqnhjjvuMNecNp+cwI1BaXJyohj8MBfJP5+MPvroI3Ndo0YNjRaJp+nVLyIGZ0dxxIhBChN0446QPP/88wGDg7jsmUyjR48214899ljAx3Xp0sVcs6ZP3FEp5jZ17tzZnKpjkjJrJIUKFlC0g4e4s86Yc8WE5tTCU5zMiVq4cKE5Dep/OpMJ7n///Xe80aCECnUmFMzy1CeDYc5MjDuSx9/x0KFDze3U7JdIOFKAJCJGVFSUGf3haAQrV3O2Eqfwsxjg22+/bT5ML4dJ37fddpu5zaKFLHAYCGeMcWYbE8I51Z1J4S1btjSJySw0yBGmwYMHI5SwbQ8//LBJWubIFgs5crSHfWYfWHU8NbBi9qxZs0zS8zPPPGN+7gMPPGB+HksicJq/nWRNPMbMF2JJAJYOYIDFC5PhL4cVyzmSxFOqXJ6Fx5/lGCpWrGhOFzI4Suj3J+IVCpBEJBYrWTPBmlPtOYrEmWn80OTIBaeFJ4ZVsYl1lRhwJYQJ31OmTDH1lRgUccYbR7BeeuklU83ZrqIdSli2oHfv3ibXilW9OZLUp08fTJs2LVV/DitU8zSjnfjOdfL4u+DoHgPHuDPcGORwVOu6664zdaeYJM+L/0xDfwzAeNy5dAlHrD777DNTQZu/46lTpyZYA0nESyJYLdLpRohI+ONbybXXXmtO02zbtk0Lx4pIWNMIkoikCq6HxlyYu+++W8GRiIQ9jSCJSIow54XTwhcsWGDyl1g/iad+RETCmQIkEUkRJgkz34hJxMyRSctlO0REgkVLjYhIiug7loi4kXKQRERERPwoQBIRERHxo1NsV4hVaFmwjfVEwnFxTREREa+mBZw4ccJUor/ccjoKkK4QgyN7YUkREREJL3v27EHRokUTvF8B0hXiyJF9gFlZN7Vw0UtWxOUyD1zY02u83n/y+jHwev/J68fA6/0nrx+D6DTs//Hjx80Ah/05nhAFSFfIPq3G4Ci1AyQus8B9evWPwsv9J68fA6/3n7x+DLzef/L6MYgOQv8TS49RkraIiIiIHwVIIiIiIn4UIImIiIj4UYAkIiIi4kcBkoiIiIgfBUgiIiIifhQgiYiIiPhRgCQiIiLiRwGSiIiIiB8FSCIiIhI6YmIQsWwZiixfbq75fycoQBIREZHQMGcOULIkourXR7VRo8w1/2+2B5kCJBEREXHenDnA/fcDe/deun3fPmt7kIMkBUgiIiLirJgYoFs3wOeLf5+9rXv3oJ5uU4AkIiIizlqxIv7IkX+QtGeP9bggUYAkIiIiztq/P3UflwoUIImIiIizChVK3celAgVIIiIi4qyaNYF8+RK+PyICKFbMelyQKEASERERZx06BERHJxwc0ZgxQGRk0JqkAElEREScExMDPPggcPQoUKSIdYmraFFg9mygWbOgNisqqD9NREREJK7+/YGlS4GsWYHFi4Fy5XBh6VJsWLgQle66C1F16wZ15MimAElERESc8b//AS+/bN2eOBG49lpz01e7NvadOoWKtWs7EhyRTrGJiIhI8P3xB9C2rXW7c2egVSuEEgVIIiIiElznzgEtWgBHjgA33wyMGIFQowBJREREguuZZ4B164CrrgJmzgQyZkSoUYAkIiIiwfPxx8Bbb1nT93m7RAmEIgVIIiIiEhy//AI8/rh1u18/4M47EaoUIImIiEjaO3ECaN4cOH0auOMOYMAAhDIFSCIiIpK2fD7gsceALVusQpBTpzo2fT+pFCCJiIhI2ho/HpgxA4iKspKyL7fuWohQgCQiIiJpZ+1aoEcP6/bw4cBttyEcKEASERGRtFuEtkULayFa5h9164ZwoQBJREREUt/Fi0CbNsCePUDZssCkSdbU/jChAElERERS30svAV9+CWTODHzyCZAjB8KJAiQRERFJXYsX/zeNn0Uhb7wR4UYBkoiIiKSevXuB1q3/m9rfrh3CkQIkERERSR3nzwMtW1rJ2ZUrA2PHIlwpQBIREZHU8fzzwOrVQM6cwOzZQKZMCFcKkERERCTlZs8Gxoyxbk+ZApQujXCmAElERERSZutWoGNH63avXsC99yLcKUASERGRK3f6tFUEkovR1qplTe93AQVIIiIicmV8PuCpp4CffwYKFACmT7fWW3MBBUgiIiJyZSZOtPKN0qWzgqNCheAWCpBEREQk+davB7p0sW6//DJQpw7cRAGSiIiIJM+RI8D99wPnzgGNGwM9e8JtFCCJiIhI8hahbdcO2LkTKFUK+OAD6xSby7ivRyIiIpJ2RowA5s8HMma0ah/lzg03UoAkIiIiSbNsGdCnj3Wby4hUqQK3UoAkIiIiidu/H3jgAesU28MPWwvRupgCJBEREbm8CxeAVq2Av/4CbrgBePNNICICbhbSAdKZM2fQv39/lCtXDpkyZULhwoXRsWNH7Nu3L9n7Wrx4MRo1aoR8+fIhffr0yJMnDxo0aIC5c+emSdtFRERco18/YPlyIHt2K+8oa1a4XcgGSGfPnkW9evUwZMgQnDx5Ek2aNEGxYsUwefJkVK5cGTt27EjyvsaMGWOCoYULF5pgq3nz5ihfvjyWLFmCZs2aoW/fvmnaFxERkbD12WfAq69at997D7jmGnhByAZIQ4cOxZo1a1C9enVs3boVM2bMwNq1azFy5EgcPHjQjCQlBR/bu3dvM2q0dOlSrFy5EtOnTzfX33zzDTJmzIhhw4YlK+ASERHxhB07rHwj6tYNaNECXhGSAdL58+cxbtw4c3v8+PHIli1b7H09evRAhQoVsGzZMvzwww+J7otB1blz58xoVO3atS+5r1atWmjYsCF8Ph/WrVuXBj0REREJU2fPWsUgjx0DqlcHXnsNXhKSARJHd44dO4YyZcqY02n+7ucvDCzDMD/RfXGEKCmYkyQiIiL/6toV+PFHIG9eYMYMIEMGeElIBkg//fSTua6SQH0Fe/vGjRsT3dfNN9+MXLly4euvvzajTnEtX74cX375JcqWLYuaNWumSttFRETC3gcfABMmWDPVpk4FihWD14RkgLR7925zXbRo0YD329t37dqV6L5y5syJ9957D+nSpUPdunVx++23o1WrVua6Tp06uOmmm0yQlMFjkbGIiEhAmzYBTz1l3R44EKhfH14UhRDEWWuUJUuWgPdn/Xd64YkTJ5K0P85U4wy2li1bmtN3thw5cpjZbUWKFEl0H8xj4sV2/Phxcx0dHW0uqcXeV2ruM5x4vf/k9WPg9f6T14+B1/vv6DE4fhxRzZoh4swZXGzQADHPP89GuKr/Sd1nSAZIqY0z33r16oWmTZti4MCBKF26tJm1xhpLvDCRe8GCBZfdB2e6DRo0KN72RYsWJRjIpQTrNnmZ1/tPXj8GXu8/ef0YeL3/QT8GPh+qDR+OItu24XTevFjWpg3Of/EF3Nb/06dPh2+AZM9aS6gTp06dMtfZWbAqEZzK/9xzz5m8pVmzZplTbXTjjTdi9uzZqFatGv73v/+ZEaa77rorwf306dPHzKCLO4LEukwcgeJIVGpGtnxB1K9f35Qm8Bqv95+8fgy83n/y+jHwev+dOgbp3ngDkatWwZc+PTLMnYs7brkFbuy/fQYoLAOk4sWLm+u9e/cGvN/eXqJEiUT39eGHH5rr++67LzY4skVGRprTbxs2bDAJ25cLkDgbLtCMOP7i0uLFm1b7DRde7z95/Rh4vf/k9WPg9f4H9RisWgXwdBqAiJEjEXX77XBr/5O6v5BM0q5YsaK5Xr9+fcD77e2sh5QYO5hisnYg9vYjR45ccXtFRETC1sGDQMuW1nprXIy2c2enWxQSQjJAqlGjhglctm/fbkZ3/PHUGDVu3DjRfRUsWNBcJ1QI8vvvvzfXJUuWTGGrRUREwkxMDNC6NcA1TrmEiD21X0IzQOKU+87/RrCdOnWKzTmiUaNGmfpHrIpdtWrV2O2svM311ZgrFBcTs+njjz+Ol4j96aefYurUqebUG0/BiYiIeMrgwcCSJZw2DnzyibUYrYRuDhL169fPLCa7atWq2EKOrHvEGWf58uXDpEmTLnn8oUOHsGXLFuzfvz9egNSiRQuToM0RJyZllypVCjt37owdVXrppZdwjUcW3xMRETE4Q23IEOv2u+8C11/vdItCSkiOIFGmTJnM4rIvvviimUY/b948EyC1b9/e5CBxqn5SREREmIVuWSySa69t27YNc+fOxR9//IG7777bzF574YUX0rw/IiIiIYMFmR96yEztx5NPWrclPEaQKHPmzBg8eLC5JIb1jXhJKEjq2LGjuYiIiHja+fNAixbA4cMAU1VGj3a6RSEpZEeQREREJA08+yzw3XdA7tyc9cRTNk63KCQpQBIREfGK6dM5q8m6zTqBmsGdIAVIIiIiXrB5M/Doo9Zt5t42auR0i0KaAiQRERG34yLw99/PtbqAunWBAGuLyqUUIImIiLiZPVPt11+BQoWAadOAqJCeoxUSFCCJiIi42TvvsFoyFyAFZswAChRwukVhQQGSiIiIW7Egcrdu1u1XXgFq1nS6RWFDAZKIiIgbsc4R845Y94jLbnF6vySZAiQRERG3uXgRaNsW2LULKFMGmDxZi9AmkwIkERERt+HptM8/t4pAshhkrlxOtyjsKEASERFxk6+/Bl580bo9fjxQqZLTLQpLCpBERETcYt8+4MEHrVNsHToAWoP0iilAEhERcYPoaKBVK+Dvv4EKFf5bUkSuiAIkERERN+jTB/j2WyBHDivvKEsWp1sU1hQgiYiIhLs5c4CRI63bnLFWtqzTLQp7CpBERETC2bZtVr4RsdZRs2ZOt8gVFCCJiIiEqzNnrGKQx48DNWoAw4Y53SLXUIAkIiISrjp3Bn76Ccif31pnLX16p1vkGgqQREREwtGkSdYlXTpg6lSgSBGnW+QqCpBERETCzYYNQKdO1u3Bg4H/+z+nW+Q6CpBERETCybFjVt7R2bPA3Xdb0/sl1SlAEhERCRc+H9C+PbB9O1CiBPDhh9YpNkl1OqoiIiLhYtQoYN48IEMGYNYs4KqrnG6RaylAEhERCQeskv3889btMWOAm25yukWupgBJREQk1P31F9CyJRATA7RuDTz5pNMtcj0FSCIiIqGMQdGDDwL79wPXXgu88w4QEeF0q1xPAZKIiEgo698fWLoUyJoV+OQTIFs2p1vkCVFON0BERETiiIlBxLJlKLJ8OdJt2gS8/LK1feJEawRJgkIBkoiISKiYMwfo1g1Re/eiWtztd90FtGrlXLs8SKfYREREQiU4YgHIvXvj3/fFF9b9EjQKkEREREIhEbtbN6sQZEK6d7ceJ0GhAElERMRpK1YEHjmyMXDas8d6nASFAiQRERGncQp/aj5OUkwBkoiIiNMKFUrdx0mKKUASERFx2u23A5kzJ3w/C0MWKwbUrBnMVnmaAiQRERGnvf02cOZM4Pvsqtlcfy0yMqjN8jIFSCIiIk5auxbo0cO63aEDULTopffz/7NnA82aOdI8r1KhSBEREaccOgS0aAFER1s1kN57D7h4EReWLsWGhQtR6a67EFW3rkaOHKAASURExAkXLwJt2ljT98uWtYIjnk6LjISvdm3sO3UKFWvXVnDkEJ1iExERccLQocCXX1rJ2VyENkcOp1skcShAEhERCbbFi4GBA63bb70F3Hij0y0SPwqQREREgokVs1u3tqpjP/YY0K6d0y2SABQgiYiIBMv580DLllZyduXKwNixTrdIEqAASUREJFiefx5YvRrImdOaup8pk9MtkgQoQBIREQmGWbOsYo80ZQpQurTTLZLLUIAkIiKS1rZsATp2tG736gXce6/TLZJEKEASERFJS6dPW0UgT54EatUCXnrJ6RZJEihAEhERSSucqfbUU8DPPwMFCgDTpwNRqtEcDhQgiYiIpJWJE618o3TpgBkzgEKFnG6RJJECJBERkbSwfj3QpYt1++WXAS4bImFDAZKIiEhqO3LEyjs6dw5o3Bjo2dPpFkkyKUASERFJ7UVoWR17506gVCnggw+sU2wSVvQbExERSU3DhwPz5wMZM1rFIHPndrpFcgUUIImIiKSWb74BXnjBuv3GG0CVKk63SK6QAiQREZHUsH8/0KqVdYrt4YeBRx91ukWSAgqQREREUurCBSs4+usv4IYbgLfeAiIinG6VuDVAOnPmDPr3749y5cohU6ZMKFy4MDp27Ih9+/Zd0f7++OMPPPnkkyhVqhQyZsyIvHnzonr16hjO88UiIiJXql8/YPlyIHt24JNPgCxZnG6RuDVAOnv2LOrVq4chQ4bg5MmTaNKkCYoVK4bJkyejcuXK2LFjR7L2t3DhQlx//fV49913kSdPHjRr1gxVqlQxQdM777yTZv0QERGX++wz4NVXrduTJgHlyjndIkkFIVvvfOjQoVizZo0Z4Vm0aBGyZctmto8aNQrPPvusGUn6hslwSfDbb7+ZgCh79uxYvHgxbrvtttj7Ll68iPUs5iUiIpJc/LLOfCPq3t2qfSSuEJIjSOfPn8e4cePM7fHjx8cGR9SjRw9UqFABy5Ytww8//JCk/fE5HJF6//33LwmOKF26dKhWrVoq90BERFzv7FkrIDp2DKhe/b9RJHGFkAyQVq5ciWPHjqFMmTLmdJq/+/+N0OezzkQi9uzZgy+//BKlS5fG3XffnSbtFRERD+raFfjxRyBvXmDmTCBDBqdbJG4/xfbTTz+Za+YIBWJv37hxY6L74mk4nkbjyNGFCxcwZ84cE4DFxMTghhtuwAMPPIDcKuIlIiLJwerYEyZYM9WmTgWKFnW6ReKFAGn37t3mumgCLzh7+65duxLd16+//mqueZquZs2aJq8prr59+2L27NmoW7duKrRcRERcb9Mm4KmnrNsDBwL16zvdIvFKgMRZa5QlgWmSWbNmNdcnTpxIdF9HuGAggIkTJ5ogaerUqbjzzjtx8OBBM0Puo48+wn333YdffvkFRYoUSXA/586dMxfb8ePHzXV0dLS5pBZ7X6m5z3Di9f6T14+B1/tPXj8GId3/48cR1awZIs6cwcUGDRDz/PNsqLeOQRCkZf+Tus+QDJBSE0+vEU+vcTp/y5Ytzf95Wu3DDz/Eli1b8P333+PNN9/ESy+9lOB+hg0bhkGDBsXbzhl2CQVyKcHZdl7m9f6T14+B1/tPXj8GIdd/nw/Vhg9HkW3bcDpvXixr0wbnv/jCW8cgyNKi/6dPnw7fAMmetZZQJ06dOmWuOW0/qfvidYsWLeLd36FDBxMgcVbc5fTp08fMhos7gsS6TA0aNECOHDkSbUdyIlu+IOrXr4/06dPDa7zef/L6MfB6/8nrxyBU+59u7FhErloFX/r0yDBvHu64+WbPHYNgScv+22eAwjJAKl68uLneu3dvwPvt7SVKlEh0X/ZjuM+IAGXfS5Ysaa7//vvvy+6Hlbd58cdfXFq8eNNqv+HC6/0nrx8Dr/efvH4MQqr/q1YBvXubmxGjRiGqRg3vHQMHpEX/k7q/kJzmX7FiRXOdUAFHezvrISXGLhNg5yL5O3z4sLmOW2tJREQkFr9AMz3DXm+tUyenWyRBEJIBUo0aNZAzZ05s374dGzZsiHc/Z51R48aNE90Xp/dzaZEDBw6YfCN/9qm1QPWWRETE42JigIceArgGaPnywLvvahFajwjJAClDhgzo3Lmzud2pU6fYnCN7qRHWP6pduzaqVq0au52Vt8uXL29yheKKiooyuUM+n8/sK+65xyVLlpjq2jz19sQTTwSlbyIiEkYGD+aHhbX4LL+cJyH3VdwhJHOQqF+/fiaAWbVqFcqWLWtqGLHu0dq1a5EvXz5M4oKAcRw6dMiMEO3fvz/evnr27ImlS5ea/ZUrVw633nqreTxrIrFgJGev3ZyGyXYiIhKGOENtyBDrNkeOrr/e6RaJ10eQKFOmTCaoefHFF800+nnz5pkAqX379iYHiUuHJCch6/PPP8err76KvHnzmqVHNm3aZEahuFzJCy+8kKZ9ERGRMMOCxTy15vNZRSF5WzwlZEeQKHPmzBg8eLC5JGbgwIHmcrkgqVevXuYiIiKSIBYFZlkYTuLhYuajRzvdInFAyI4giYiIOOK554DvvmNFYWDWLNZ5cbpF4gAFSCIiIrbp0znrx7r94Ycslud0i8QhCpBERERo82bg0Uet2337Ao0aOd0icZACJBERES6S3rw517IC6tUDAqy9Kd6iAElERLyNM9VYC48jSIUKAVOnApGRTrdKHKYASUREvO3tt/8LimbOBAoUcLpFEgIUIImIiHd9/z3Qvbt1+9VXgdtvd7pFEiIUIImIiDf9849V7+j8eeC++4AePZxukYQQBUgiIuI9Fy8CDz8M7NoFlCkDTJ6sRWjlEgqQRETEe4YNAz7/nOtaAZ98AuTM6XSLJMQoQBIREW/56iugf3/r9ptvAhUrOt0iCUEKkERExDv27QNat7ZOsXXsCHTo4HSLJEQpQBIREW+IjgYeeAD4+29r1MheUkQkpQFSx44dMWnSpNj/7969G4e52rGIiEio69MHWLkSyJEDmD0byJzZ6RaJWwKk999/H99++23s/0uVKoWePXumRbtERERSz5w5wMiR1u333weuvtrpFombAqT06dPj7Nmzsf/3+XzmIiIiErJ+//2/XKPnnrNqHomkZoBUrFgxrFixArtYN0JERCTUnTkD3H8/cPy4VSX75ZedbpG4MUBq3bo19u3bh9KlSyPy34X8PvjgA3M7sUtUVFRa9UFERCSwTp2AjRuB/PmBGTN4KsTpFkmYSFbUMnDgQOTKlQuffvop9u7di507dyJLlizImzdv2rVQRETkSnBSEStkp0sHTJ8OFC7sdIvErQFSunTp0KNHD3Ox/9+iRYtLZraJiIg4bsMGa/SIhgwB6tZ1ukXi5lNsy5cvx9atW2P/365dO9yulY9FRCSUHD1q5R1xUlGjRkDv3k63SNweINWpUwevvPJK7P//+OMPHDp0KC3aJSIiknycWc0Za9u3AyVLAlOmWKfYRNLyFFtERAQusjz7v5YtW2ZqIYmIiIQE1jqaNw/IkAGYNQu46iqnWyRhKllh9VVXXYXfWU9CREQk1KxY8d/ptNdfB6pVc7pF4pURJOYbffbZZ6hbt27syBEra3MJkqSMPr333ntX3lIREZGEHDhgrbMWEwM89BDwxBNOt0i8FCCNHDnS5B3x1BovtG3bNnNJjAIkERFJExcusFAfsH8/cP31wDvv8EPH6VaJlwIkFohcv369CZL27NljkrbvvPNOPP/882nXQhERkcsZMABYuhTIls1ahDZrVqdbJC6Q7PLWHAni6TX7FFvBggVRu3bttGibiIjI5S1Y8N/yIRMnAuXLO90icYkUrf8Rd0abiIhIUO3cCbRta93u0sXKQRJJJam2QNr58+exYcMGs1YbFSlSBJUqVUIGTrUUERFJTefOAS1aWEUhb7kFGDHC6RaJy6Q4QDp79iz69++Pd955BydPnrzkvmzZsuHJJ5/EoEGDkClTppT+KBEREUv37sAPPwB58gAzZ1p1j0RCJUA6d+4c7rjjDqxevdr8v0KFCihZsqTJU2Ii908//YQRI0Zg5cqV+Oqrr5AxY8bUareIiHjVRx8Bb79tzVT7+GOgeHGnWyQulKL666NHj8aqVatQo0YNc3rtxx9/xNy5czFnzhwz240BUs2aNU0ANWbMmNRrtYiIeNMvv/xX46h/f6BhQ6dbJC6VogBp2rRpyJcvH/73v//hxhtvjHf/DTfcgAULFiBv3rz4mFG+iIjIlTpxAmjeHDh9GqhfH3jxRadbJC6WogCJBSJZCyl79uwJPoZ5SHzMdi4cKCIicqWL0D76KLBlC1C0qHVqLTLS6VaJi6UoQIqKisJpRvKJ4GP4WBERkSsybpyVjM3PEl7ny+d0i8TlUhQg8bTa119/jR07diT4mJ07d5rHMIFbREQk2dasAZ591rrN6fzVqzvdIvGAFAVITzzxBM6cOWNOoXGdNd628fbkyZPNfSwFwOn+IiIiyXLoENCyJRAdbdU96trV6RaJR6TovFfbtm3x7bffYsKECXj88cfNhQnZdIgvanPa2GcCqYe4urKIiMjlxMQgYtkyFFm+HBGZM1sjRnv2AOXKWUuJaBFaCZIUJwaxQGSDBg0wduxYrF27FgcPHjTbWUH71ltvRZcuXdCcsw5EREQuZ84coFs3RO3di2r8/6hR1nYWgeQitDlyONxA8ZJUyZxmAMTLhQsX8M8//5htefLkUWK2iIgkPTi6/35rtpq/8+eB339n4qsTLROPSlEOkj8GRAUKFDAXBUciIpIkMTFm5ChgcEQ8rcalRfg4kXAIkMqUKYNXXnkFBw4cSL0WiYiIt6xYAezdm/D9DJyYh8THiYRDgMT11vr27YvixYujWbNm+OKLL0xStoiISJLt35+6jxNxOkDatWsX+vfvj0KFCmHevHlo1KiRWax28ODB2Hu5bwMiIiK2QoVS93EiTgdIRYsWxYABA8xI0ueff46mTZua020DBw5EqVKl0LhxY3z22We4ePFiarRVRETcqGZNoGDBhO9nDlKxYtbjRMIpSTsiIgJ33nknPvnkE+zZs8fkJTFA4iK29913H4oVK4YXX3zRBFIiIiKXOHsWSJ8+8H123aMxY7T2moTvLDbKnz8/evXqhc2bN+OZZ54xOUn79+/HSy+9hKuvvhpNmjTBhg0bUvvHiohIOGLe6lNPWUnYuXLFP43GhWlZA6lZM6daKB6V6gGSnZfEXKQxjPgB3HbbbejXr58JkObPn4+bb74Zc+fOTe0fLSIi4WbCBODDD63RoU8/NYHShcWLsa5HD3ONnTsVHEn4BkgsEMnTazzNxqn/Q4cOxYkTJ/DUU09h48aNZjkSJm7/9ttvmDFjBiIjI00QJSIiHvbDD0CXLtbtl18GatUygZKvdm3sq1XLXOu0mjglRdUcf//9d0ycOBEffPCBWWKEp9OqVKliFqZt3bo1smTJEu85LVq0wMyZM03ytoiIeNSRI1blbFbJbtIE6NnT6RaJpF6AdM0115gE7cyZM6NDhw4mMKpWzaygc1k5c+ZENFdmFhER7+HM5ocfZjE9oHRp4P33tQituOsU23XXXYfXX38df/75pxlJSkpwRHyspv6LiHjUa68BCxYAGTNaCdhMzhZx0wjSzz//nHotERER9/vmG6BvX+v2uHFA5cpOt0gkOLPYREREElwqpFUr6xRbu3bAI4843SKRtBlBsp0+fRpLly41SducvRZoPTbmKrFYpIiIeNCFC1Zw9NdfwI03Am++qbwjcXeA9P7775uCkMePH4/dxgCJAZH//xUgiYh4FE+rLV8OZM9u5R0FmOUs4ppTbEuWLMEjjzxigp8XXngB1atXN9vfeecd9OzZ0xSGZHDUuXNnTJo0Kdn7P3PmjKmXVK5cOWTKlAmFCxdGx44dsW/fvpQ024x0ceYd233HHXekaF8iIpIIFoBkYjbxs6BcOadbJJK2AdLIkSNNkMHTa0OGDEHZsmXN9scee8ysx/bLL7+ge/fuJjiqWrVqsvZ99uxZ1KtXz+z35MmTZokSruk2efJkVK5cGTt27Ljidj/++OM4d+7cFT9fRESSaPt2K9+InnnGqn0k4vYA6fvvv8ett96KihUrBrw/KioKI0aMMOuzDRgwIFn7ZjXuNWvWmFGprVu3mgrca9euNUEZi1JyJOlKvPfee/jmm29MECciImnozBkrIDp2jGtOAa++6nSLRIITIHFkp3jx4rH/z8iaFoBJ1I79AenS4ZZbbsGKFSuSvN/z589jHKd/Ahg/fjyyZcsWe1+PHj1QoUIFLFu2DD+wTH0y/PXXX+bUX/369fHggw8m67kiIpJMXbsCXJw8Xz5g5kwgfXqnWyQSnACpYMGCOHz4cOz/C/27CjNHfOLiY5hPlFQrV67EsWPHzLpuPJ3m7/5/h2i58G1ydOvWzbTjTc6eEBGRtMPq2BMnWjPVpk4FihRxukUiwQuQypcvbxKebbfddptJyn7ttddip/qvWrUKX3/9tVmWJKl++uknc8113QKxt3Mh3KT6/PPPzWk6JpMzeVxERNII35ufftq6PWgQoMkw4rUAqVGjRti5cye+++478///+7//M6e/Zs+ejSJFipjE7Lp165plRZisnVS7d+8210WLFg14v719165dSdrfqVOn8PTTT5sg7fnnn09yO0REJJmYb8RRfp41uOuu/6pmi3ipDtLDDz9spuAzCdvON/rf//5npv6zBMCBAwfMwrS9evVCmzZtkpXbRFkSqJORNWvWeLlOl9OvXz8TTHG2XYYMGXAlOOst7sw3u+4TF91NzYV37X15dTFfr/efvH4MvN7/sD4GPh8iO3RAut9/h69YMVzglP6YGOvihf6nIq8fg+g07H9S95miAInBT8OGDS/ZxpGjL774wlTXZh4Rg6fIyEg4Zd26dRg7dqwJ5urUqXPF+xk2bBgGcajYz6JFixIM5FJi8eLF8DKv95+8fgy83v9wPAalP/sMN86di4tRUVjRpQuOrl3rqf6nBa8fg8Vp0H/GJ2kWIDGfZ968edizZ4+ZucbTah06dECpUqViH8Og4UoDB3vWWkKd4Ckzys6KrJdx4cIFM50/V65cptxASvTp08fMoIs7gsS6TA0aNECOHDmQmpEtXxCcaZfegzM+vN5/8vox8Hr/w/UYRKxahcgpU8xt38iRuO2ppzzV/9Tm9WMQnYb9j7vyR6oGSA899BCmT59ubtuJ2JxNxgCE2++9916klF06YO/evQHvt7eXKFHisvvh4zZs2GBm27Vo0eKS+44ePWquWSrAHllifaSEMBC0yxjExV9cWrx402q/4cLr/SevHwOv9z+sjsHff/PDIXa9tcguXRCZCuushU3/05DXj0H6NOh/UvcXldwii9OmTTMFINu2bWum4DMPaMGCBVi9erU5jcVcH556Swm78OT69esD3m9v58hVUjAXipdAGCixppKIiFwB5he1bg1wCahrrwUmTNAitOK9WWwffPCBScReuHChCZa4xhpPPbFuUbt27UywNGfOnBQ3qkaNGibI2r59uxkB8sdZctS4cePL7qdkyZJmlCvQhQnb9sw7e5uIiCQTczO/+spafJbvzXEK+4p4JkDatGmTWVqEQYU/1hdikMHHpBRnmjH4ok6dOsXmHNGoUaNM/aPatWtfsr4bK2+zLhMDNhERCYKFC4EhQ6zbHDm67jqnWySSaqKSm9jE6taB2NuTmvyUlKn5LBXAQpNcBLdmzZrm9B3XY8uXL59ZADeuQ4cOYcuWLdi/f3+q/HwREbkM1qGzy7ewKCRPs4l4dQSJI0QJTdnnqTdiUcjUkClTJnMa7MUXXzSz4ThrjgFS+/btTQ5S6dKlU+XniIhIMrEmXMuWXEcKuOkmDu073SKRVJeiOkhpLXPmzBg8eLC5JGbgwIHmklScuaa8IxGRK/DsswBXUMidG5g1i9N8nW6RiPNLjTBRm6NIgS4REREJ3s+ZbyIiEuamTQPGj7duf/QR66043SKRNJHsqOVKR100WiMiEuZ+/RV47DHrNtdYu/tup1skEhoBUmrlF4mISJjhGplchJaziuvVs6b3i7hYsk+xiYiIx/AMwOOPA5s3A4ULW6fZHFxjUyQYFCCJiMjlvfXWf0HRjBlA/vxOt0gkzSlAEhGRhHG2Wvfu1u3XXgNuv93pFokEhQIkEREJ7J9/AC70HR0NNGsGPPOM0y0SCRoFSCIiEh8n5bRtC+zeDVx9NcDVC7QIrXiIAiQREYlv2DBrrbVMmaxFaHPmdLpFIkGlAElERC711VdA//7W7TffBCpWdLpFIkGnAElERP6zbx/w4IPWKbZHHgE6dHC6RSKOUIAkIiIWJmM/8ABw8CBQqRLwxhtOt0jEMQqQRETE0rs3sHKllW/EvKPMmZ1ukYhjFCCJiAgwZw4wapR1+/33gTJlnG6RiKMUIImIeN3vv/+Xa/Tcc0DTpk63SMRxCpBERLzs9GlrEdrjx4GaNYGXX3a6RSIhQQGSiIiXde4MbNxora82fTqQPr3TLRIJCQqQRES86r33gMmTgXTprOCocGGnWyQSMhQgiYh40YYNQKdO1u2hQ4G6dZ1ukUhIUYAkIuI1R48CzZsD584B99wDPP+80y0SCTkKkEREvMTnA9q3B3bsAEqWBD74wDrFJiKX0F+FiIiXjBwJfPopkCEDMGsWcNVVTrdIJCQpQBIR8Yrly61q2fT660C1ak63SCRkKUASEfGCAwesddZiYoA2bYAnnnC6RSIhTQGSiIjbXbgAPPigFSRdfz3w9ttARITTrRIJaQqQRETcrn9/4JtvgGzZrEVos2Z1ukUiIU8BkoiImy1YAAwbZt2eOBEoX97pFomEBQVIIiJutXMn0LatdbtLFysHSUSSRAGSiIgbnT1rLULLopC33AKMGOF0i0TCigIkERE36t4dWL8eyJMHmDnTqnskIkmmAElExG0+/BB45x1rptrHHwPFizvdIpGwowBJRMRNfv4ZePLJ/2avNWzodItEwpICJBERtzhxwso7On0aaNAAePFFp1skErYUIImIuGUR2kcfBbZsAYoWBT76CIiMdLpVImFLAZKIiBuMG2clY0dFWdf58jndIpGwpgBJRCTcrVkDPPusdZvT+atXd7pFImFPAZKISDg7dAho0QKIjrauu3Z1ukUirqAASUQkXMXEAA89BOzdC5QrZy0lokVoRVKFAiQRkXA1dCiwaBGQObO1CG2OHE63SMQ1FCCJiIQjBkaDBlm3WRTyxhudbpGIqyhAEhEJN3v2AK1bW1P7H3/8vwVpRSTVKEASEQkn588DLVsC//wDVKkCvP660y0ScSUFSCIi4aRnT2taf65cVt5RpkxOt0jElRQgiYiECxaAHDvWuj1lClCqlNMtEnEtBUgiIuGAS4g88oh1u3dvoHFjp1sk4moKkEREQt2pU0Dz5sDJk0CdOsCQIU63SMT1FCCJiIQyzlR78kngl1+AggWBadOs9dZEJE0pQBIRCWXvvgt89BEQGQnMmGEFSSKS5vQ1REQklMTEIGLZMhRZvhwR+/YB3btb219+GahVy+nWiXiGAiQRkVAxZw7QrRui9u5Ftbjbb7rJmt4vIkGjU2wiIqESHN1/v7XwrL9164C5c51olYhnKUASEXFaTIwZOTIJ2QnhqTY+TkSCQgGSiIjTVqwIPHJkY+DE9df4OBEJCgVIIiJO278/dR8nIimmAElExGmFCqXu40QkxRQgiYg4rWZNIFu2hO+PiACKFbMeJyJBEdIB0pkzZ9C/f3+UK1cOmTJlQuHChdGxY0fsY22QJDp69CimTp2KBx98EKVKlUKGDBmQPXt23HLLLXj99dcRHR2dpn0QEUnU/PnWMiIJBUc0ZoxVLFJEvB0gnT17FvXq1cOQIUNw8uRJNGnSBMWKFcPkyZNRuXJl7NixI0n7GTFiBB566CHMmDEDuXPnRrNmzXDzzTfjp59+Qvfu3c3POH36dJr3R0QkoO3bgfbtrdv33AMULXrp/fz/7NlAs2aONE/Eq0I2QBo6dCjWrFmD6tWrY+vWrSbAWbt2LUaOHImDBw+akaSkyJo1K3r16oU//vgD69evx/Tp0/HVV19h06ZNKF68OL799lvzs0REgu7MGav20bFjwG23WbWQ/vgDFxYvxroePcw1du5UcCTigJAMkM6fP49x48aZ2+PHj0e2OOfme/TogQoVKmDZsmX44YcfEt1Xnz598Oqrr5pgKK6yZcvilVdeMbencfFHEZFg69oV2LAByJcPmDkTSJ/enEbz1a6NfbVqmWudVhNxRkgGSCtXrsSxY8dQpkwZczrN3/38xmVO289P0c+pWLGiuf7zzz9TtB8RkWR7/31g4kQrx2jqVKBIEadbJCKhHiAxP4iqVKkS8H57+8aNG1P0c+w8poJaHVtEgonvcU89Zd0eNAi44w6nWyQi4RAg7d6921wX9U9W/Je9fdeuXSn6OZzFRkwAFxEJCuYbcRT87FngrruAvn2dbpGIBBCFEMRZa5QlS5YEE6/pxIkTV/wz3n77bSxZsgS5cuVC7969E338uXPnzMV2/Phxc80yAalZKsDel1fLD3i9/+T1Y+Dq/vt8iGzfHum2bYOveHFcmDTJWl/Nb401Vx+DJPB6/8nrxyA6Dfuf1H2GZICU1lasWIFu3bohIiICkyZNMvWVEjNs2DAM4lC4n0WLFiUYyKXEYs5e8TCv95+8fgzc2P/Sn32GG+fNw8WoKKzo3BlH16713DFIDq/3n7x+DBanQf+TWtonJAMke9ZaQp04deqUuWbBx+T6+eefzSk1zpQbO3Ys7rvvviQ9j7PhOIMu7ggS6zI1aNAAOXLkQGpGtnxB1K9fH+k5o8VjvN5/8voxcGv/I1atQuSUKea2b+RI3GbnIHnoGCSV1/tPXj8G0WnYf/sMUFgGSPaU/L0JrG5tby9RokSy9rtz504T0Bw5cgQDBw5Ely5dkvzcjBkzmos//uLS4sWbVvsNF17vP3n9GLiq/3//DbRuDVy4ALRqhcguXRBpV8j2yjG4Al7vP3n9GKRPg/4ndX8hmaRtT79nYcdA7O2sh5RU+/fvN5Eor3l6bcCAAanUWhGRy2B+EYMjlhO59lpgwoT/lg8RkZAVkgFSjRo1kDNnTmzfvh0bWETNz2yW3QfQuHHjJO2PI0YNGzY0++vQoQNGjx6d6m0WEQlo4EDgq684u8RaMuRyi9KKSMgIyQCJC8p27tzZ3O7UqVNszhGNGjXK1D+qXbs2qlatGrudlbfLly9vcoXiYh5To0aNzNIiLVu2xIQJE0xytohImlu4kOsmWbfffRe47jqnWyQiSRSSOUjUr18/Mw1/1apVZlmQmjVrmrpHXI8tX758ZvZZXIcOHcKWLVvMKbS4+vbti9WrVyMyMhJRUVF45JFHAv6891nVVkQktbBOW5s21u2nn7ZOs4lI2AjZAClTpkxYunSpmV4/depUzJs3D1dddRXat2+PIUOGJFhEMtDpNYqJiTH7SYgCJBFJNayZ1qIFcPgwcNNNHPp2ukUi4oZTbLbMmTNj8ODB2LZtmynSyNGhyZMnBwyOOCvN5/PFC3T4f25P7CIikmqefRb4/nsgd25g1ixOg3W6RSLipgBJRCTscKR6/Hjr9kcfsR6J0y0SkSugAElEJLX8+ivw+OPW7X79gLvvdrpFInKFFCCJiKQGriHJRWg567ZePWt6v4iELQVIIiIpxTzGxx4DNm8GuLbjtGlAZKTTrRKRFFCAJCKSUm+9BUyfbgVFM2cC+fM73SIRSSEFSCIiKfHdd0D37tbt117jUgBOt0hEUoECJBGRK/XPP1a9o+hooFkz4JlnnG6RiKQSBUgiIlfi4kWgbVtg927g6qsBVvfXMkYirqEASUTkSrz8srXWWqZM1iK0OXM63SIRSUUKkEREkmvJEqB///8StCtWdLpFIpLKFCCJiCTHvn3WwrOc2s/Fr9u3d7pFIpIGFCCJiCQVk7FbtgQOHgQqVQLeeMPpFolIGlGAJCKSVL17A6tWWflGzDvKnNnpFolIGlGAJCKSFJ98AowaZd3+4AOgTBmnWyQiaUgBkohIYn7/HejQwbrdsyfQpInTLRKRNKYASUTkck6fBpo3B06cAGrWtKb3i4jrKUASEUkIZ6o9/TSwaRNQoAAwYwYQFeV0q0QkCBQgiYgkhNWxmW+ULp21GG2hQk63SESCRAGSiEggP/4IdOpk3X7pJaBOHadbJCJBpABJRMTf0aPA/fcD584B99wD9OrldItEJMgUIImI+OcdsTr2jh1AyZLAlCnWKTYR8RT91YuIxDViBPDpp0CGDFYxyNy5nW6RiDhAAZKIiG35cqBPH+v22LFA1apOt0hEHKIASUSEDhwAHngAiIkB2rYFHn/c6RaJiIMUIImIXLgAPPigFSRdfz3w1ltARITTrRIRBylAEhF58UXgm2+AbNmsNdeyZnW6RSLiMAVIIuJt8+cDr7xi3X7vPeCaa5xukYiEAAVIIuJdO3cCDz9s3e7aFWjZ0ukWiUiIUIAkIt509qxVDJJFIW+9FRg+3OkWiUgIUYAkIt7UvTuwfj2QJw8wc6ZV90hE5F8KkETEez78EHjnHWum2tSpQLFiTrdIREKMAiQR8ZZNm4AnnrBuDxgANGjgdItEJAQpQBIR7zhxwso7OnPGCoz69XO6RSISohQgiYh3FqF95BFg61agaFHg44+ByEinWyUiIUoBkoh4wxtvALNmAVFR1nXevE63SERCmAIkEXG/1auBZ5+1bo8caU3rFxG5DAVIIuJuBw9aBSC53hqvu3RxukUiEgYUIImIe8XEAG3aAHv3WkuITJyoRWhFJEkUIImIew0ZAixaBGTJYi1Cmz270y0SkTChAElE3OnLL4HBg63bb78NXH+90y0SkTCiAElE3GfPHuChh6yp/SwK2bat0y0SkTCjAElE3OX8eaBFC+Cff4CqVYExY5xukYiEIQVIIuIuPXsCa9cCuXNb9Y4yZXK6RSIShhQgiYh7zJgBjB1r3Z4yBShVyukWiUiYUoAkIu7w22/Ao49at/v0Ae65x+kWiUgYU4AkIuHv1ClrEdqTJ4G6df+bvSYicoUUIIlIeONMtSefBH75BShUCJg61VpvTUQkBRQgiUh4e/dd4KOPgMhIKwepYEGnWyQiLqAASUTC17p1QNeu1u1XXgFq1nS6RSLiEgqQRCQ8HT5s5R2x7lHTpsCzzzrdIhFxEQVIIhJ+Ll4E2rUDdu0CypQBJk/WIrQikqoUIIlI+Hn1VWDBAiBjRmD2bCBXLqdbJCIuowBJRMLL0qVAv37W7fHjgUqVnG6RiLiQAiQRCR9//gm0amWdYuvQAXjkEadbJCIupQBJRMJDdDTwwAPA338DFSoA48Y53SIRcTEFSCISHvr2Bb79FsiRw8o7ypLF6RaJiIuFdIB05swZ9O/fH+XKlUOmTJlQuHBhdOzYEfv27Uv2vo4cOYJu3bqhRIkSyJgxo7nu3r07jh49miZtF5FUNG8eMHy4dZsz1sqWdbpFIuJyIRsgnT17FvXq1cOQIUNw8uRJNGnSBMWKFcPkyZNRuXJl7NixI8n7OnToEG6++WaMHTsWUVFRaNq0KbJnz47XX38dt9xyCw6znoqIhKbt260p/dSjB9CsmdMtEhEPCNkAaejQoVizZg2qV6+OrVu3YsaMGVi7di1GjhyJgwcPmpGkpOJI0bZt29CsWTNs2bLF7Ovnn39Gly5dzL578E1XRELPmTNWMcjjx4EaNaxq2SIiXg2Qzp8/j3H/JmCOHz8e2bJli72PwUyFChWwbNky/PDDD4nua//+/Zg2bRoyZMiAN99804wg2YYPH458+fLho48+wt9M/HRaTAwili1DkeXLzTX/7yle7z95/Rj4979TJ2DDBiBfPmudtfTpnW6hiHhESAZIK1euxLFjx1CmTBlzOs3f/fxGCWD+/PmJ7uuLL77AxYsXUbNmTRQoUOCS+5iL1LhxY8TExODzzz+Ho+bMAUqWRFT9+qg2apS55v/Ndi/wev/J68cgUP/tCtnTpgFFijjdQhHxkJAMkH766SdzXaVKlYD329s3btwY1H2l6QcDg769ey/dzmR0bnf7B6TX+09ePwYJ9Z98PuDYMSdaJSIe9t/5phCye/duc120aNGA99vbd3EdpiDuK03wFEq3btaHgD9u47fn7t2BJk2AyEi4jtf7n5xjcM891jGwH5ea12mxz6T+zAsXgM6dA/efvPAaEJGQE5IBEmetUZYE6pxkzZrVXJ84cSJo+zp37py52I4zadTUros2lyvFPIuoQN+abfzQ2LMHiJM75Sle73/cY8B1xzzc/wtLl8JXuza8wH5PScl7Szjzev/J68cgOg37n9R9evhTJ3mGDRuGQYMGxdu+aNGiBIOvpGAyarUUtk0kVPg42kP/XseOCfH/gbbx6uJFpEtCMvqGhQux79QpeMnixYvhZV7vP3n9GCxOg/6fPn06fAMke9ZaQp049e+bJGsZBWtfffr0uaQcAEeQWJepQYMGyMHKvlcogiNYo0Yl+rgLM2fCV7063CZi9WpEtWzp2f4n6xjMng0fp7qbJ0Ukfp2Ux6TWvlKAo6jpmJCdiEp33YWKHhpB4gdD/fr1kd6DM/e83n/y+jGITsP+22eAwjJAKl68uLnem8CpJ3s7q2EHa1+c8caLP/7iUvTLq1uXiVBWMm6gHAx+ABUtiigWx3Nj/gX75eX+J+cYNG3qzmOQ1L8BPs6N/b+MFL+/hDmv95+8fgzSp0H/k7q/kJzFVrFiRXO9fv36gPfb21kPKZj7ShN8w3/99cDfxu3/jxnj3g8Gr/efvH4MvN5/EQlJIRkg1ahRAzlz5sT27duxgUXi/MzmQpWAqWGUmDvvvBPp0qXDihUr4hWDZNI1aylFRkbi7rvvhqMjCOyTf50XfqvmdrcvreD1/pPXj4HX+y8iISckAyRWve7Mab9gId1OsXlCNGrUKFOzqHbt2qhatWrsdlbeLl++vMkViqtQoUJ48MEHTXXup59+Ghc4pfhfvXr1MsuWtGnTBvnz54ej+AHwxx+4sHgx1vXoYa6xc6d3Phi83n/y+jHwev9FJKSEZA4S9evXD0uWLMGqVatQtmxZUwmbtYq4HhuXB5k0aVK8BWm5zhqXFvE3ZswYs67bJ598YoKoatWq4ZdffjHrsXHfDLpCQmSkmcbMmTomGdVrpxS83n/y+jHwev9FJGSE5AgSZcqUCUuXLsWLL75optHPmzfPBEjt27c3eUOlS5dO8r7y5s2L7777zixOy5GkuXPnmqVMunbtarZfddVVadoXERERCS8hO4JEmTNnxuDBg80lMQMHDjSXhDAIGjt2rLmIiIiIhOUIkoiIiIhTFCCJiIiI+FGAJCIiIuJHAZKIiIiIHwVIIiIiIn4UIImIiIj4UYAkIiIiEk51kEKZ799Vx48fP56q+42Ojsbp06fNfr24grPX+09ePwZe7z95/Rh4vf/k9WMQnYb9tz+37c/xhChAukInTpww18WKFXO6KSIiInIFn+M5c+ZM8P4IX2IhlAR08eJF/Pnnn8iePTsiIiJSNbJl0LVnzx7kyJEDXuP1/pPXj4HX+09ePwZe7z95/RgcT8P+M+xhcFS4cGGkS5dwppFGkK4QD2rRokXTbP98QXjxj8Lm9f6T14+B1/tPXj8GXu8/ef0Y5Eij/l9u5MimJG0RERERPwqQRERERPwoQAoxGTNmxIABA8y1F3m9/+T1Y+D1/pPXj4HX+09ePwYZQ6D/StIWERER8aMRJBERERE/CpBERERE/ChAEhEREfGjAElERETEjwIkERERET8KkERERET8aKkREZEQcvLkSXz33Xf4+++/kS1bNlSuXBlFihRxulnigEWLFuHAgQN4+OGHnW6KJ6kOUoi8Ie7evdssnsc13nLnzo3SpUtfdhE9Lzh//jyOHj2KvHnzev5YeI2bg4TNmzfjxx9/RK1atS5Zz/HChQvo27cvxo0bh7Nnz17ynEaNGuGdd95BoUKF4Hb8SJo5cya+/PJL7N+/H1mzZkXVqlXRvn17T/Q/rrp162L58uWIiYmBG/3yyy9YunQpMmTIgPr166NUqVKxfwtvvPEGPv30Uxw8eBBlypRBx44d0bRp0+A2kAGSBN/u3bt9PXr08JUpU8aXLl26eJesWbP6GjZs6Pvkk098bu1/+/btfddff72vVq1avilTpsTe9+233/puvfVWX2RkpDkW2bNn9z388MO+/fv3+9xgz549Pq/79ddffR9//HG8YxEdHe3r1auXL0uWLPH+Jho3buz7888/feGudevWvvTp0/sOHDhwyfZWrVqZfkZERPgKFCjgu+WWW3xly5Y1j+U2vlf8888/Pjd48MEHfW+//Xa87X/99Zfv5ptvjj0O9sV+T5w3b57PDfbt25ekS/Xq1U3f+bqPu90N+vbtG/sez0vGjBl9H374oe/ixYu+e++995Lfv/0aeO6554LaRgVIDpg8ebIvU6ZM8d4EeOGbYf78+X1RUVGxL4o77rjDd+TIEZ9b/P33374iRYpc0n/eHj16tO+7777zZc6c2WzjH8xVV10V+xh+QLjhOLAvpUuX9vXv39+3detWnxd5OUjg7/6mm266ZBu/FLB//Nv//PPP432ZaNSokbk/2B8QaYV96dChQ7ztderUMfddc801vvHjx/sWLVrkmzFjhq9FixZmOwNnN/zN2O95V3JhUBHuFixYYI4Bv/w++uijvqeeesq81/O9f+LEiea+rl27+r7//nvfzp07zWcm/zbY/+XLlwetnQqQguybb76JHRVhBL1kyRLfjz/+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot exact payoff function (evaluated on the grid of the uncertainty model)\n", "x = uncertainty_model.values\n", "y = np.maximum(0, x - strike_price)\n", "plt.plot(x, y, \"ro-\")\n", "plt.grid()\n", "plt.title(\"Payoff Function\", size=15)\n", "plt.xlabel(\"Spot Price\", size=15)\n", "plt.ylabel(\"Payoff\", size=15)\n", "plt.xticks(x, size=15, rotation=90)\n", "plt.yticks(size=15)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "id": "3b2a4167-3b9b-4865-bcf8-dfe0eadf97a2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "exact expected value:\t0.1623\n", "exact delta value: \t0.8098\n" ] } ], "source": [ "# evaluate exact expected value (normalized to the [0, 1] interval)\n", "exact_value = np.dot(uncertainty_model.probabilities, y)\n", "exact_delta = sum(uncertainty_model.probabilities[x >= strike_price])\n", "print(\"exact expected value:\\t%.4f\" % exact_value)\n", "print(\"exact delta value: \\t%.4f\" % exact_delta)" ] }, { "cell_type": "code", "execution_count": 11, "id": "c4760ee5-8523-4b90-a55c-d294fd81bf92", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
     ┌───────┐┌────┐\n",
       "q_0: ┤0      ├┤0   ├\n",
       "     │       ││    │\n",
       "q_1: ┤1 P(X) ├┤1   ├\n",
       "     │       ││    │\n",
       "q_2: ┤2      ├┤2   ├\n",
       "     └───────┘│    │\n",
       "q_3: ─────────┤3 F ├\n",
       "              │    │\n",
       "q_4: ─────────┤4   ├\n",
       "              │    │\n",
       "q_5: ─────────┤5   ├\n",
       "              │    │\n",
       "q_6: ─────────┤6   ├\n",
       "              └────┘
" ], "text/plain": [ " ┌───────┐┌────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ │\n", "q_3: ─────────┤3 F ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " │ │\n", "q_6: ─────────┤6 ├\n", " └────┘" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "european_call.draw()" ] }, { "cell_type": "code", "execution_count": 12, "id": "d593502a-b8e5-4ced-89e3-44c3b39bbdb5", "metadata": {}, "outputs": [], "source": [ "# set target precision and confidence level\n", "epsilon = 0.01\n", "alpha = 0.05\n", "\n", "problem = EstimationProblem(\n", " state_preparation=european_call,\n", " objective_qubits=[3],\n", " post_processing=european_call_objective.post_processing,\n", ")\n", "# construct amplitude estimation\n", "ae = IterativeAmplitudeEstimation(\n", " epsilon_target=epsilon, alpha=alpha, sampler=Sampler(backend=qr_backend, options={\"shots\": 100, \"seed\": 75})\n", ")" ] }, { "cell_type": "code", "execution_count": 13, "id": "a7ff63ca-06e8-4471-9009-79e9bcb5d022", "metadata": {}, "outputs": [], "source": [ "result = ae.estimate(problem)" ] }, { "cell_type": "code", "execution_count": 14, "id": "e98bae6e-d417-40f0-ae67-8bec1b446de0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Exact value: \t0.1623\n", "Estimated value: \t0.1695\n", "Confidence interval:\t[0.1644, 0.1747]\n" ] } ], "source": [ "conf_int = np.array(result.confidence_interval_processed)\n", "print(\"Exact value: \\t%.4f\" % exact_value)\n", "print(\"Estimated value: \\t%.4f\" % (result.estimation_processed))\n", "print(\"Confidence interval:\\t[%.4f, %.4f]\" % tuple(conf_int))" ] }, { "cell_type": "code", "execution_count": 15, "id": "9cda6437-cd5c-4b96-800b-e04a42a30ad8", "metadata": {}, "outputs": [], "source": [ "# Example output:\n", "# Exact value: \t0.1623\n", "# Estimated value: \t0.1704\n", "# Confidence interval:\t[0.1620, 0.1789]" ] }, { "cell_type": "code", "execution_count": 16, "id": "49969eac-76c0-4492-a2fb-bfd5cbd46556", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

SoftwareVersion
qiskit2.2.1
qiskit_algorithms0.4.0
qiskit_aer0.17.1
qiskit_finance0.4.1
qiskit_ibm_runtime0.40.1
System information
Python version3.12.9
OSWindows
Thu Oct 16 11:12:33 2025 Mountain Daylight Time
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

Quantum Rings Version Information

SoftwareVersion
QuantumRingsLib0.11.0
quantumrings-toolkit-qiskit0.1.10
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of a Qiskit project

© Copyright IBM 2017, 2025.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

Modifications Copyright Quantum Rings Inc, 2025
Modified from the originals
Added support for Quantum Rings QrEstimatorV2 class.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import tutorial_magics\n", "\n", "%qiskit_version_table\n", "%quantumrings_version_table\n", "%qiskit_copyright" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }