{"id":37851,"date":"2024-11-01T10:00:58","date_gmt":"2024-11-01T10:00:58","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37851"},"modified":"2024-11-01T11:09:17","modified_gmt":"2024-11-01T11:09:17","slug":"automatic-trading-using-deep-learning-and-machine-learning-implementation-of-a-bitcoin-trading-agent-using-ppo-proximal-policy-optimization-reinforcement-learning-with-the-ppo-algorithm","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37851\/","title":{"rendered":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm."},"content":{"rendered":"<p><body><\/p>\n<p>Artificial intelligence, machine learning, and reinforcement learning play a very important role in the current financial markets. In particular, automated trading systems in cryptocurrency markets, such as Bitcoin, are gaining great popularity, and various algorithms are being researched to develop these systems. Among them, the PPO (Proximal Policy Optimization) algorithm is a state-of-the-art technology widely used in the field of reinforcement learning. This article will detail how to implement an automated trading agent for Bitcoin using the PPO algorithm.<\/p>\n<h2>1. Overview of the PPO (Proximal Policy Optimization) Algorithm<\/h2>\n<p>PPO is a reinforcement learning algorithm proposed by OpenAI that has good characteristics of stability and convergence speed. PPO is a policy-based method that updates the policy in a direction that maximizes rewards based on the agent&#8217;s experiences in the environment. The core idea of PPO is to optimize the policy&#8217;s output while limiting the changes from the previous policy to maintain stability during training.<\/p>\n<h3>1.1 Key Features of PPO<\/h3>\n<ul>\n<li>Conservative Updates: Limits changes between the old policy and the new policy to improve training stability.<\/li>\n<li>Clipping: Adjusts the loss function to prevent &#8216;wrong updates&#8217;.<\/li>\n<li>Sample Efficiency: Allows for more efficient learning by utilizing the existing policy.<\/li>\n<\/ul>\n<h2>2. Structure of the Bitcoin Automated Trading Agent<\/h2>\n<p>To implement a Bitcoin automated trading system, the following key components are required.<\/p>\n<ul>\n<li>Environment: Bitcoin market data that the agent interacts with.<\/li>\n<li>State: A feature set reflecting the current market situation.<\/li>\n<li>Action: Buy, sell, or hold actions that the agent can choose from.<\/li>\n<li>Reward: The economic outcome of the agent&#8217;s actions.<\/li>\n<\/ul>\n<h3>2.1 Implementing the Environment<\/h3>\n<p>To implement the environment, Bitcoin price data must be collected, and based on this data, states and rewards must be defined. Typically, various technical indicators (TA) are used to define the state. For example, indicators such as moving averages, Relative Strength Index (RSI), and MACD can be used.<\/p>\n<h4>2.1.1 Example of Implementing the Environment Class<\/h4>\n<pre><code>\nimport numpy as np\nimport pandas as pd\n\nclass BitcoinEnv:\n    def __init__(self, data):\n        self.data = data\n        self.current_step = 0\n        self.current_balance = 1000  # Initial capital\n        self.holdings = 0  # Bitcoin holdings\n\n    def reset(self):\n        self.current_step = 0\n        self.current_balance = 1000\n        self.holdings = 0\n        return self._get_state()\n\n    def _get_state(self):\n        return self.data.iloc[self.current_step].values\n\n    def step(self, action):\n        price = self.data.iloc[self.current_step]['Close']\n        # Calculate reward and new state based on the action\n        if action == 1:  # Buy\n            self.holdings += 1\n            self.current_balance -= price\n        elif action == 2:  # Sell\n            if self.holdings > 0:\n                self.holdings -= 1\n                self.current_balance += price\n\n        self.current_step += 1\n        done = self.current_step >= len(self.data) - 1\n        reward = self.current_balance + self.holdings * price - 1000  # Reward based on initial capital\n        return self._get_state(), reward, done\n<\/code><\/pre>\n<h2>3. Implementing the PPO Algorithm<\/h2>\n<p>To implement the PPO policy optimization algorithm, a neural network must be used to model the policy. A commonly used neural network architecture is as follows.<\/p>\n<h3>3.1 Defining Neural Network Architecture<\/h3>\n<pre><code>\nimport tensorflow as tf\n\nclass PPOAgent:\n    def __init__(self, state_size, action_size, lr=0.001):\n        self.state_size = state_size\n        self.action_size = action_size\n        self.lr = lr\n        self.gamma = 0.99  # Discount factor\n        self.epsilon = 0.2  # Clipping ratio\n        self.model = self._create_model()\n        \n    def _create_model(self):\n        model = tf.keras.Sequential()\n        model.add(tf.keras.layers.Dense(64, activation='relu', input_shape=(self.state_size,)))\n        model.add(tf.keras.layers.Dense(64, activation='relu'))\n        model.add(tf.keras.layers.Dense(self.action_size, activation='softmax'))\n        model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(lr=self.lr))\n        return model\n\n    def act(self, state):\n        state = state.reshape([1, self.state_size])\n        probabilities = self.model.predict(state)[0]\n        return np.random.choice(self.action_size, p=probabilities)\n<\/code><\/pre>\n<h4>3.2 Implementing the Policy Update Function<\/h4>\n<pre><code>\nclass PPOAgent:\n    # ... (same as previous code)\n\n    def train(self, states, actions, rewards):\n        states = np.array(states)\n        actions = np.array(actions)\n        discounted_rewards = self._discount_rewards(rewards)\n        actions_one_hot = tf.keras.utils.to_categorical(actions, num_classes=self.action_size)\n\n        # Calculate policy loss\n        with tf.GradientTape() as tape:\n            probabilities = self.model(states)\n            advantages = discounted_rewards - tf.reduce_mean(discounted_rewards)\n            policy_loss = -tf.reduce_mean(actions_one_hot * tf.math.log(probabilities) * advantages)\n\n        gradients = tape.gradient(policy_loss, self.model.trainable_variables)\n        self.model.optimizer.apply_gradients(zip(gradients, self.model.trainable_variables))\n\n    def _discount_rewards(self, rewards):\n        discounted = np.zeros_like(rewards)\n        running_add = 0\n        for t in reversed(range(len(rewards))):\n            running_add = running_add * self.gamma + rewards[t]\n            discounted[t] = running_add\n        return discounted\n<\/code><\/pre>\n<h2>4. Training and Evaluating the Agent<\/h2>\n<p>To train the agent, the environment and the agent must continuously interact. Through a training loop, the agent selects actions in the environment, receives rewards, and updates its policy.<\/p>\n<h3>4.1 Implementing the Agent Training Function<\/h3>\n<pre><code>\ndef train_agent(env, agent, episodes=1000):\n    for episode in range(episodes):\n        state = env.reset()\n        done = False\n        states, actions, rewards = [], [], []\n        \n        while not done:\n            action = agent.act(state)\n            next_state, reward, done = env.step(action)\n\n            states.append(state)\n            actions.append(action)\n            rewards.append(reward)\n            state = next_state\n\n        agent.train(states, actions, rewards)\n\n        total_reward = sum(rewards)\n        print(f'Episode: {episode + 1}, Total Reward: {total_reward}')\n<\/code><\/pre>\n<h3>4.2 Implementing the Evaluation Function<\/h3>\n<pre><code>\ndef evaluate_agent(env, agent, episodes=10):\n    total_rewards = []\n    for episode in range(episodes):\n        state = env.reset()\n        done = False\n        total_reward = 0\n        \n        while not done:\n            action = agent.act(state)\n            next_state, reward, done = env.step(action)\n            state = next_state\n            total_reward += reward\n\n        total_rewards.append(total_reward)\n    \n    print(f'Average Reward over {episodes} episodes: {np.mean(total_rewards)}')\n<\/code><\/pre>\n<h2>5. Conclusion<\/h2>\n<p>We explored how to build a Bitcoin automated trading agent using the PPO algorithm. The PPO algorithm is a stable and effective method for policy optimization, demonstrating its potential in the financial markets. Through this project, I hope you were able to understand the basic concepts of reinforcement learning and the implementation method using PPO. Going forward, I recommend experimenting with and developing various AI-based trading strategies.<\/p>\n<p>The code used in this article is provided as an example and will require more considerations in actual trading environments. For instance, various evaluation criteria, more features, and refined state management must be included. Moreover, the process of collecting and processing data is also a very important part, and through this, more effective and stable trading systems can be developed.<\/p>\n<h2>6. References<\/h2>\n<ul>\n<li>PIE: Proximal Policy Optimization Algorithms (OpenAI)<\/li>\n<li>Example code and tutorials: Gym, TensorFlow, Keras<\/li>\n<li>Bitcoin and cryptocurrency related data: Yahoo Finance, CoinMarketCap<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Artificial intelligence, machine learning, and reinforcement learning play a very important role in the current financial markets. In particular, automated trading systems in cryptocurrency markets, such as Bitcoin, are gaining great popularity, and various algorithms are being researched to develop these systems. Among them, the PPO (Proximal Policy Optimization) algorithm is a state-of-the-art technology widely &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37851\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.&#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":[121],"tags":[],"class_list":["post-37851","post","type-post","status-publish","format-standard","hentry","category-deep-learning-automated-trading"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \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\/37851\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Artificial intelligence, machine learning, and reinforcement learning play a very important role in the current financial markets. In particular, automated trading systems in cryptocurrency markets, such as Bitcoin, are gaining great popularity, and various algorithms are being researched to develop these systems. Among them, the PPO (Proximal Policy Optimization) algorithm is a state-of-the-art technology widely &hellip; \ub354 \ubcf4\uae30 &quot;Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37851\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T10:00:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:09:17+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=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.\",\"datePublished\":\"2024-11-01T10:00:58+00:00\",\"dateModified\":\"2024-11-01T11:09:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/\"},\"wordCount\":568,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Deep learning Automated trading\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37851\/\",\"name\":\"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T10:00:58+00:00\",\"dateModified\":\"2024-11-01T11:09:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37851\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37851\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.\"}]},{\"@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":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \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\/37851\/","og_locale":"ko_KR","og_type":"article","og_title":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Artificial intelligence, machine learning, and reinforcement learning play a very important role in the current financial markets. In particular, automated trading systems in cryptocurrency markets, such as Bitcoin, are gaining great popularity, and various algorithms are being researched to develop these systems. Among them, the PPO (Proximal Policy Optimization) algorithm is a state-of-the-art technology widely &hellip; \ub354 \ubcf4\uae30 \"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.\"","og_url":"https:\/\/atmokpo.com\/w\/37851\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T10:00:58+00:00","article_modified_time":"2024-11-01T11:09:17+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":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37851\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37851\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm.","datePublished":"2024-11-01T10:00:58+00:00","dateModified":"2024-11-01T11:09:17+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37851\/"},"wordCount":568,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Deep learning Automated trading"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37851\/","url":"https:\/\/atmokpo.com\/w\/37851\/","name":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm. - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T10:00:58+00:00","dateModified":"2024-11-01T11:09:17+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37851\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37851\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37851\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Automatic trading using deep learning and machine learning, implementation of a Bitcoin trading agent using PPO (Proximal Policy Optimization) reinforcement learning with the PPO algorithm."}]},{"@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\/37851","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=37851"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37851\/revisions"}],"predecessor-version":[{"id":37852,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37851\/revisions\/37852"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}