{"id":37377,"date":"2024-11-01T09:57:06","date_gmt":"2024-11-01T09:57:06","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37377"},"modified":"2024-11-01T11:51:04","modified_gmt":"2024-11-01T11:51:04","slug":"automated-trading-development-in-python-getting-started-with-zipline","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37377\/","title":{"rendered":"Automated Trading Development in Python, Getting Started with Zipline"},"content":{"rendered":"<p><body><\/p>\n<p>In recent years, automated trading has received significant attention in the financial markets. This is because it helps investors make more efficient trading decisions without being swayed by emotions by automatically executing trades through algorithms. Python is a highly suitable language for developing such automated trading systems, with various libraries and tools available. Among these, Zipline is one of the most well-known Python-based automated trading frameworks. In this article, I will introduce how to build an automated trading system using Zipline.<\/p>\n<h2>1. Introduction to Zipline<\/h2>\n<p>Zipline is a Python-based backtesting framework developed by Alfred S. Van der Veen, designed for research and testing investment strategies. Zipline leverages Python&#8217;s powerful capabilities to provide an environment where users can easily and quickly implement trading strategies.<\/p>\n<h3>1.1 Features of Zipline<\/h3>\n<ul>\n<li>User-friendly API: Zipline offers an intuitive API that is easy to use.<\/li>\n<li>Strong backtesting capabilities: With Zipline, you can apply strategies to the past to evaluate their performance.<\/li>\n<li>Integration with numerous data sources: It is easy to access real-time and historical data from various data sources such as Quandl and Yahoo Finance.<\/li>\n<li>Support for multi-asset trading strategies: Zipline can simultaneously test and execute trading strategies across multiple assets.<\/li>\n<li>Open-source: Zipline is an open-source project that can be freely used and is continuously improved by the community.<\/li>\n<\/ul>\n<h2>2. Setting Up the Development Environment<\/h2>\n<p>To use Zipline, you must first set up your development environment. Let\u2019s go through the following steps.<\/p>\n<h3>2.1 Installing Anaconda<\/h3>\n<p>It is most efficient to use Zipline with Anaconda. Anaconda is a platform that allows for easy management and installation of various Python libraries. To install Anaconda, visit the link below, download the installation file suitable for your operating system, and install it.<\/p>\n<p><a href=\"https:\/\/www.anaconda.com\/products\/distribution\">Download Anaconda<\/a><\/p>\n<h3>2.2 Installing Zipline<\/h3>\n<p>Once Anaconda is installed, you can install Zipline using the command below. Open Anaconda Prompt and type the following command.<\/p>\n<pre><code>conda install -c conda-forge zipline<\/code><\/pre>\n<p>This command installs Zipline from the conda-forge repository. Once the installation is complete, you will be ready to use Zipline.<\/p>\n<h2>3. Basic Usage of Zipline<\/h2>\n<p>After installing Zipline, let&#8217;s implement a simple trading strategy to learn the basic usage.<\/p>\n<h3>3.1 Defining Trading Strategy<\/h3>\n<p>In this example, we will use a simple moving average crossover strategy. This strategy buys when the short-term moving average crosses above the long-term moving average and sells when it crosses below.<\/p>\n<h3>3.2 Writing the Strategy Code<\/h3>\n<p>Here is the code to implement a moving average crossover strategy using Zipline:<\/p>\n<pre><code>import zipline\n    from zipline.api import order, record, symbol\n    from zipline import run_algorithm\n    import pandas as pd\n    from datetime import datetime\n    import pytz\n\n    def initialize(context):\n        context.asset = symbol('AAPL')  # Using Apple stock\n        context.short_mavg = 50  # Short term moving average period\n        context.long_mavg = 200   # Long term moving average period\n\n    def handle_data(context, data):\n        short_mavg = data.history(context.asset, 'price', context.short_mavg, '1d').mean()\n        long_mavg = data.history(context.asset, 'price', context.long_mavg, '1d').mean()\n\n        if short_mavg > long_mavg and context.asset not in context.portfolio.positions:\n            order(context.asset, 10)  # Buy\n        elif short_mavg < long_mavg and context.asset in context.portfolio.positions:\n            order(context.asset, -10)  # Sell\n\n        record(AAPL=data.current(context.asset, 'price'))\n\n    start = datetime(2015, 1, 1, 0, 0, 0, tzinfo=pytz.UTC)\n    end = datetime(2020, 1, 1, 0, 0, 0, tzinfo=pytz.UTC)\n\n    run_algorithm(start=start,\n                  end=end,\n                  initialize=initialize,\n                  capital_base=10000,\n                  handle_data=handle_data,\n                  bundle='quantopian-quandl')\n    <\/code><\/pre>\n<h3>3.3 Explaining the Code<\/h3>\n<p>The above code is an example of a simple algorithmic trading system that operates within Zipline. Each function has the following roles:<\/p>\n<ul>\n<li><strong>initialize(context)<\/strong>: Called once at the beginning of the algorithm to initialize necessary variables. Here, it sets the asset to trade (AAPL) and defines moving average periods.<\/li>\n<li><strong>handle_data(context, data)<\/strong>: Called at each trade, this function calculates the current asset's short-term and long-term moving averages and executes trades based on conditions.<\/li>\n<li><strong>record()<\/strong>: Saves the values of variables on each trading day to allow for later analysis.<\/li>\n<li><strong>run_algorithm()<\/strong>: Responsible for executing the entire algorithm, accepting start and end dates, initial capital, and various settings as parameters.<\/li>\n<\/ul>\n<h2>4. Using Data After Installing Zipline<\/h2>\n<p>When using Zipline, you need to import data. Zipline operates in conjunction with data bundles, so it is common to use Quantopian's Quandl data. To do this, you need to download and configure the data bundle first.<\/p>\n<h3>4.1 Setting Up the Data Bundle<\/h3>\n<p>Use the following command to download the Quandl data bundle. Type the following in Anaconda Prompt:<\/p>\n<pre><code>zipline ingest -b quantopian-quandl<\/code><\/pre>\n<p>This command downloads stock prices and other economic data from Quandl and sets them up for use in Zipline.<\/p>\n<h3>4.2 Checking the Data<\/h3>\n<p>After the download is complete, you can check and use the data. Use the following code to print out the data for the AAPL stock:<\/p>\n<pre><code>from zipline.data import bundles\n    import pandas as pd\n\n    # Load the data bundle\n    bundle_data = bundles.load('quantopian-quandl')\n    asset_data = bundle_data.asset_finder.retrieve_all([\n        symbol('AAPL')\n    ])\n\n    # Convert data to DataFrame and print\n    aapl_data = pd.DataFrame(asset_data)\n    print(aapl_data)\n    <\/code><\/pre>\n<h2>5. Optimizing Strategies with Zipline<\/h2>\n<p>Strategy optimization is a very important process in automated trading. You can improve performance by adjusting various parameters. Here\u2019s how to optimize strategies by changing parameters using Zipline.<\/p>\n<h3>5.1 Adjusting Parameters<\/h3>\n<p>In the basic algorithm above, perform several backtests by changing the short-term and long-term moving average periods. Here\u2019s the code that adjusts the short-term and long-term moving average periods while returning results:<\/p>\n<pre><code>def run_multiple_backtests(short_mavg_list, long_mavg_list):\n        results = {}\n        for short_mavg in short_mavg_list:\n            for long_mavg in long_mavg_list:\n                result = run_algorithm(start=start,\n                                       end=end,\n                                       initialize=lambda context: initialize(context, short_mavg, long_mavg),\n                                       capital_base=10000,\n                                       handle_data=handle_data,\n                                       bundle='quantopian-quandl')\n                results[(short_mavg, long_mavg)] = result\n        return results\n\n    results = run_multiple_backtests(short_mavg_list=[10, 20, 50],\n                                      long_mavg_list=[100, 150, 200])\n    <\/code><\/pre>\n<p>You can visualize the results to see which combination is the most effective. This process helps make the right decisions based on data.<\/p>\n<h2>6. Visualizing and Evaluating Results<\/h2>\n<p>After backtesting the strategy, it is important to visualize the results for performance evaluation. Zipline allows the use of a library called <code>Pyfolio<\/code>. <code>Pyfolio<\/code> is a tool that analyzes the performance of investment strategies and provides results visually.<\/p>\n<h3>6.1 Installing Pyfolio<\/h3>\n<p>To install Pyfolio, enter the command below.<\/p>\n<pre><code>pip install pyfolio<\/code><\/pre>\n<h3>6.2 Visualizing Results<\/h3>\n<p>You can now visualize results using Pyfolio. Refer to the following code:<\/p>\n<pre><code>import pyfolio as pf\n\n    # Pass Zipline results to Pyfolio\n    pf.create_full_tear_sheet(results[(50, 200)])\n    <\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>In this article, I introduced Zipline as the first step in developing an automated trading system using Python and explored how to implement a basic trading strategy. With powerful tools like Zipline, financial data analysis, strategy development, and optimization are possible, and we also learned how to visualize and evaluate performance. I hope you can execute more efficient and successful investment strategies through automated trading. May your future investment journey be filled with good fortune!<\/p>\n<div class=\"note\">\n<p><strong>Note:<\/strong> Ideally, for algorithmic trading, one should consider notable strategies or combinations of various data for higher performance, and risk management for practical trading is also very important.<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In recent years, automated trading has received significant attention in the financial markets. This is because it helps investors make more efficient trading decisions without being swayed by emotions by automatically executing trades through algorithms. Python is a highly suitable language for developing such automated trading systems, with various libraries and tools available. Among these, &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37377\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Automated Trading Development in Python, Getting Started with Zipline&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[147],"tags":[],"class_list":["post-37377","post","type-post","status-publish","format-standard","hentry","category-python-auto-trading"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/37377\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In recent years, automated trading has received significant attention in the financial markets. This is because it helps investors make more efficient trading decisions without being swayed by emotions by automatically executing trades through algorithms. Python is a highly suitable language for developing such automated trading systems, with various libraries and tools available. Among these, &hellip; \ub354 \ubcf4\uae30 &quot;Automated Trading Development in Python, Getting Started with Zipline&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37377\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:57:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:51:04+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Automated Trading Development in Python, Getting Started with Zipline\",\"datePublished\":\"2024-11-01T09:57:06+00:00\",\"dateModified\":\"2024-11-01T11:51:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/\"},\"wordCount\":886,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Auto Trading\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37377\/\",\"name\":\"Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:57:06+00:00\",\"dateModified\":\"2024-11-01T11:51:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37377\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37377\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automated Trading Development in Python, Getting Started with Zipline\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","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:\/\/atmokpo.com\/w\/37377\/","og_locale":"ko_KR","og_type":"article","og_title":"Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In recent years, automated trading has received significant attention in the financial markets. This is because it helps investors make more efficient trading decisions without being swayed by emotions by automatically executing trades through algorithms. Python is a highly suitable language for developing such automated trading systems, with various libraries and tools available. Among these, &hellip; \ub354 \ubcf4\uae30 \"Automated Trading Development in Python, Getting Started with Zipline\"","og_url":"https:\/\/atmokpo.com\/w\/37377\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:57:06+00:00","article_modified_time":"2024-11-01T11:51:04+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37377\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37377\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Automated Trading Development in Python, Getting Started with Zipline","datePublished":"2024-11-01T09:57:06+00:00","dateModified":"2024-11-01T11:51:04+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37377\/"},"wordCount":886,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Auto Trading"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37377\/","url":"https:\/\/atmokpo.com\/w\/37377\/","name":"Automated Trading Development in Python, Getting Started with Zipline - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:57:06+00:00","dateModified":"2024-11-01T11:51:04+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37377\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37377\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37377\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Automated Trading Development in Python, Getting Started with Zipline"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=37377"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37377\/revisions"}],"predecessor-version":[{"id":37378,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37377\/revisions\/37378"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}