{"id":81875,"date":"2021-03-31T12:15:00","date_gmt":"2021-03-31T16:15:00","guid":{"rendered":"https:\/\/ibkrcampus.com\/?p=81875"},"modified":"2023-02-24T14:51:34","modified_gmt":"2023-02-24T19:51:34","slug":"how-to-create-kalman-filter-in-python-part-vi","status":"publish","type":"post","link":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/","title":{"rendered":"How to Create Kalman Filter in Python \u2013 Part VI"},"content":{"rendered":"\n<p><em>See&nbsp;<a href=\"\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python\/\">Part I<\/a>,&nbsp;<a href=\"\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-ii\/\">Part II<\/a>&nbsp;,&nbsp;<a href=\"\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-iii\/\">Part III<\/a>,&nbsp;&nbsp;<a href=\"\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-iv\/\">Part IV<\/a>&nbsp;and <a href=\"\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-v\/\">Part V<\/a> of this series to get started with the statistical terms and concepts used in Kalman Filter.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pairs-trading-using-kalman-filter-in-python\">Pairs trading using Kalman Filter in Python<\/h2>\n\n\n\n<p>(Thanks to&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/chamundeswari-koppisetti\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chamundeswari Koppisetti<\/a>&nbsp;for providing the code.)<\/p>\n\n\n\n<p>Let us start by importing the necessary libraries for Kalman Filter<\/p>\n\n\n\n<p style=\"background-color:#fcfcdb;font-size:11px\" class=\"has-background\">    \n# Import a Kalman filter and other libraries<br>\n!pip install pykalman<br>\n!pip install qq-training-wheels auquan_toolbox &#8211;upgrade<br>\nfrom pykalman import KalmanFilter<br>\nimport numpy as np<br>\nimport pandas as pd<br>\nfrom scipy import poly1d<br>\nfrom datetime import datetime<br><br>\n\nimport matplotlib.pyplot as plt<br>\n%matplotlib inline<br>\nplt.style.use(&#8216;seaborn-darkgrid&#8217;)<br>\nplt.rcParams[&#8216;figure.figsize&#8217;] = (10,7)\n<\/p>\n\n\n\n<p>We will consider the 4 year (Aug 2015 &#8211; Aug 2019) Adjusted Close price data for Bajaj Auto Limited (BAJAJ-AUTO.NS) and Hero MotoCorp Limited (HEROMOTOCO.NS).<\/p>\n\n\n\n<p>We have included the data file in the zip file along with the code for you to run on your system later. The link to download the files can be found at the end of the <a href=\"https:\/\/blog.quantinsti.com\/kalman-filter\/\">blog<\/a>.<\/p>\n\n\n\n<p style=\"background-color:#fcfcdb;font-size:11px\" class=\"has-background\">    \n# Define path where data file is saved in your system<br>\n#path = &#8216;..\/data\/&#8217;<br>\ndata = pd.read_csv(path +&#8217;data.csv&#8217;, index_col =&#8217;Date&#8217;)<br>\ndata[&#8216;ratio&#8217;] = data[&#8216;BAJAJ&#8217;]\/ data[&#8216;HERO&#8217;]<br>\nstock_1 = data[&#8216;BAJAJ&#8217;]<br>\nstock_2 = data[&#8216;HERO&#8217;]<br><br>\n\n# Calculate the hedge ratio for pairs trading<br>\nratio =stock_1\/stock_2<br>\ndata.head()<br>\n<\/p>\n\n\n\n<p>The output will be as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"488\" height=\"330\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2023\/02\/read_data_output-quantinsti.png\" alt=\"\" class=\"wp-image-185583 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/02\/read_data_output-quantinsti.png 488w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2023\/02\/read_data_output-quantinsti-300x203.png 300w\" data-sizes=\"(max-width: 488px) 100vw, 488px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 488px; aspect-ratio: 488\/330;\" \/><\/figure>\n\n\n\n<p>Hyperparameters of Kalman Filter can be changed for instance:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multi dimensional transition matrices, to use more of past information for making expected results at each point<\/li>\n\n\n\n<li>Different values of observation and transition covariance<\/li>\n<\/ul>\n\n\n\n<p style=\"background-color:#fcfcdb;font-size:11px\" class=\"has-background\">    \nkf = KalmanFilter(transition_matrices = [1],<br>\n              observation_matrices = [1],<br>\n              initial_state_mean = 0,<br>\n              initial_state_covariance = 1,<br>\n              observation_covariance=1,<br>\n              transition_covariance=.0001)<br><br>\n\nmean, cov = kf.filter(ratio.values)<br>\nmean, std = mean.squeeze(), np.std(cov.squeeze())<br><br>\n\nplt.figure(figsize=(15,7))<br>\nplt.plot(ratio.values &#8211; mean, &#8216;m&#8217;, lw=1)<br>\nplt.plot(np.sqrt(cov.squeeze()), &#8216;y&#8217;, lw=1)<br>\nplt.plot(-np.sqrt(cov.squeeze()), &#8216;c&#8217;, lw=1)<br>\nplt.title(&#8216;Kalman filter estimate&#8217;)<br>\nplt.legend([&#8216;Error: real_value &#8211; mean&#8217;, &#8216;std&#8217;, &#8216;-std&#8217;])<br>\nplt.xlabel(&#8216;Day&#8217;)<br>\nplt.ylabel(&#8216;Value&#8217;)\n<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"887\" height=\"434\" data-src=\"\/campus\/wp-content\/uploads\/sites\/2\/2021\/03\/Output_Kalman_hyperparameters-quantinsti.png\" alt=\"How to Create Kalman Filter in Python\" class=\"wp-image-82024 lazyload\" data-srcset=\"https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2021\/03\/Output_Kalman_hyperparameters-quantinsti.png 887w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2021\/03\/Output_Kalman_hyperparameters-quantinsti-700x343.png 700w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2021\/03\/Output_Kalman_hyperparameters-quantinsti-300x147.png 300w, https:\/\/ibkrcampus.com\/campus\/wp-content\/uploads\/sites\/2\/2021\/03\/Output_Kalman_hyperparameters-quantinsti-768x376.png 768w\" data-sizes=\"(max-width: 887px) 100vw, 887px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 887px; aspect-ratio: 887\/434;\" \/><\/figure>\n\n\n\n<p><em>Stay tuned for the next installment, in which Rekhit will showcase how to use Python for a Pairs trading strategy<\/em> script.<\/p>\n\n\n\n<p>Download the full code:&nbsp;<a href=\"https:\/\/blog.quantinsti.com\/kalman-filter\/\">https:\/\/blog.quantinsti.com\/kalman-filter\/<\/a>.<\/p>\n\n\n\n<p><small><em>All data and information provided in this article are for informational purposes only. QuantInsti\u00ae makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information in this article and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.<\/p>\n","protected":false},"author":91,"featured_media":40540,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[339,343,349,338,350,341,344],"tags":[851,9484,8778,9487,8920,4272,9242,9485,8710,4659,8777,1225,8445,1224,9486,9482,595,9483,4580,1048,4271,9152,8155],"contributors-categories":[13654],"class_list":{"0":"post-81875","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-data-science","8":"category-programing-languages","9":"category-python-development","10":"category-ibkr-quant-news","11":"category-quant-asia-pacific","12":"category-quant-development","13":"category-quant-regions","14":"tag-algo-trading","15":"tag-auquan_toolbox","16":"tag-bessels-correction","17":"tag-datetime","18":"tag-equations-in-kalman-filter","19":"tag-kalman-filter","20":"tag-kalman-gain-equation","21":"tag-kalmanfilter","22":"tag-mathematical-finance","23":"tag-matplotlib","24":"tag-normal-distribution","25":"tag-numpy","26":"tag-pairs-trading","27":"tag-pandas","28":"tag-poly1d","29":"tag-pykalman","30":"tag-python","31":"tag-qq-training-wheels","32":"tag-seaborn","33":"tag-standard-deviation","34":"tag-statistical-arbitrage","35":"tag-status-update-equation","36":"tag-variance","37":"contributors-categories-quantinsti"},"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Create Kalman Filter in Python \u2013 Part VI<\/title>\n<meta name=\"description\" content=\"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/81875\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Create Kalman Filter in Python \u2013 Part VI | IBKR Quant Blog\" \/>\n<meta property=\"og:description\" content=\"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/\" \/>\n<meta property=\"og:site_name\" content=\"IBKR Campus US\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-31T16:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-24T19:51:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"550\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rekhit Pachanekar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rekhit Pachanekar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"NewsArticle\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/#article\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/\"\n\t            },\n\t            \"author\": {\n\t                \"name\": \"Rekhit Pachanekar\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/8ab08253f8958ae9552fd7d7b5697370\"\n\t            },\n\t            \"headline\": \"How to Create Kalman Filter in Python \u2013 Part VI\",\n\t            \"datePublished\": \"2021-03-31T16:15:00+00:00\",\n\t            \"dateModified\": \"2023-02-24T19:51:34+00:00\",\n\t            \"mainEntityOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/\"\n\t            },\n\t            \"wordCount\": 443,\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/04\\\/python-programming-keyboard.jpg\",\n\t            \"keywords\": [\n\t                \"Algo Trading\",\n\t                \"auquan_toolbox\",\n\t                \"Bessel's Correction\",\n\t                \"datetime\",\n\t                \"Equations in Kalman Filter\",\n\t                \"Kalman filter\",\n\t                \"Kalman Gain equation\",\n\t                \"KalmanFilter\",\n\t                \"Mathematical Finance\",\n\t                \"Matplotlib\",\n\t                \"normal distribution\",\n\t                \"NumPy\",\n\t                \"Pairs Trading\",\n\t                \"Pandas\",\n\t                \"poly1d\",\n\t                \"pykalman\",\n\t                \"Python\",\n\t                \"qq-training-wheels\",\n\t                \"Seaborn\",\n\t                \"Standard Deviation\",\n\t                \"Statistical Arbitrage\",\n\t                \"Status update equation\",\n\t                \"Variance\"\n\t            ],\n\t            \"articleSection\": [\n\t                \"Data Science\",\n\t                \"Programming Languages\",\n\t                \"Python Development\",\n\t                \"Quant\",\n\t                \"Quant Asia Pacific\",\n\t                \"Quant Development\",\n\t                \"Quant Regions\"\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/\",\n\t            \"name\": \"How to Create Kalman Filter in Python \u2013 Part VI | IBKR Quant Blog\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/04\\\/python-programming-keyboard.jpg\",\n\t            \"datePublished\": \"2021-03-31T16:15:00+00:00\",\n\t            \"dateModified\": \"2023-02-24T19:51:34+00:00\",\n\t            \"description\": \"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-create-kalman-filter-in-python-part-vi\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/04\\\/python-programming-keyboard.jpg\",\n\t            \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/04\\\/python-programming-keyboard.jpg\",\n\t            \"width\": 900,\n\t            \"height\": 550,\n\t            \"caption\": \"Python\"\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"name\": \"IBKR Campus US\",\n\t            \"description\": \"Financial Education from Interactive Brokers\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\",\n\t            \"name\": \"Interactive Brokers\",\n\t            \"alternateName\": \"IBKR\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"width\": 669,\n\t                \"height\": 669,\n\t                \"caption\": \"Interactive Brokers\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            },\n\t            \"publishingPrinciples\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/about-ibkr-campus\\\/\",\n\t            \"ethicsPolicy\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/cyber-security-notice\\\/\"\n\t        },\n\t        {\n\t            \"@type\": \"Person\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/8ab08253f8958ae9552fd7d7b5697370\",\n\t            \"name\": \"Rekhit Pachanekar\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/author\\\/rekhit\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Create Kalman Filter in Python \u2013 Part VI","description":"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/81875\/","og_locale":"en_US","og_type":"article","og_title":"How to Create Kalman Filter in Python \u2013 Part VI | IBKR Quant Blog","og_description":"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.","og_url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/","og_site_name":"IBKR Campus US","article_published_time":"2021-03-31T16:15:00+00:00","article_modified_time":"2023-02-24T19:51:34+00:00","og_image":[{"width":900,"height":550,"url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","type":"image\/jpeg"}],"author":"Rekhit Pachanekar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rekhit Pachanekar","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/#article","isPartOf":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/"},"author":{"name":"Rekhit Pachanekar","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/8ab08253f8958ae9552fd7d7b5697370"},"headline":"How to Create Kalman Filter in Python \u2013 Part VI","datePublished":"2021-03-31T16:15:00+00:00","dateModified":"2023-02-24T19:51:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/"},"wordCount":443,"publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","keywords":["Algo Trading","auquan_toolbox","Bessel's Correction","datetime","Equations in Kalman Filter","Kalman filter","Kalman Gain equation","KalmanFilter","Mathematical Finance","Matplotlib","normal distribution","NumPy","Pairs Trading","Pandas","poly1d","pykalman","Python","qq-training-wheels","Seaborn","Standard Deviation","Statistical Arbitrage","Status update equation","Variance"],"articleSection":["Data Science","Programming Languages","Python Development","Quant","Quant Asia Pacific","Quant Development","Quant Regions"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/","url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/","name":"How to Create Kalman Filter in Python \u2013 Part VI | IBKR Quant Blog","isPartOf":{"@id":"https:\/\/ibkrcampus.com\/campus\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/#primaryimage"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","datePublished":"2021-03-31T16:15:00+00:00","dateModified":"2023-02-24T19:51:34+00:00","description":"Rekhit Pachanekar demonstrates how to utilize Python libraries pykalman, numpy, pandas and scipy for coding of pairs trading scripts.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-create-kalman-filter-in-python-part-vi\/#primaryimage","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","width":900,"height":550,"caption":"Python"},{"@type":"WebSite","@id":"https:\/\/ibkrcampus.com\/campus\/#website","url":"https:\/\/ibkrcampus.com\/campus\/","name":"IBKR Campus US","description":"Financial Education from Interactive Brokers","publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ibkrcampus.com\/campus\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ibkrcampus.com\/campus\/#organization","name":"Interactive Brokers","alternateName":"IBKR","url":"https:\/\/ibkrcampus.com\/campus\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","width":669,"height":669,"caption":"Interactive Brokers"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/www.interactivebrokers.com\/campus\/about-ibkr-campus\/","ethicsPolicy":"https:\/\/www.interactivebrokers.com\/campus\/cyber-security-notice\/"},{"@type":"Person","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/8ab08253f8958ae9552fd7d7b5697370","name":"Rekhit Pachanekar","url":"https:\/\/www.interactivebrokers.com\/campus\/author\/rekhit\/"}]}},"jetpack_featured_media_url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/04\/python-programming-keyboard.jpg","_links":{"self":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/81875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/users\/91"}],"replies":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/comments?post=81875"}],"version-history":[{"count":0,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/81875\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media\/40540"}],"wp:attachment":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media?parent=81875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/categories?post=81875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/tags?post=81875"},{"taxonomy":"contributors-categories","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/contributors-categories?post=81875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}