├── Option Pricing using Qiskit and Eikon Data API (Qiskit Runtime).ipynb
├── Option Pricing using Qiskit and Eikon Data API.ipynb
├── README.md
└── eikon.txt
/Option Pricing using Qiskit and Eikon Data API (Qiskit Runtime).ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "id": "6b5d8ad0",
6 | "metadata": {},
7 | "source": [
8 | "## 1. Importing Packages"
9 | ]
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 53,
14 | "id": "e36e6572",
15 | "metadata": {},
16 | "outputs": [
17 | {
18 | "data": {
19 | "text/html": [
20 | "
Version Information
Qiskit Software | Version |
---|
qiskit-terra | 0.18.1 |
qiskit-aer | 0.8.2 |
qiskit-ignis | 0.6.0 |
qiskit-ibmq-provider | 0.18.3 |
qiskit-aqua | 0.9.4 |
qiskit-finance | 0.2.1 |
qiskit-optimization | 0.2.2 |
System information |
---|
Python | 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] |
OS | Windows |
CPUs | 4 |
Memory (Gb) | 15.687431335449219 |
Wed Mar 02 07:51:31 2022 India Standard Time |
"
21 | ],
22 | "text/plain": [
23 | ""
24 | ]
25 | },
26 | "metadata": {},
27 | "output_type": "display_data"
28 | }
29 | ],
30 | "source": [
31 | "import warnings\n",
32 | "warnings.filterwarnings(\"ignore\")\n",
33 | "import qiskit.tools.jupyter\n",
34 | "%qiskit_version_table"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 2,
40 | "id": "2290c56d",
41 | "metadata": {},
42 | "outputs": [
43 | {
44 | "name": "stdout",
45 | "output_type": "stream",
46 | "text": [
47 | "Eikon version: 1.1.12\n"
48 | ]
49 | }
50 | ],
51 | "source": [
52 | "import eikon as ek\n",
53 | "print(\"Eikon version: \", ek.__version__)"
54 | ]
55 | },
56 | {
57 | "cell_type": "code",
58 | "execution_count": 54,
59 | "id": "23fff7a2",
60 | "metadata": {},
61 | "outputs": [],
62 | "source": [
63 | "import numpy as np\n",
64 | "import pandas as pd\n",
65 | "import datetime\n",
66 | "import matplotlib.pyplot as plt\n",
67 | "import seaborn as sns \n",
68 | "import qiskit\n",
69 | "from qiskit import Aer, QuantumCircuit\n",
70 | "from qiskit_finance.data_providers._base_data_provider import BaseDataProvider\n",
71 | "from qiskit.finance.applications.ising import portfolio\n",
72 | "from qiskit.circuit.library import TwoLocal\n",
73 | "from qiskit.aqua import QuantumInstance\n",
74 | "from qiskit.optimization.applications.ising.common import sample_most_likely\n",
75 | "from qiskit.aqua.algorithms import VQE, QAOA, NumPyMinimumEigensolver\n",
76 | "from qiskit.aqua.components.optimizers import COBYLA"
77 | ]
78 | },
79 | {
80 | "cell_type": "markdown",
81 | "id": "accf33ac",
82 | "metadata": {},
83 | "source": [
84 | "#### Setup token to run the experiment on a real device\n",
85 | "If you would like to run the experiment on a real device, you need to setup your account first. You can get your api token from [here](https://quantum-computing.ibm.com/)\n",
86 | "\n",
87 | "Note: If you do not store your token yet, use `IBMQ.save_account('MY_API_TOKEN')` to store it first."
88 | ]
89 | },
90 | {
91 | "cell_type": "code",
92 | "execution_count": 55,
93 | "id": "9741fc18",
94 | "metadata": {},
95 | "outputs": [],
96 | "source": [
97 | "from qiskit import IBMQ\n",
98 | "IBMQ.save_account('MY_API_TOKEN', overwrite=True)"
99 | ]
100 | },
101 | {
102 | "cell_type": "markdown",
103 | "id": "2936a100",
104 | "metadata": {},
105 | "source": [
106 | "#### Setup Eikon API\n",
107 | "I have saved my Eikon Data API key in a file for security reason and not displaying here in notebook."
108 | ]
109 | },
110 | {
111 | "cell_type": "code",
112 | "execution_count": 5,
113 | "id": "6556b57a",
114 | "metadata": {},
115 | "outputs": [],
116 | "source": [
117 | "eikon_key = open(\"eikon.txt\",\"r\")\n",
118 | "ek.set_app_key(str(eikon_key.read()))\n",
119 | "eikon_key.close()"
120 | ]
121 | },
122 | {
123 | "cell_type": "markdown",
124 | "id": "56c7c95b",
125 | "metadata": {},
126 | "source": [
127 | "## 2. Getting Data using Eikon API & Pre-Processing"
128 | ]
129 | },
130 | {
131 | "cell_type": "markdown",
132 | "id": "f1514ac0",
133 | "metadata": {},
134 | "source": [
135 | "#### Defining EikonDataProvider class for Loading Data as needed by Qiskit\n",
136 | "We will inherit BaseDataProvider from data provider module of Qiskit Finance to extend it's functionality of getting data from Eikon API in desired format and make use of existing functions."
137 | ]
138 | },
139 | {
140 | "cell_type": "code",
141 | "execution_count": 6,
142 | "id": "b1a2ab6d",
143 | "metadata": {},
144 | "outputs": [],
145 | "source": [
146 | "class EikonDataProvider(BaseDataProvider):\n",
147 | " \"\"\"\n",
148 | " The abstract base class for Eikon data_provider.\n",
149 | " \"\"\"\n",
150 | " def __init__(self, stocks_list, start_date, end_date):\n",
151 | " '''\n",
152 | " stocks -> List of interested assets\n",
153 | " start -> start date to fetch historical data\n",
154 | " end -> \n",
155 | " '''\n",
156 | " super().__init__()\n",
157 | " self._stocks = stocks_list\n",
158 | " self._start = start_date\n",
159 | " self._end = end_date\n",
160 | " self._data = []\n",
161 | " self.stock_data = pd.DataFrame()\n",
162 | " \n",
163 | " def run(self):\n",
164 | " self._data = []\n",
165 | " stocks_notfound = []\n",
166 | " stock_data = ek.get_timeseries(self._stocks,\n",
167 | " start_date=self._start, \n",
168 | " end_date=self._end, \n",
169 | " interval='daily',\n",
170 | " corax='adjusted')\n",
171 | " for ticker in self._stocks:\n",
172 | " stock_value = stock_data['CLOSE']\n",
173 | " self.stock_data[ticker] = stock_data['CLOSE']\n",
174 | " if stock_value.dropna().empty:\n",
175 | " stocks_notfound.append(ticker)\n",
176 | " self._data.append(stock_value)"
177 | ]
178 | },
179 | {
180 | "cell_type": "markdown",
181 | "id": "7720187f",
182 | "metadata": {},
183 | "source": [
184 | "### Initializing Required Parameters"
185 | ]
186 | },
187 | {
188 | "cell_type": "code",
189 | "execution_count": 7,
190 | "id": "879ed69a",
191 | "metadata": {},
192 | "outputs": [],
193 | "source": [
194 | "# List of stocks \n",
195 | "stock_list = ['FB.O']\n",
196 | "\n",
197 | "# Start Date\n",
198 | "start_date = datetime.datetime(2020,12,1)\n",
199 | "\n",
200 | "# End Date\n",
201 | "end_date = datetime.datetime(2021,12,1)\n",
202 | "\n",
203 | "# Set number of equities to the number of stocks\n",
204 | "num_assets = len(stock_list)\n",
205 | "\n",
206 | "# Set the risk factor\n",
207 | "risk_factor = 0.7\n",
208 | "\n",
209 | "# Set budget\n",
210 | "budget = 2\n",
211 | "\n",
212 | "# Scaling of budget penalty term will be dependant on the number of assets\n",
213 | "penalty = num_assets"
214 | ]
215 | },
216 | {
217 | "cell_type": "markdown",
218 | "id": "e8eb3840",
219 | "metadata": {},
220 | "source": [
221 | "### Getting data from Eikon API using EikonDataProvider class"
222 | ]
223 | },
224 | {
225 | "cell_type": "code",
226 | "execution_count": 8,
227 | "id": "cd003963",
228 | "metadata": {},
229 | "outputs": [],
230 | "source": [
231 | "data = EikonDataProvider(stocks_list = stock_list, start_date=start_date, end_date=end_date)\n",
232 | "data.run()"
233 | ]
234 | },
235 | {
236 | "cell_type": "code",
237 | "execution_count": 9,
238 | "id": "6f69c082",
239 | "metadata": {},
240 | "outputs": [
241 | {
242 | "data": {
243 | "text/html": [
244 | "\n",
245 | "\n",
258 | "
\n",
259 | " \n",
260 | " \n",
261 | " | \n",
262 | " FB.O | \n",
263 | "
\n",
264 | " \n",
265 | " Date | \n",
266 | " | \n",
267 | "
\n",
268 | " \n",
269 | " \n",
270 | " \n",
271 | " 2020-12-01 | \n",
272 | " 286.55 | \n",
273 | "
\n",
274 | " \n",
275 | " 2020-12-02 | \n",
276 | " 287.52 | \n",
277 | "
\n",
278 | " \n",
279 | " 2020-12-03 | \n",
280 | " 281.85 | \n",
281 | "
\n",
282 | " \n",
283 | " 2020-12-04 | \n",
284 | " 279.7 | \n",
285 | "
\n",
286 | " \n",
287 | " 2020-12-07 | \n",
288 | " 285.58 | \n",
289 | "
\n",
290 | " \n",
291 | "
\n",
292 | "
"
293 | ],
294 | "text/plain": [
295 | " FB.O\n",
296 | "Date \n",
297 | "2020-12-01 286.55\n",
298 | "2020-12-02 287.52\n",
299 | "2020-12-03 281.85\n",
300 | "2020-12-04 279.7\n",
301 | "2020-12-07 285.58"
302 | ]
303 | },
304 | "execution_count": 9,
305 | "metadata": {},
306 | "output_type": "execute_result"
307 | }
308 | ],
309 | "source": [
310 | "# Top 5 rows of data \n",
311 | "df = data.stock_data\n",
312 | "df.head()"
313 | ]
314 | },
315 | {
316 | "cell_type": "code",
317 | "execution_count": 10,
318 | "id": "b57ce602",
319 | "metadata": {},
320 | "outputs": [
321 | {
322 | "data": {
323 | "text/html": [
324 | "\n",
325 | "\n",
338 | "
\n",
339 | " \n",
340 | " \n",
341 | " | \n",
342 | " FB.O | \n",
343 | "
\n",
344 | " \n",
345 | " \n",
346 | " \n",
347 | " count | \n",
348 | " 253.000000 | \n",
349 | "
\n",
350 | " \n",
351 | " mean | \n",
352 | " 316.401403 | \n",
353 | "
\n",
354 | " \n",
355 | " std | \n",
356 | " 36.680760 | \n",
357 | "
\n",
358 | " \n",
359 | " min | \n",
360 | " 245.640000 | \n",
361 | "
\n",
362 | " \n",
363 | " 25% | \n",
364 | " 278.010000 | \n",
365 | "
\n",
366 | " \n",
367 | " 50% | \n",
368 | " 324.630000 | \n",
369 | "
\n",
370 | " \n",
371 | " 75% | \n",
372 | " 343.180000 | \n",
373 | "
\n",
374 | " \n",
375 | " max | \n",
376 | " 382.180000 | \n",
377 | "
\n",
378 | " \n",
379 | "
\n",
380 | "
"
381 | ],
382 | "text/plain": [
383 | " FB.O\n",
384 | "count 253.000000\n",
385 | "mean 316.401403\n",
386 | "std 36.680760\n",
387 | "min 245.640000\n",
388 | "25% 278.010000\n",
389 | "50% 324.630000\n",
390 | "75% 343.180000\n",
391 | "max 382.180000"
392 | ]
393 | },
394 | "execution_count": 10,
395 | "metadata": {},
396 | "output_type": "execute_result"
397 | }
398 | ],
399 | "source": [
400 | "df.describe()"
401 | ]
402 | },
403 | {
404 | "cell_type": "code",
405 | "execution_count": 11,
406 | "id": "f6bc70ce",
407 | "metadata": {},
408 | "outputs": [
409 | {
410 | "data": {
411 | "image/png": "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\n",
412 | "text/plain": [
413 | ""
414 | ]
415 | },
416 | "metadata": {
417 | "needs_background": "light"
418 | },
419 | "output_type": "display_data"
420 | }
421 | ],
422 | "source": [
423 | "# Closing Price History\n",
424 | "fig, ax = plt.subplots(figsize=(15, 8))\n",
425 | "ax.plot(df)\n",
426 | "plt.title('Close Price History')\n",
427 | "plt.xlabel('Date',fontsize =20)\n",
428 | "plt.ylabel('Price in USD',fontsize = 20)\n",
429 | "ax.legend(df.columns.values)\n",
430 | "plt.show()"
431 | ]
432 | },
433 | {
434 | "cell_type": "markdown",
435 | "id": "2431bf79",
436 | "metadata": {},
437 | "source": [
438 | "For the purposes of this article we are going to direct our attention towards the Qiskit Finance application module by IBM, more specifically we are going to look at the quantum computing approach for pricing European Call options. In the Qiskit tutorial we can look at the gradual construction of a circuit specific for European Call."
439 | ]
440 | },
441 | {
442 | "cell_type": "code",
443 | "execution_count": 12,
444 | "id": "9794b56b",
445 | "metadata": {},
446 | "outputs": [
447 | {
448 | "data": {
449 | "text/html": [
450 | "\n",
451 | "\n",
464 | "
\n",
465 | " \n",
466 | " \n",
467 | " | \n",
468 | " FB.O | \n",
469 | "
\n",
470 | " \n",
471 | " Date | \n",
472 | " | \n",
473 | "
\n",
474 | " \n",
475 | " \n",
476 | " \n",
477 | " 2021-11-24 | \n",
478 | " 341.06 | \n",
479 | "
\n",
480 | " \n",
481 | " 2021-11-26 | \n",
482 | " 333.12 | \n",
483 | "
\n",
484 | " \n",
485 | " 2021-11-29 | \n",
486 | " 338.03 | \n",
487 | "
\n",
488 | " \n",
489 | " 2021-11-30 | \n",
490 | " 324.46 | \n",
491 | "
\n",
492 | " \n",
493 | " 2021-12-01 | \n",
494 | " 310.6 | \n",
495 | "
\n",
496 | " \n",
497 | "
\n",
498 | "
"
499 | ],
500 | "text/plain": [
501 | " FB.O\n",
502 | "Date \n",
503 | "2021-11-24 341.06\n",
504 | "2021-11-26 333.12\n",
505 | "2021-11-29 338.03\n",
506 | "2021-11-30 324.46\n",
507 | "2021-12-01 310.6"
508 | ]
509 | },
510 | "execution_count": 12,
511 | "metadata": {},
512 | "output_type": "execute_result"
513 | }
514 | ],
515 | "source": [
516 | "df.tail()"
517 | ]
518 | },
519 | {
520 | "cell_type": "code",
521 | "execution_count": 13,
522 | "id": "999df20a",
523 | "metadata": {},
524 | "outputs": [],
525 | "source": [
526 | "strike_price = 315 # agreed upon strike price\n",
527 | "T = 40 / 253 # 40 days to maturity\n",
528 | "\n",
529 | "S = 310.6 # initial spot price\n",
530 | "# vol = 0.4 # volatility of 40%\n",
531 | "vol = df['FB.O'].pct_change().std()\n",
532 | "r = 0.05 # annual interest rate of 4%\n",
533 | "\n",
534 | "# resulting parameters for log-normal distribution\n",
535 | "mu = ((r - 0.5 * vol**2) * T + np.log(S))\n",
536 | "sigma = vol * np.sqrt(T)\n",
537 | "mean = np.exp(mu + sigma**2/2)\n",
538 | "variance = (np.exp(sigma**2) - 1) * np.exp(2*mu + sigma**2)\n",
539 | "stddev = np.sqrt(variance)\n",
540 | "\n",
541 | "# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.\n",
542 | "low = np.maximum(0, mean - 3*stddev)\n",
543 | "high = mean + 3*stddev"
544 | ]
545 | },
546 | {
547 | "cell_type": "code",
548 | "execution_count": 14,
549 | "id": "868cc1ea",
550 | "metadata": {},
551 | "outputs": [
552 | {
553 | "data": {
554 | "text/plain": [
555 | "306.2211877059792"
556 | ]
557 | },
558 | "execution_count": 14,
559 | "metadata": {},
560 | "output_type": "execute_result"
561 | }
562 | ],
563 | "source": [
564 | "low"
565 | ]
566 | },
567 | {
568 | "cell_type": "code",
569 | "execution_count": 15,
570 | "id": "3f5bf264",
571 | "metadata": {},
572 | "outputs": [
573 | {
574 | "data": {
575 | "text/plain": [
576 | "319.90894524815974"
577 | ]
578 | },
579 | "execution_count": 15,
580 | "metadata": {},
581 | "output_type": "execute_result"
582 | }
583 | ],
584 | "source": [
585 | "high"
586 | ]
587 | },
588 | {
589 | "cell_type": "code",
590 | "execution_count": 16,
591 | "id": "19d514fa",
592 | "metadata": {},
593 | "outputs": [],
594 | "source": [
595 | "import numpy as np\n",
596 | "from qiskit.algorithms import AmplitudeEstimation\n",
597 | "from qiskit_finance.circuit.library import EuropeanCallPricingObjective # F\n",
598 | "from qiskit.circuit.library import LogNormalDistribution, NormalDistribution\n",
599 | "from qiskit_finance.applications import EuropeanCallPricing\n",
600 | "from qiskit_finance.applications.estimation import EuropeanCallDelta\n",
601 | "from qiskit import Aer\n",
602 | "from qiskit.algorithms import IterativeAmplitudeEstimation"
603 | ]
604 | },
605 | {
606 | "cell_type": "code",
607 | "execution_count": 17,
608 | "id": "bd68b69f",
609 | "metadata": {},
610 | "outputs": [
611 | {
612 | "data": {
613 | "text/plain": [
614 | "[,\n",
615 | " ,\n",
616 | " ,\n",
617 | " ,\n",
618 | " ,\n",
619 | " ,\n",
620 | " ,\n",
621 | " ,\n",
622 | " ,\n",
623 | " ,\n",
624 | " ,\n",
625 | " ]"
626 | ]
627 | },
628 | "execution_count": 17,
629 | "metadata": {},
630 | "output_type": "execute_result"
631 | }
632 | ],
633 | "source": [
634 | "provider = IBMQ.load_account() \n",
635 | "provider.backends()"
636 | ]
637 | },
638 | {
639 | "cell_type": "code",
640 | "execution_count": 56,
641 | "id": "c9f9ccb5",
642 | "metadata": {},
643 | "outputs": [],
644 | "source": [
645 | "backend = provider.get_backend(\"ibmq_lima\")\n",
646 | "sim = QuantumInstance(backend=backend, shots=1000)"
647 | ]
648 | },
649 | {
650 | "cell_type": "markdown",
651 | "id": "b4633b14",
652 | "metadata": {},
653 | "source": [
654 | "#### Due to limitation in number of publicly available qubits of IBMQ systems, we will be using 2 qubits to test it on real quantum computer. "
655 | ]
656 | },
657 | {
658 | "cell_type": "code",
659 | "execution_count": 19,
660 | "id": "6b9998fd",
661 | "metadata": {},
662 | "outputs": [],
663 | "source": [
664 | "# number of qubits to represent the uncertainty\n",
665 | "num_uncertainty_qubits = 2"
666 | ]
667 | },
668 | {
669 | "cell_type": "markdown",
670 | "id": "9f552acf",
671 | "metadata": {},
672 | "source": [
673 | "## 3. Log Normal Distribution\n",
674 | "\n",
675 | "### Call Option"
676 | ]
677 | },
678 | {
679 | "cell_type": "code",
680 | "execution_count": 20,
681 | "id": "c5b8ef3e",
682 | "metadata": {},
683 | "outputs": [],
684 | "source": [
685 | "distribution = LogNormalDistribution(num_uncertainty_qubits, mu=mu, sigma=sigma**2, bounds=(low, high))"
686 | ]
687 | },
688 | {
689 | "cell_type": "code",
690 | "execution_count": 21,
691 | "id": "0a3fb1c5",
692 | "metadata": {},
693 | "outputs": [],
694 | "source": [
695 | "european_call_pricing = EuropeanCallPricing(num_state_qubits=num_uncertainty_qubits,\n",
696 | " strike_price=strike_price,\n",
697 | " rescaling_factor=0.25, # approximation constant for payoff function\n",
698 | " bounds=(low, high),\n",
699 | " uncertainty_model=distribution)"
700 | ]
701 | },
702 | {
703 | "cell_type": "code",
704 | "execution_count": 22,
705 | "id": "d838b580",
706 | "metadata": {},
707 | "outputs": [],
708 | "source": [
709 | "problem = european_call_pricing.to_estimation_problem()"
710 | ]
711 | },
712 | {
713 | "cell_type": "code",
714 | "execution_count": 23,
715 | "id": "f5790232",
716 | "metadata": {},
717 | "outputs": [
718 | {
719 | "data": {
720 | "image/png": "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\n",
721 | "text/plain": [
722 | ""
723 | ]
724 | },
725 | "metadata": {},
726 | "output_type": "display_data"
727 | }
728 | ],
729 | "source": [
730 | "problem.state_preparation.draw('mpl', style='iqx')\n",
731 | "plt.show()"
732 | ]
733 | },
734 | {
735 | "cell_type": "markdown",
736 | "id": "4767d59d",
737 | "metadata": {},
738 | "source": [
739 | "In this diagram, we see implementation of the Log-normal distribution on the first layer and Linear Amplitude Estimation function on the second layer. In both European call and European put implementations a central algorithm is Iterative Amplitude Estimation. Crucially, this implementation does not rely on Quantum Phase Estimation, instead it bases only on select Grover iterations. Essentially, we are interested in the probability of measuring ∣1⟩ in the last qubit."
740 | ]
741 | },
742 | {
743 | "cell_type": "code",
744 | "execution_count": 24,
745 | "id": "25281eee",
746 | "metadata": {},
747 | "outputs": [],
748 | "source": [
749 | "epsilon = 0.01 # determines final accuracy\n",
750 | "alpha = 0.05 # determines how certain we are of the result\n",
751 | "\n",
752 | "ae = IterativeAmplitudeEstimation(epsilon, alpha=alpha, quantum_instance=sim)"
753 | ]
754 | },
755 | {
756 | "cell_type": "code",
757 | "execution_count": 57,
758 | "id": "ccc01f92",
759 | "metadata": {},
760 | "outputs": [],
761 | "source": [
762 | "result = ae.estimate(problem)"
763 | ]
764 | },
765 | {
766 | "cell_type": "code",
767 | "execution_count": 26,
768 | "id": "40315560",
769 | "metadata": {},
770 | "outputs": [
771 | {
772 | "name": "stdout",
773 | "output_type": "stream",
774 | "text": [
775 | "Esimated value: \t2.5420\n",
776 | "Confidence interval: \t[2.4652, 2.6188]\n"
777 | ]
778 | }
779 | ],
780 | "source": [
781 | "conf_int_result = np.array(result.confidence_interval_processed)\n",
782 | "print(\"Esimated value: \\t%.4f\" % european_call_pricing.interpret(result))\n",
783 | "print(\"Confidence interval: \\t[%.4f, %.4f]\" % tuple(conf_int_result))"
784 | ]
785 | },
786 | {
787 | "cell_type": "code",
788 | "execution_count": 49,
789 | "id": "d2481ffb",
790 | "metadata": {},
791 | "outputs": [
792 | {
793 | "data": {
794 | "image/png": "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\n",
795 | "text/plain": [
796 | ""
797 | ]
798 | },
799 | "metadata": {
800 | "needs_background": "light"
801 | },
802 | "output_type": "display_data"
803 | }
804 | ],
805 | "source": [
806 | "x = distribution.values\n",
807 | "y = distribution.probabilities\n",
808 | "plt.figure(figsize=(6,4))\n",
809 | "plt.bar(x, y, width=2)\n",
810 | "plt.xticks(x, size=12, rotation=45)\n",
811 | "plt.yticks(size=12)\n",
812 | "plt.xlabel('Spot Price at Maturity $S_T$ (\\$)', size=15)\n",
813 | "plt.ylabel('Probability ($\\%$)', size=15)\n",
814 | "plt.show()"
815 | ]
816 | },
817 | {
818 | "cell_type": "code",
819 | "execution_count": 50,
820 | "id": "0c2a2fe8",
821 | "metadata": {},
822 | "outputs": [
823 | {
824 | "data": {
825 | "image/png": "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\n",
826 | "text/plain": [
827 | ""
828 | ]
829 | },
830 | "metadata": {
831 | "needs_background": "light"
832 | },
833 | "output_type": "display_data"
834 | }
835 | ],
836 | "source": [
837 | "# plot exact payoff function (evaluated on the grid of the uncertainty model)\n",
838 | "x = distribution.values\n",
839 | "y = np.maximum(0, x - strike_price)\n",
840 | "plt.figure(figsize=(6,4))\n",
841 | "plt.plot(x, y, \"ro-\")\n",
842 | "plt.title(\"Payoff Function\", size=15)\n",
843 | "plt.xlabel(\"Spot Price\", size=15)\n",
844 | "plt.ylabel(\"Payoff\", size=15)\n",
845 | "plt.xticks(x, size=12, rotation=45)\n",
846 | "plt.yticks(size=12)\n",
847 | "plt.show()"
848 | ]
849 | },
850 | {
851 | "cell_type": "code",
852 | "execution_count": 29,
853 | "id": "d4905eab",
854 | "metadata": {},
855 | "outputs": [
856 | {
857 | "name": "stdout",
858 | "output_type": "stream",
859 | "text": [
860 | "exact expected value:\t0.2159\n",
861 | "exact delta value: \t0.4970\n"
862 | ]
863 | }
864 | ],
865 | "source": [
866 | "# evaluate exact expected value (normalized to the [0, 1] interval)\n",
867 | "exact_value = np.dot(distribution.probabilities, y)\n",
868 | "exact_delta = sum(distribution.probabilities[x >= strike_price])\n",
869 | "print(\"exact expected value:\\t%.4f\" % exact_value)\n",
870 | "print(\"exact delta value: \\t%.4f\" % exact_delta)"
871 | ]
872 | },
873 | {
874 | "cell_type": "markdown",
875 | "id": "f049f27a",
876 | "metadata": {},
877 | "source": [
878 | "### Evaluate Delta\n",
879 | "\n",
880 | "The Delta is a bit simpler to evaluate than the expected payoff. Similarly to the expected payoff, we use a comparator circuit and an ancilla qubit to identify the cases. However, since we are only interested in the probability of this condition being true, we can directly use this ancilla qubit as the objective qubit in amplitude estimation without any further approximation."
881 | ]
882 | },
883 | {
884 | "cell_type": "code",
885 | "execution_count": 30,
886 | "id": "3dc75abf",
887 | "metadata": {},
888 | "outputs": [],
889 | "source": [
890 | "european_call_delta = EuropeanCallDelta(\n",
891 | " num_state_qubits=num_uncertainty_qubits,\n",
892 | " strike_price=strike_price,\n",
893 | " bounds=(low, high),\n",
894 | " uncertainty_model=distribution,\n",
895 | ")"
896 | ]
897 | },
898 | {
899 | "cell_type": "code",
900 | "execution_count": 31,
901 | "id": "369d9b9c",
902 | "metadata": {},
903 | "outputs": [
904 | {
905 | "data": {
906 | "image/png": "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\n",
907 | "text/plain": [
908 | ""
909 | ]
910 | },
911 | "metadata": {},
912 | "output_type": "display_data"
913 | }
914 | ],
915 | "source": [
916 | "european_call_delta._objective.decompose().draw('mpl', style='iqx')\n",
917 | "plt.show()"
918 | ]
919 | },
920 | {
921 | "cell_type": "code",
922 | "execution_count": 32,
923 | "id": "66498857",
924 | "metadata": {},
925 | "outputs": [
926 | {
927 | "data": {
928 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKoAAADWCAYAAABBlhk4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQCklEQVR4nO3daVRUB5rG8afYNxFRAwTFJYIIDRiJGG0Nie1Ca6LpVmEUtNU2GkQzccmZ9BA1kbgcY5+OYdLOid0qrmmD0TgBHY0xqMG4JHYEUdHIMgYxCiqFstUyHxgZiyWpwkvVfeX5neMHL1XU6/F/7q3iVPFqjEajEUQqZ2frAYjMwVBJBIZKIjBUEoGhkggMlURgqCQCQyURGCqJwFBJBIZKIjBUEoGhkggMlURgqCQCQyURGCqJwFBJBIZKIjBUEoGhkggMlURgqCQCQyURGCqJwFBJBAdbD6A2J5dsQvn5AluP0Szv0F4YlDKjyXE1zwy0PLclGGoj5ecLcONEnq3HsIjEmS3FSz+JwFBJBIZKIjBUEoGhkggMlURgqCQCQyURGCqJoOpQDQYD1q5di8DAQLi4uCAiIgJZWVno27cvZs+ebdVZNHZ2eGbJVPxL7t8Rf3krnv/bYjh7d7DqDK0hde7GVB3qzJkzkZKSgjlz5mD//v2IjY3F5MmTcfXqVURGRlp1lrD5L6P76IH4fMyfsGvAHADAsNTXrDpDa0iduzHVhrpjxw6kpaVh3759WLx4MV544QUkJydj8ODB0Ol0DaHeuHEDo0aNgpubGyIiInD27Nk2mScoYSRyP9yLyuKfUKe9j29TtqLb8Kfh0a1rmzyeUqTO3ZhqQ121ahViYmIQHR1tcrxPnz5wdHREWFgYACAxMRHBwcEoKytDUlISJk6cCL1er+gsjh3c4NGtK8rOXW04pi26gdqKe+gU0kPRx1KS1Lmbo8pQr127htzcXEyaNKnJ14qLixEaGgpnZ2dotVpkZGRg6dKlcHV1xezZs6HX6/HNN9/84mNoNJpm/2RlZTW5rWMHVwBAbcV9k+O1FfcbvmYNWVlZZs8MqH9ujUZj9vdQbagA4Ovra3K8qqoKWVlZDZf9y5cvo3PnzujSpUvDbcLCwpCXp+xb3nSVVQAAJ083k+NOnm6o01Yp+lhKkjp3c1QZ6oPw8vPzTY6vWbMG169fx4ABAwAA9+7dg6enp8ltPD09UVlZ+YuPYTQam/3T+KkGUH8Gqrx2E95hvRuOeQQ8ASdPd9zOK7L439da0dHRZs8MqH9uS9bwqvKN071790Z4eDhWrlwJb29v+Pv7Iz09HZmZmQDQcEZ1d3eHVqs1uW9FRQU8PDwUnyl/2yGEJY1H6de5qLmtxTNvTcWPR86i8tpNxR9LSVLnbkyVZ1Q7Ozt88sknCA0NRWJiImbMmIEuXbogKSkJDg4OCA8PBwAEBgbi1q1bKCsra7hvbm4uQkJCFJ8pJ3Uv/ufQt3jxwGrEnv0IGns7HJ33geKPozSpczemyjMqAAQFBeHIkSMmx6ZOnYp+/frB1bX+hUCHDh0wduxYpKSkYPXq1di2bRs0Gg2effZZxecxGgw4s3wLzizfovj3bktS525MtaE258yZM00iXL9+PRISEtCpUycEBgZi9+7dsLe3t9GE1FbEhFpZWYn8/HzMnTvX5LiPjw8OHTpko6nIWsSE6uHhofgP8kkOVb6YImqMoZIIDJVEYKgkAkMlERgqicBQSQSGSiIwVBKBoVpB32mjMCx1vkX3GfNfK+A3NKyNJpKHoSogZvc7mFq4E/FXtmLKpTS8dPA99Bg7CADg4OqM/m/E4Z9rdwEA7BwdMO7Qe3hm2TST79Fv1hhMPL0ejh3q343/zz/vwsB3plv136FmDFUh37+fju19pmJnyAwU7D2O6P9cCM/efug98TncvlAMbdENAIChToejSevQd9oo+P76VwAAr77dMeBPU3DstVTUaes/31SSdQ7OHd0bbtPeMVSFGfUGXNz837BzsEenfgEIiInC9aPfm9zmTv41fLdqB4atmwfXrl547q+v4+LGA6a/3txoxPXjOQiIibLyv0CdGKrC7BwdEDwjBvraOpSfL0LnsF64k3+tye0u/C0Tdy5fw7gv/wyj3oCzaz5ucpvbF4rRObyXNcZWPTFv81O78Nd+j1+9Og76Oh20BaU4MmsttIWlcOro3uInPkuzz8P/+f7ISd0DQ52uyddrK6vg7KX8578kYqgKOffBpzj3/u4mx2vv3mv2M/RewQEIf30CclL3oP/CSSjK+Ab3frxlchsnD1fU3PnlT9S2B7z0t7Hy3AJ4BXUzOWbn5IDnPvxX5G3IwLcrt6No/0kM+2A+0OgXMngFd0d5jnr3R1kTQ21jxQdOw29YuMmxyH+Ph6FO1/Ajq5NvbYS7fxeEznnJ5HZ+w8JQfOC01WZVM4baxn74JAveoT3gEfAEAMBvaBiCEkbgaNI6GHX1H63R3avGsddS0f+NWHgFBwAAnoyOQF3FfVw/nmOz2dWEz1EVcGDCsha/pquqwdk1/8DTb8Th2PxUXD+eg+19pja53U+nLmL7UwkNf++/KBanlm1ui3FFYqhWcGnLQVzactCi+2SOS26jaWTipZ9EYKgkAkMlERgqicBQSQSGSiIwVBKBoZIIDJVEYKgkAkMlEVQdqpqW9pJtqfpNKTNnzsSePXuwZMkSREZGIjs7G5MnT8bNmzexcOFCq87Sa/yvETwjBp1CesDB1RlbusdZ9fFbQ+LMLVHtGdXcpb3Lli1DSEgI7OzskJ6e3mbz1NytxMXNB3Bq6eY2ewylSZy5Jao9o5q7tDcwMBDr1q3DkiVL2nSekq/qP/LsOzi0TR9HSRJnbokqz6jmLu0FgISEBIwcORIuLi7WHpOsSLWhAr+8tPdRWLJdWi0s3S6tFo/tdmlzl/ZS+6HKUB9e2rtlyxYcPnwYiYmJ2LhxIwAocka1ZLu0Wli6XVotlNgurcpQzV3aa00aOzvYOzvCzqn+9ae9syPsnR2tPoclJM7cEtW+6jdnaS8A1NXVQa/Xw2AwoK6uDtXV1XB2drbo+Y85npr4HIaum/f/sxTuBACkD0xU7UpxiTO3RLWhNqe5pb2vvPIK0tLSAADHjh0DABQUFKBnz56KPvaVXV/hyq6vFP2ebU3izC1R5aW/OQ+W9jZ+IbV58+Ymz3uUjpRsT8wZlUt72zcxZ1Rq3xgqicBQSQSGSiIwVBKBoZIIDJVEEPNzVGvxDlXvuhw1z9bWGGojg1Jm2HoEagYv/SQCz6jtVMzud9A1MggGnekitowXk3HnYjE69PJF/0Wx8BsaBkcPF1TfqkBp9nmcS/0U2oJS9F8Ui/DXJ0BfUwujwQjd/RqU5xbg8s7DKMo4qfi8DLUd+/799GaXuHkFB2DMZykoyjyJzHHJqCz+CU5eHuj9u6HoPiISeRsyANRvHjwYtxwA4NTRHQExURiyNhFPDAzG6bfTFJ2VoVITUe9MR9m5q/h6wV8bjtXeqcTFTQdavE/t3Xu48o8jMOj1GLZuHi5tPYSKH0oUm4nPUcmEvasTfIeE4uqe4626f+G+bBiNRvgpvL6dZ9R27MGi4YftfX4B7Bzscb+0vFXf01CrQ025Fs6dlF02zFDbseYWDdu7OsGg08PN17tV39POyQHO3h1Qc1vZZcO89JMJfVUtSrPPo9fLQ1t1/54vDYZGo8H1r3MVnYuhUhOn305Dl4jeGLL2VXh0r9/h6uTphr7TRqHfrDHN3sfJ0w1PTYrGoJSZuLBxv6IvpABe+tu1iNcnImzeyybHsl59H9e++Baf//ZNRCyKxdjPV8DB3QXVZRW4fiwHOf+xt+G2vkNCEX9lK4wGI/RVNSg/X4gTb25A4b5sxWfVGC35LQCkSvt/vxQ3TuTZeowW+QwOwW8/Xf5I34OXfhKBoZIIDJVEYKgkAkMlERgqicBQSQSGSiIwVBKBoZIIDJVEYKgkgqpD5dJeekDVb/NT09JeiSKTE9BtZCTcn+wM3b1qXDv8Hc68uw21d5R99701qPaMas7S3pqaGkyfPh3+/v7w8vLC8OHDceHCBVuPrhpGgwHH5n2AnSEz8NmIxXDz64yhf0my9VitotpQzVnaq9Pp0KdPH5w6dQplZWUYMWIE4uLkrvpW2nerdqA8twBGnR41ZRW4uHE/fIeE2HqsVlFlqOYu7XV3d8dbb70Ff39/2NvbY/78+cjJyUF1dbUNplY/v2FhuH2h2NZjtIpqQwUsX9qbnZ2Nnj17mrVpuqUlshL/mLO0t8fYQQiKH4GTSzaa8T+gLC7tfcjt27eRlJSEFStWWGVGSXq8OBhD3nsVh/+wGuU5BbYep1VU+ar/4aW93t7e8Pf3R3p6OjIzMwE0XdpbVVWFcePGIS4uDlOmTDHrMR6nj4r93Gem+sS9gIHLpuHwH1bjp9OXrDxZvejoaKz+9NFWtavyjGrJ0l6dTofY2FgEBgbybNpIvz+OwTNLp+Hg5HdtFqlSVHlGBcxf2jtr1iwYDAZ89NFH1h5R9Qa9OxOGOh1idr9tcnx7n6m2GegRqDbU5jRe2ltUVIS0tDS4uLjAy8ur4XheXh4CAgJsMKG6bPabaOsRFCMm1AdLe+fOndtwrEePHo/Vc01qmZhQubS3fVPliymixhgqicBQSQSGSiIwVBKBoZIIDJVEYKgkAkMlERgqicBQSQSGSiIwVBKBoZIIDJVEYKgkAkMlERgqicBQSQSGSiIwVBKBoZIIDJVEYKgkAkMlERgqicBQSQSGSiIwVBKBoZIIDJVEYKgkAkMlEVQdKrdLP7qn35yMCSc/xJT8LYjL+Tue37AI7v5dbD2WxVT9q9G5XfrRXU3PQu6Hn6FOex/2rk4Y8G+TEb1+ATLHJdt6NIuo9oxqznZpAIiPj4ePjw86duyIqKgonDhxwsaTq8vdKyWo094HAGiggdFghOdTT9p4Ksup9oxqznZpAEhOTsamTZvg5OSEjIwMTJgwASUlJbYYWbV6/W4oBq9+BU6e7jDU6XDq7TRbj2QxVYb6YLv0ggULmnzt4e3SABASUr/W22g0wtHREaWlpaiurjZrcW97UbDnOAr2HIdrVy8EThmOOwI3TKvy0m/pdun4+Hi4urpi9OjRmDt3LrdLt6Dq5h3kb/sCv9n6Jpy8PMz833h03C79f7Zv3w6tVou9e/eabPajpjQO9nB0d4WbTydbj2IRVV76Ld0uDQCOjo4YP348IiIiEBUVhaCgoJ99jMdp41+L26U1GgRPH43CfdmoLquAm583Bq34I7TFN3D3yo9Wm4/bpZtRW1uLwsJC6w2rct1+MwDjv/oL4n/YhrEZq6CrqsXB2OUw6g22Hs0iqjyjAuZtly4rK8OXX36JsWPHwsHBARs2bEBJSUmTpwbtltGILxJW2noKRajyjNqSM2fONLnsp6amws/PDz4+Pvj444+RkZHR8ByXHh+qPaM21tx26c6dO+Po0aM2nIqsRUyo3C7dvom69FP7xVBJBIZKIjBUEoGhkggMlURgqCSCmJ+jUsu8Q3vZeoSfpcR8GuPj9DYiemzx0k8iMFQSgaGSCAyVRGCoJAJDJREYKonAUEkEhkoiMFQSgaGSCAyVRGCoJAJDJREYKonAUEkEhkoiMFQS4X8BChxBJTgfg/oAAAAASUVORK5CYII=\n",
929 | "text/plain": [
930 | ""
931 | ]
932 | },
933 | "metadata": {},
934 | "output_type": "display_data"
935 | }
936 | ],
937 | "source": [
938 | "european_call_delta_circ = QuantumCircuit(european_call_delta._objective.num_qubits)\n",
939 | "european_call_delta_circ.append(distribution, range(num_uncertainty_qubits))\n",
940 | "european_call_delta_circ.append(\n",
941 | " european_call_delta._objective, range(european_call_delta._objective.num_qubits)\n",
942 | ")\n",
943 | "\n",
944 | "european_call_delta_circ.draw('mpl', style='iqx')\n",
945 | "plt.show()"
946 | ]
947 | },
948 | {
949 | "cell_type": "code",
950 | "execution_count": 33,
951 | "id": "1c213222",
952 | "metadata": {},
953 | "outputs": [],
954 | "source": [
955 | "# set target precision and confidence level\n",
956 | "epsilon = 0.01\n",
957 | "alpha = 0.05\n",
958 | "\n",
959 | "problem = european_call_delta.to_estimation_problem()\n",
960 | "\n",
961 | "# construct amplitude estimation\n",
962 | "ae_delta = IterativeAmplitudeEstimation(epsilon, alpha=alpha, quantum_instance=sim)"
963 | ]
964 | },
965 | {
966 | "cell_type": "code",
967 | "execution_count": 34,
968 | "id": "47bdf592",
969 | "metadata": {},
970 | "outputs": [],
971 | "source": [
972 | "result_delta = ae_delta.estimate(problem)"
973 | ]
974 | },
975 | {
976 | "cell_type": "code",
977 | "execution_count": 35,
978 | "id": "12001519",
979 | "metadata": {},
980 | "outputs": [
981 | {
982 | "name": "stdout",
983 | "output_type": "stream",
984 | "text": [
985 | "Exact delta: \t0.4970\n",
986 | "Esimated value: \t0.5023\n",
987 | "Confidence interval: \t[0.4976, 0.5071]\n"
988 | ]
989 | }
990 | ],
991 | "source": [
992 | "conf_int = np.array(result_delta.confidence_interval_processed)\n",
993 | "print(\"Exact delta: \\t%.4f\" % exact_delta)\n",
994 | "print(\"Esimated value: \\t%.4f\" % european_call_delta.interpret(result_delta))\n",
995 | "print(\"Confidence interval: \\t[%.4f, %.4f]\" % tuple(conf_int))"
996 | ]
997 | }
998 | ],
999 | "metadata": {
1000 | "kernelspec": {
1001 | "display_name": "Python 3 (ipykernel)",
1002 | "language": "python",
1003 | "name": "python3"
1004 | },
1005 | "language_info": {
1006 | "codemirror_mode": {
1007 | "name": "ipython",
1008 | "version": 3
1009 | },
1010 | "file_extension": ".py",
1011 | "mimetype": "text/x-python",
1012 | "name": "python",
1013 | "nbconvert_exporter": "python",
1014 | "pygments_lexer": "ipython3",
1015 | "version": "3.8.8"
1016 | }
1017 | },
1018 | "nbformat": 4,
1019 | "nbformat_minor": 5
1020 | }
1021 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [Option Pricing using Qiskit and Eikon Data API](https://developers.refinitiv.com/en/article-catalog/article/option-pricing-using-qiskit-and-eikon-data-api)
2 |
3 | In the previous article, we talked about applications of Quantum computing in Finance and saw how it can be used in Portfolio Optimization. In this article, we introduce options as financial instruments. We are going to propose the prevailing quantum approach in pricing European Options.
4 |
5 |
6 |
--------------------------------------------------------------------------------
/eikon.txt:
--------------------------------------------------------------------------------
1 | Paste Eikon Data API Key here
2 |
--------------------------------------------------------------------------------