{"id":496,"date":"2026-08-09T14:24:30","date_gmt":"2026-08-09T14:24:30","guid":{"rendered":"https:\/\/www.stockmaster.in\/universe\/?p=496"},"modified":"2026-08-09T14:29:19","modified_gmt":"2026-08-09T14:29:19","slug":"option-premium-decay-simulator","status":"publish","type":"post","link":"https:\/\/www.stockmaster.in\/universe\/option-premium-decay-simulator\/","title":{"rendered":"Option Premium Decay Simulator"},"content":{"rendered":"<div class=\"smpd-tool\">\r\n\r\n  <div class=\"smpd-header\">\r\n    <div class=\"smpd-badge\">STOCKMASTER UNIVERSE<\/div>\r\n\r\n    <h2>Option Premium Decay Simulator<\/h2>\r\n\r\n    <p>\r\n      Simulate how an option premium may change as time passes toward expiry.\r\n      Compare theoretical time decay, intrinsic value and remaining time value.\r\n    <\/p>\r\n  <\/div>\r\n\r\n\r\n  <div class=\"smpd-body\">\r\n\r\n    <!-- INPUTS -->\r\n\r\n    <div class=\"smpd-section-title\">\r\n      <span>1<\/span>\r\n      Option Setup\r\n    <\/div>\r\n\r\n\r\n    <div class=\"smpd-grid\">\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Underlying Price (\u20b9)<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-spot\"\r\n          value=\"25000\"\r\n          min=\"0\"\r\n          step=\"0.01\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Strike Price (\u20b9)<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-strike\"\r\n          value=\"25000\"\r\n          min=\"0\"\r\n          step=\"0.01\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Current Option Premium (\u20b9)<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-premium\"\r\n          value=\"250\"\r\n          min=\"0\"\r\n          step=\"0.01\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Option Type<\/label>\r\n\r\n        <select class=\"smpd-type\">\r\n          <option value=\"call\">Call<\/option>\r\n          <option value=\"put\">Put<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Days to Expiry<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-days\"\r\n          value=\"15\"\r\n          min=\"1\"\r\n          step=\"1\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Lot Size<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-lot\"\r\n          value=\"75\"\r\n          min=\"1\"\r\n          step=\"1\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Expected Price at Expiry (\u20b9)<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-expiry-price\"\r\n          value=\"25000\"\r\n          min=\"0\"\r\n          step=\"0.01\">\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-field\">\r\n        <label>Volatility Assumption (%)<\/label>\r\n        <input\r\n          type=\"number\"\r\n          class=\"smpd-volatility\"\r\n          value=\"20\"\r\n          min=\"0.1\"\r\n          step=\"0.1\">\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <div class=\"smpd-info\">\r\n      <strong>How this simulator works:<\/strong>\r\n      The model estimates remaining option value using a simplified\r\n      time-decay approach. It is designed for education and scenario\r\n      analysis, not for predicting actual market premiums.\r\n    <\/div>\r\n\r\n\r\n    <button\r\n      type=\"button\"\r\n      class=\"smpd-calculate\">\r\n      Simulate Premium Decay\r\n    <\/button>\r\n\r\n\r\n    <div class=\"smpd-error\"><\/div>\r\n\r\n\r\n    <!-- RESULTS -->\r\n\r\n    <div class=\"smpd-results\">\r\n\r\n      <div class=\"smpd-section-title smpd-space\">\r\n        <span>2<\/span>\r\n        Current Option Analysis\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smpd-result-grid\">\r\n\r\n        <div class=\"smpd-card smpd-primary\">\r\n          <small>Current Premium<\/small>\r\n          <strong class=\"smpd-current-premium\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Intrinsic Value<\/small>\r\n          <strong class=\"smpd-intrinsic\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Current Time Value<\/small>\r\n          <strong class=\"smpd-time-value\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Time Value %<\/small>\r\n          <strong class=\"smpd-time-percent\">0%<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Expiry Value<\/small>\r\n          <strong class=\"smpd-expiry-value\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Estimated Decay<\/small>\r\n          <strong class=\"smpd-decay\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Decay %<\/small>\r\n          <strong class=\"smpd-decay-percent\">0%<\/strong>\r\n        <\/div>\r\n\r\n\r\n        <div class=\"smpd-card\">\r\n          <small>Estimated P&amp;L \/ Lot<\/small>\r\n          <strong class=\"smpd-lot-pnl\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- DECAY METER -->\r\n\r\n      <div class=\"smpd-panel\">\r\n\r\n        <h3>Estimated Time Value Remaining<\/h3>\r\n\r\n        <div class=\"smpd-meter\">\r\n\r\n          <div class=\"smpd-meter-fill\">\r\n            <span>0%<\/span>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n        <p class=\"smpd-meter-text\"><\/p>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- SIMULATION TABLE -->\r\n\r\n      <div class=\"smpd-panel\">\r\n\r\n        <h3>Premium Decay Timeline<\/h3>\r\n\r\n        <div class=\"smpd-table-scroll\">\r\n\r\n          <table class=\"smpd-table\">\r\n\r\n            <thead>\r\n              <tr>\r\n                <th>Days Remaining<\/th>\r\n                <th>Estimated Premium<\/th>\r\n                <th>Time Value<\/th>\r\n                <th>Estimated Decay<\/th>\r\n                <th>Premium Change<\/th>\r\n              <\/tr>\r\n            <\/thead>\r\n\r\n            <tbody class=\"smpd-table-body\"><\/tbody>\r\n\r\n          <\/table>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- GRAPH -->\r\n\r\n      <div class=\"smpd-panel\">\r\n\r\n        <h3>Premium Decay Curve<\/h3>\r\n\r\n        <div class=\"smpd-chart-wrap\">\r\n          <canvas class=\"smpd-chart\"><\/canvas>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- SCENARIO -->\r\n\r\n      <div class=\"smpd-panel\">\r\n\r\n        <h3>Expiry Scenario<\/h3>\r\n\r\n        <div class=\"smpd-scenario-grid\">\r\n\r\n          <div>\r\n            <span>Expected Expiry Price<\/span>\r\n            <strong class=\"smpd-scenario-price\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Intrinsic Value at Expiry<\/span>\r\n            <strong class=\"smpd-scenario-intrinsic\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Estimated Expiry P&amp;L \/ Unit<\/span>\r\n            <strong class=\"smpd-scenario-pnl\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Estimated Expiry P&amp;L \/ Lot<\/span>\r\n            <strong class=\"smpd-scenario-lot-pnl\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- INTERPRETATION -->\r\n\r\n      <div class=\"smpd-interpretation\">\r\n\r\n        <h3>What This Means<\/h3>\r\n\r\n        <p class=\"smpd-interpretation-text\"><\/p>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- DISCLAIMER -->\r\n\r\n      <div class=\"smpd-disclaimer\">\r\n\r\n        <strong>Important:<\/strong>\r\n        This is a simplified educational simulation. Actual option\r\n        premiums are affected by implied volatility, time decay,\r\n        interest rates, liquidity, market demand, price movements,\r\n        spreads and other factors. The simulation does not predict\r\n        actual future option prices and should not be considered\r\n        investment advice.\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"smpd-footer\">\r\n    StockMaster Universe \u2022 F&amp;O Trading Tools\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n<style>\r\n\r\n.smpd-tool {\r\n  max-width: 1050px;\r\n  margin: 30px auto;\r\n  background: #fff;\r\n  border: 1px solid #e5e7eb;\r\n  border-radius: 18px;\r\n  overflow: hidden;\r\n  box-shadow: 0 8px 28px rgba(0,0,0,.07);\r\n  font-family: Arial, Helvetica, sans-serif;\r\n  color: #1f2937;\r\n}\r\n\r\n.smpd-tool *,\r\n.smpd-tool *:before,\r\n.smpd-tool *:after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n\r\n.smpd-header {\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  text-align: center;\r\n  padding: 30px 24px;\r\n}\r\n\r\n\r\n.smpd-badge {\r\n  display: inline-block;\r\n  padding: 5px 10px;\r\n  border: 1px solid rgba(255,255,255,.35);\r\n  border-radius: 30px;\r\n  color: #f3e8ff;\r\n  font-size: 10px;\r\n  letter-spacing: 1px;\r\n  margin-bottom: 10px;\r\n}\r\n\r\n\r\n.smpd-header h2 {\r\n  margin: 0 0 8px;\r\n  color: #fff;\r\n  font-size: 28px;\r\n  line-height: 1.3;\r\n}\r\n\r\n\r\n.smpd-header p {\r\n  max-width: 760px;\r\n  margin: auto;\r\n  color: #ede9fe;\r\n  font-size: 15px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n.smpd-body {\r\n  padding: 26px;\r\n}\r\n\r\n\r\n.smpd-section-title {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 9px;\r\n  margin-bottom: 18px;\r\n  color: #111827;\r\n  font-size: 18px;\r\n  font-weight: 700;\r\n}\r\n\r\n\r\n.smpd-section-title span {\r\n  width: 27px;\r\n  height: 27px;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  border-radius: 50%;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 13px;\r\n}\r\n\r\n\r\n.smpd-space {\r\n  margin-top: 28px;\r\n}\r\n\r\n\r\n.smpd-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 15px;\r\n}\r\n\r\n\r\n.smpd-field label {\r\n  display: block;\r\n  margin-bottom: 7px;\r\n  color: #374151;\r\n  font-size: 13px;\r\n  font-weight: 700;\r\n}\r\n\r\n\r\n.smpd-field input,\r\n.smpd-field select {\r\n  width: 100%;\r\n  padding: 12px 13px;\r\n  border: 1px solid #d1d5db;\r\n  border-radius: 9px;\r\n  background: #fff;\r\n  color: #111827;\r\n  font-size: 14px;\r\n  outline: none;\r\n}\r\n\r\n\r\n.smpd-field input:focus,\r\n.smpd-field select:focus {\r\n  border-color: #7c3aed;\r\n  box-shadow: 0 0 0 3px rgba(124,58,237,.10);\r\n}\r\n\r\n\r\n.smpd-info {\r\n  margin-top: 18px;\r\n  padding: 14px 16px;\r\n  border: 1px solid #ddd6fe;\r\n  border-radius: 10px;\r\n  background: #f5f3ff;\r\n  color: #4c1d95;\r\n  font-size: 12px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n.smpd-calculate {\r\n  width: 100%;\r\n  margin-top: 20px;\r\n  padding: 15px;\r\n  border: 0;\r\n  border-radius: 10px;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 16px;\r\n  font-weight: 700;\r\n  cursor: pointer;\r\n}\r\n\r\n\r\n.smpd-calculate:hover {\r\n  background: #4c1d95;\r\n}\r\n\r\n\r\n.smpd-error {\r\n  display: none;\r\n  margin-top: 14px;\r\n  padding: 12px;\r\n  border: 1px solid #fecaca;\r\n  border-radius: 8px;\r\n  background: #fef2f2;\r\n  color: #991b1b;\r\n  font-size: 13px;\r\n}\r\n\r\n\r\n.smpd-results {\r\n  display: none;\r\n  margin-top: 30px;\r\n}\r\n\r\n\r\n.smpd-result-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 12px;\r\n}\r\n\r\n\r\n.smpd-card {\r\n  padding: 17px 10px;\r\n  border: 1px solid #e5e7eb;\r\n  border-radius: 11px;\r\n  background: #fafafa;\r\n  text-align: center;\r\n}\r\n\r\n\r\n.smpd-card small {\r\n  display: block;\r\n  margin-bottom: 7px;\r\n  color: #6b7280;\r\n  font-size: 11px;\r\n  font-weight: 600;\r\n}\r\n\r\n\r\n.smpd-card strong {\r\n  display: block;\r\n  color: #4c1d95;\r\n  font-size: 17px;\r\n}\r\n\r\n\r\n.smpd-primary {\r\n  background: #f5f3ff;\r\n  border-color: #ddd6fe;\r\n}\r\n\r\n\r\n.smpd-panel {\r\n  margin-top: 22px;\r\n  padding: 20px;\r\n  border: 1px solid #e5e7eb;\r\n  border-radius: 12px;\r\n}\r\n\r\n\r\n.smpd-panel h3,\r\n.smpd-interpretation h3 {\r\n  margin: 0 0 15px;\r\n  color: #111827;\r\n  font-size: 17px;\r\n}\r\n\r\n\r\n.smpd-meter {\r\n  width: 100%;\r\n  height: 30px;\r\n  overflow: hidden;\r\n  border-radius: 20px;\r\n  background: #f3f4f6;\r\n}\r\n\r\n\r\n.smpd-meter-fill {\r\n  width: 0%;\r\n  height: 100%;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  border-radius: 20px;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 11px;\r\n  font-weight: 700;\r\n  transition: width .5s ease;\r\n}\r\n\r\n\r\n.smpd-meter-text {\r\n  margin: 12px 0 0;\r\n  color: #4b5563;\r\n  font-size: 13px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n.smpd-table-scroll {\r\n  max-height: 420px;\r\n  overflow: auto;\r\n}\r\n\r\n\r\n.smpd-table {\r\n  width: 100%;\r\n  border-collapse: collapse;\r\n}\r\n\r\n\r\n.smpd-table th {\r\n  position: sticky;\r\n  top: 0;\r\n  z-index: 2;\r\n  padding: 11px;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 11px;\r\n  text-align: left;\r\n}\r\n\r\n\r\n.smpd-table td {\r\n  padding: 10px 11px;\r\n  border-bottom: 1px solid #e5e7eb;\r\n  font-size: 12px;\r\n}\r\n\r\n\r\n.smpd-table tr:nth-child(even) {\r\n  background: #fafafa;\r\n}\r\n\r\n\r\n.smpd-chart-wrap {\r\n  position: relative;\r\n  width: 100%;\r\n  height: 380px;\r\n}\r\n\r\n\r\n.smpd-chart {\r\n  display: block;\r\n  width: 100%;\r\n  height: 100%;\r\n}\r\n\r\n\r\n.smpd-scenario-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 10px;\r\n}\r\n\r\n\r\n.smpd-scenario-grid div {\r\n  padding: 14px;\r\n  border-radius: 9px;\r\n  background: #f9fafb;\r\n}\r\n\r\n\r\n.smpd-scenario-grid span {\r\n  display: block;\r\n  margin-bottom: 6px;\r\n  color: #6b7280;\r\n  font-size: 11px;\r\n}\r\n\r\n\r\n.smpd-scenario-grid strong {\r\n  color: #111827;\r\n  font-size: 15px;\r\n}\r\n\r\n\r\n.smpd-interpretation {\r\n  margin-top: 22px;\r\n  padding: 18px;\r\n  border: 1px solid #ddd6fe;\r\n  border-radius: 11px;\r\n  background: #f5f3ff;\r\n}\r\n\r\n\r\n.smpd-interpretation p {\r\n  margin: 0;\r\n  color: #4b5563;\r\n  font-size: 13px;\r\n  line-height: 1.7;\r\n}\r\n\r\n\r\n.smpd-disclaimer {\r\n  margin-top: 22px;\r\n  padding: 15px;\r\n  border: 1px solid #fde68a;\r\n  border-radius: 9px;\r\n  background: #fffbeb;\r\n  color: #78350f;\r\n  font-size: 11px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n.smpd-footer {\r\n  padding: 14px;\r\n  border-top: 1px solid #e5e7eb;\r\n  background: #f9fafb;\r\n  color: #6b7280;\r\n  text-align: center;\r\n  font-size: 11px;\r\n}\r\n\r\n\r\n@media(max-width:850px) {\r\n\r\n  .smpd-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smpd-result-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smpd-scenario-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n}\r\n\r\n\r\n@media(max-width:600px) {\r\n\r\n  .smpd-tool {\r\n    margin: 15px 5px;\r\n    border-radius: 13px;\r\n  }\r\n\r\n  .smpd-header {\r\n    padding: 23px 16px;\r\n  }\r\n\r\n  .smpd-header h2 {\r\n    font-size: 23px;\r\n  }\r\n\r\n  .smpd-body {\r\n    padding: 17px;\r\n  }\r\n\r\n  .smpd-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smpd-result-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smpd-scenario-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smpd-chart-wrap {\r\n    height: 300px;\r\n  }\r\n\r\n}\r\n\r\n\r\n@media(max-width:400px) {\r\n\r\n  .smpd-result-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smpd-header h2 {\r\n    font-size: 21px;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n\r\n(function() {\r\n\r\n  function initSMPD() {\r\n\r\n    var tools =\r\n      document.querySelectorAll('.smpd-tool');\r\n\r\n\r\n    tools.forEach(function(tool) {\r\n\r\n      if (tool.dataset.smpdLoaded === '1') {\r\n        return;\r\n      }\r\n\r\n      tool.dataset.smpdLoaded = '1';\r\n\r\n\r\n      var calculate =\r\n        tool.querySelector('.smpd-calculate');\r\n\r\n      var error =\r\n        tool.querySelector('.smpd-error');\r\n\r\n      var results =\r\n        tool.querySelector('.smpd-results');\r\n\r\n\r\n      function money(value) {\r\n\r\n        if (!isFinite(value)) {\r\n          return '\u20b90';\r\n        }\r\n\r\n        return '\u20b9' +\r\n          Number(value).toLocaleString('en-IN', {\r\n            maximumFractionDigits: 2\r\n          });\r\n\r\n      }\r\n\r\n\r\n      function number(value) {\r\n\r\n        if (!isFinite(value)) {\r\n          return '0';\r\n        }\r\n\r\n        return Number(value).toLocaleString('en-IN', {\r\n          maximumFractionDigits: 2\r\n        });\r\n\r\n      }\r\n\r\n\r\n      \/*\r\n       * Black-Scholes normal CDF\r\n       *\/\r\n\r\n      function normalCDF(x) {\r\n\r\n        var sign =\r\n          x < 0 ? -1 : 1;\r\n\r\n        x =\r\n          Math.abs(x) \/ Math.sqrt(2);\r\n\r\n\r\n        var t =\r\n          1 \/\r\n          (\r\n            1 +\r\n            0.3275911 * x\r\n          );\r\n\r\n\r\n        var a1 = 0.254829592;\r\n        var a2 = -0.284496736;\r\n        var a3 = 1.421413741;\r\n        var a4 = -1.453152027;\r\n        var a5 = 1.061405429;\r\n\r\n\r\n        var erf =\r\n          1 -\r\n          (\r\n            (\r\n              (\r\n                (\r\n                  (\r\n                    a5 * t +\r\n                    a4\r\n                  ) * t +\r\n                  a3\r\n                ) * t +\r\n                a2\r\n              ) * t +\r\n              a1\r\n            ) * t\r\n          ) *\r\n          Math.exp(-x * x);\r\n\r\n\r\n        return 0.5 *\r\n          (\r\n            1 +\r\n            sign * erf\r\n          );\r\n\r\n      }\r\n\r\n\r\n      \/*\r\n       * Simplified theoretical option value\r\n       *\r\n       * Uses:\r\n       * S = underlying\r\n       * K = strike\r\n       * T = years\r\n       * sigma = volatility\r\n       *\r\n       * Risk-free rate is assumed 0\r\n       * to keep the calculator simple.\r\n       *\/\r\n\r\n      function theoreticalOptionValue(\r\n        S,\r\n        K,\r\n        T,\r\n        sigma,\r\n        type\r\n      ) {\r\n\r\n        if (T <= 0) {\r\n\r\n          if (type === 'call') {\r\n\r\n            return Math.max(\r\n              0,\r\n              S - K\r\n            );\r\n\r\n          }\r\n\r\n          return Math.max(\r\n            0,\r\n            K - S\r\n          );\r\n\r\n        }\r\n\r\n\r\n        if (sigma <= 0) {\r\n\r\n          if (type === 'call') {\r\n\r\n            return Math.max(\r\n              0,\r\n              S - K\r\n            );\r\n\r\n          }\r\n\r\n          return Math.max(\r\n            0,\r\n            K - S\r\n          );\r\n\r\n        }\r\n\r\n\r\n        var sqrtT =\r\n          Math.sqrt(T);\r\n\r\n\r\n        var d1 =\r\n          (\r\n            Math.log(S \/ K) +\r\n            (\r\n              0.5 *\r\n              sigma *\r\n              sigma *\r\n              T\r\n            )\r\n          ) \/\r\n          (\r\n            sigma *\r\n            sqrtT\r\n          );\r\n\r\n\r\n        var d2 =\r\n          d1 -\r\n          sigma *\r\n          sqrtT;\r\n\r\n\r\n        if (type === 'call') {\r\n\r\n          return (\r\n            S *\r\n            normalCDF(d1)\r\n          ) -\r\n          (\r\n            K *\r\n            normalCDF(d2)\r\n          );\r\n\r\n        }\r\n\r\n\r\n        return (\r\n          K *\r\n          normalCDF(-d2)\r\n        ) -\r\n        (\r\n          S *\r\n          normalCDF(-d1)\r\n        );\r\n\r\n      }\r\n\r\n\r\n      \/*\r\n       * Scale theoretical model\r\n       * to current market premium.\r\n       *\r\n       * This makes the simulation\r\n       * start exactly at the user's\r\n       * entered premium.\r\n       *\/\r\n\r\n      function calculatePremium(\r\n        spot,\r\n        strike,\r\n        days,\r\n        volatility,\r\n        type,\r\n        currentPremium\r\n      ) {\r\n\r\n        var T =\r\n          days \/ 365;\r\n\r\n\r\n        var theoretical =\r\n          theoreticalOptionValue(\r\n            spot,\r\n            strike,\r\n            T,\r\n            volatility,\r\n            type\r\n          );\r\n\r\n\r\n        var intrinsic;\r\n\r\n\r\n        if (type === 'call') {\r\n\r\n          intrinsic =\r\n            Math.max(\r\n              0,\r\n              spot - strike\r\n            );\r\n\r\n        } else {\r\n\r\n          intrinsic =\r\n            Math.max(\r\n              0,\r\n              strike - spot\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Current time value\r\n         * according to actual premium.\r\n         *\/\r\n\r\n        var actualTimeValue =\r\n          Math.max(\r\n            0,\r\n            currentPremium -\r\n            intrinsic\r\n          );\r\n\r\n\r\n        \/*\r\n         * Model time value.\r\n         *\/\r\n\r\n        var modelTimeValue =\r\n          Math.max(\r\n            0,\r\n            theoretical -\r\n            intrinsic\r\n          );\r\n\r\n\r\n        \/*\r\n         * Scale factor.\r\n         *\/\r\n\r\n        var scale =\r\n          modelTimeValue > 0\r\n          ? actualTimeValue \/\r\n            modelTimeValue\r\n          : 0;\r\n\r\n\r\n        \/*\r\n         * If model time value is\r\n         * zero, use a simple decay\r\n         * model instead.\r\n         *\/\r\n\r\n        return {\r\n          theoretical: theoretical,\r\n          intrinsic: intrinsic,\r\n          actualTimeValue: actualTimeValue,\r\n          modelTimeValue: modelTimeValue,\r\n          scale: scale\r\n        };\r\n\r\n      }\r\n\r\n\r\n      calculate.addEventListener(\r\n        'click',\r\n        function() {\r\n\r\n\r\n          error.style.display =\r\n            'none';\r\n\r\n\r\n          var spot =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-spot'\r\n              ).value\r\n            );\r\n\r\n\r\n          var strike =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-strike'\r\n              ).value\r\n            );\r\n\r\n\r\n          var currentPremium =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-premium'\r\n              ).value\r\n            );\r\n\r\n\r\n          var days =\r\n            parseInt(\r\n              tool.querySelector(\r\n                '.smpd-days'\r\n              ).value,\r\n              10\r\n            );\r\n\r\n\r\n          var lot =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-lot'\r\n              ).value\r\n            );\r\n\r\n\r\n          var expiryPrice =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-expiry-price'\r\n              ).value\r\n            );\r\n\r\n\r\n          var volatility =\r\n            parseFloat(\r\n              tool.querySelector(\r\n                '.smpd-volatility'\r\n              ).value\r\n            ) \/ 100;\r\n\r\n\r\n          var type =\r\n            tool.querySelector(\r\n              '.smpd-type'\r\n            ).value;\r\n\r\n\r\n          if (\r\n\r\n            !isFinite(spot) ||\r\n            !isFinite(strike) ||\r\n            !isFinite(currentPremium) ||\r\n            !isFinite(days) ||\r\n            !isFinite(lot) ||\r\n            !isFinite(expiryPrice) ||\r\n            !isFinite(volatility) ||\r\n\r\n            spot <= 0 ||\r\n            strike <= 0 ||\r\n            currentPremium < 0 ||\r\n            days < 1 ||\r\n            lot <= 0 ||\r\n            expiryPrice < 0 ||\r\n            volatility <= 0\r\n\r\n          ) {\r\n\r\n            error.textContent =\r\n              'Please enter valid values in all fields.';\r\n\r\n            error.style.display =\r\n              'block';\r\n\r\n            results.style.display =\r\n              'none';\r\n\r\n            return;\r\n\r\n          }\r\n\r\n\r\n          \/*\r\n           * Current intrinsic\r\n           *\/\r\n\r\n          var currentIntrinsic;\r\n\r\n\r\n          if (type === 'call') {\r\n\r\n            currentIntrinsic =\r\n              Math.max(\r\n                0,\r\n                spot - strike\r\n              );\r\n\r\n          } else {\r\n\r\n            currentIntrinsic =\r\n              Math.max(\r\n                0,\r\n                strike - spot\r\n              );\r\n\r\n          }\r\n\r\n\r\n          var currentTimeValue =\r\n            Math.max(\r\n              0,\r\n              currentPremium -\r\n              currentIntrinsic\r\n            );\r\n\r\n\r\n          \/*\r\n           * Expiry intrinsic\r\n           *\/\r\n\r\n          var expiryIntrinsic;\r\n\r\n\r\n          if (type === 'call') {\r\n\r\n            expiryIntrinsic =\r\n              Math.max(\r\n                0,\r\n                expiryPrice - strike\r\n              );\r\n\r\n          } else {\r\n\r\n            expiryIntrinsic =\r\n              Math.max(\r\n                0,\r\n                strike - expiryPrice\r\n              );\r\n\r\n          }\r\n\r\n\r\n          \/*\r\n           * Current analysis\r\n           *\/\r\n\r\n          var currentModel =\r\n            calculatePremium(\r\n              spot,\r\n              strike,\r\n              days,\r\n              volatility,\r\n              type,\r\n              currentPremium\r\n            );\r\n\r\n\r\n          \/*\r\n           * Timeline\r\n           *\/\r\n\r\n          var timeline = [];\r\n\r\n\r\n          \/*\r\n           * Use every day for short\r\n           * expiry and sensible intervals\r\n           * for longer expiry.\r\n           *\/\r\n\r\n          var interval;\r\n\r\n\r\n          if (days <= 15) {\r\n\r\n            interval = 1;\r\n\r\n          } else if (days <= 45) {\r\n\r\n            interval = 3;\r\n\r\n          } else if (days <= 90) {\r\n\r\n            interval = 5;\r\n\r\n          } else {\r\n\r\n            interval = 7;\r\n\r\n          }\r\n\r\n\r\n          for (\r\n            var d = days;\r\n            d >= 0;\r\n            d -= interval\r\n          ) {\r\n\r\n            timeline.push(d);\r\n\r\n          }\r\n\r\n\r\n          if (\r\n            timeline[\r\n              timeline.length - 1\r\n            ] !== 0\r\n          ) {\r\n\r\n            timeline.push(0);\r\n\r\n          }\r\n\r\n\r\n          \/*\r\n           * Calculate premiums\r\n           *\/\r\n\r\n          var rows = [];\r\n\r\n\r\n          timeline.forEach(function(d) {\r\n\r\n\r\n            var premiumAtDay;\r\n\r\n\r\n            if (d === 0) {\r\n\r\n              premiumAtDay =\r\n                expiryIntrinsic;\r\n\r\n            } else {\r\n\r\n\r\n              var model =\r\n                theoreticalOptionValue(\r\n                  spot,\r\n                  strike,\r\n                  d \/ 365,\r\n                  volatility,\r\n                  type\r\n                );\r\n\r\n\r\n              var intrinsic;\r\n\r\n\r\n              if (type === 'call') {\r\n\r\n                intrinsic =\r\n                  Math.max(\r\n                    0,\r\n                    spot - strike\r\n                  );\r\n\r\n              } else {\r\n\r\n                intrinsic =\r\n                  Math.max(\r\n                    0,\r\n                    strike - spot\r\n                  );\r\n\r\n              }\r\n\r\n\r\n              var modelTV =\r\n                Math.max(\r\n                  0,\r\n                  model - intrinsic\r\n                );\r\n\r\n\r\n              \/*\r\n               * Scale model time value\r\n               * so current premium equals\r\n               * user input.\r\n               *\/\r\n\r\n              var scaledTV;\r\n\r\n\r\n              if (\r\n                currentModel.modelTimeValue > 0\r\n              ) {\r\n\r\n                scaledTV =\r\n                  modelTV *\r\n                  currentModel.scale;\r\n\r\n              } else {\r\n\r\n                \/*\r\n                 * Fallback decay:\r\n                 * square-root time relationship.\r\n                 *\/\r\n\r\n                scaledTV =\r\n                  currentTimeValue *\r\n                  Math.sqrt(\r\n                    d \/ days\r\n                  );\r\n\r\n              }\r\n\r\n\r\n              premiumAtDay =\r\n                intrinsic +\r\n                scaledTV;\r\n\r\n            }\r\n\r\n\r\n            var timeValue =\r\n              Math.max(\r\n                0,\r\n                premiumAtDay -\r\n                (\r\n                  type === 'call'\r\n                  ? Math.max(\r\n                      0,\r\n                      spot - strike\r\n                    )\r\n                  : Math.max(\r\n                      0,\r\n                      strike - spot\r\n                    )\r\n                )\r\n              );\r\n\r\n\r\n            var decay =\r\n              currentPremium -\r\n              premiumAtDay;\r\n\r\n\r\n            rows.push({\r\n\r\n              days: d,\r\n              premium: premiumAtDay,\r\n              timeValue: timeValue,\r\n              decay: decay\r\n\r\n            });\r\n\r\n          });\r\n\r\n\r\n          \/*\r\n           * Current row\r\n           *\/\r\n\r\n          var currentRow =\r\n            rows.find(function(row) {\r\n\r\n              return row.days === days;\r\n\r\n            });\r\n\r\n\r\n          \/*\r\n           * Estimated expiry decay\r\n           *\/\r\n\r\n          var estimatedDecay =\r\n            currentPremium -\r\n            expiryIntrinsic;\r\n\r\n\r\n          var decayPercent =\r\n            currentPremium > 0\r\n            ? (\r\n                estimatedDecay \/\r\n                currentPremium\r\n              ) * 100\r\n            : 0;\r\n\r\n\r\n          \/*\r\n           * P&L for option buyer\r\n           *\/\r\n\r\n          var expiryPnlPerUnit =\r\n            expiryIntrinsic -\r\n            currentPremium;\r\n\r\n\r\n          var expiryPnlLot =\r\n            expiryPnlPerUnit *\r\n            lot;\r\n\r\n\r\n          \/*\r\n           * Display current analysis\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smpd-current-premium'\r\n          ).textContent =\r\n            money(currentPremium);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-intrinsic'\r\n          ).textContent =\r\n            money(currentIntrinsic);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-time-value'\r\n          ).textContent =\r\n            money(currentTimeValue);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-time-percent'\r\n          ).textContent =\r\n            number(\r\n              currentPremium > 0\r\n              ? (\r\n                  currentTimeValue \/\r\n                  currentPremium\r\n                ) * 100\r\n              : 0\r\n            ) + '%';\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-expiry-value'\r\n          ).textContent =\r\n            money(expiryIntrinsic);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-decay'\r\n          ).textContent =\r\n            money(\r\n              Math.max(\r\n                0,\r\n                estimatedDecay\r\n              )\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-decay-percent'\r\n          ).textContent =\r\n            number(\r\n              Math.max(\r\n                0,\r\n                decayPercent\r\n              )\r\n            ) + '%';\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-lot-pnl'\r\n          ).textContent =\r\n            money(expiryPnlLot);\r\n\r\n\r\n          \/*\r\n           * Meter\r\n           *\/\r\n\r\n          var remainingTimePercent =\r\n            currentPremium > 0\r\n            ? (\r\n                Math.max(\r\n                  0,\r\n                  currentTimeValue\r\n                ) \/\r\n                currentPremium\r\n              ) * 100\r\n            : 0;\r\n\r\n\r\n          remainingTimePercent =\r\n            Math.min(\r\n              100,\r\n              Math.max(\r\n                0,\r\n                remainingTimePercent\r\n              )\r\n            );\r\n\r\n\r\n          var meter =\r\n            tool.querySelector(\r\n              '.smpd-meter-fill'\r\n            );\r\n\r\n\r\n          meter.style.width =\r\n            remainingTimePercent + '%';\r\n\r\n\r\n          meter.querySelector(\r\n            'span'\r\n          ).textContent =\r\n            number(\r\n              remainingTimePercent\r\n            ) + '%';\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-meter-text'\r\n          ).textContent =\r\n            'Approximately ' +\r\n            number(\r\n              remainingTimePercent\r\n            ) +\r\n            '% of the current premium is represented by value remaining above intrinsic value. Time value can change materially if the underlying price or implied volatility changes.';\r\n\r\n\r\n          \/*\r\n           * Table\r\n           *\/\r\n\r\n          var tableBody =\r\n            tool.querySelector(\r\n              '.smpd-table-body'\r\n            );\r\n\r\n\r\n          tableBody.innerHTML =\r\n            '';\r\n\r\n\r\n          rows.forEach(function(row) {\r\n\r\n            var tr =\r\n              document.createElement('tr');\r\n\r\n\r\n            var change =\r\n              row.premium -\r\n              currentPremium;\r\n\r\n\r\n            tr.innerHTML =\r\n\r\n              '<td>' +\r\n                row.days +\r\n              '<\/td>' +\r\n\r\n              '<td>' +\r\n                money(row.premium) +\r\n              '<\/td>' +\r\n\r\n              '<td>' +\r\n                money(row.timeValue) +\r\n              '<\/td>' +\r\n\r\n              '<td>' +\r\n                money(\r\n                  Math.max(\r\n                    0,\r\n                    row.decay\r\n                  )\r\n                ) +\r\n              '<\/td>' +\r\n\r\n              '<td>' +\r\n                (\r\n                  change >= 0\r\n                  ? '+'\r\n                  : ''\r\n                ) +\r\n                money(change) +\r\n              '<\/td>';\r\n\r\n\r\n            tableBody.appendChild(tr);\r\n\r\n          });\r\n\r\n\r\n          \/*\r\n           * Chart\r\n           *\/\r\n\r\n          drawChart(\r\n            rows,\r\n            currentPremium\r\n          );\r\n\r\n\r\n          \/*\r\n           * Scenario\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smpd-scenario-price'\r\n          ).textContent =\r\n            money(expiryPrice);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-scenario-intrinsic'\r\n          ).textContent =\r\n            money(expiryIntrinsic);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-scenario-pnl'\r\n          ).textContent =\r\n            money(expiryPnlPerUnit);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-scenario-lot-pnl'\r\n          ).textContent =\r\n            money(expiryPnlLot);\r\n\r\n\r\n          \/*\r\n           * Interpretation\r\n           *\/\r\n\r\n          var interpretation = '';\r\n\r\n\r\n          if (\r\n            currentTimeValue >\r\n            currentPremium * 0.5\r\n          ) {\r\n\r\n            interpretation +=\r\n              'A large portion of the current option premium is time value. ' +\r\n              'This means the premium may be particularly sensitive to the passage of time. ';\r\n\r\n          } else {\r\n\r\n            interpretation +=\r\n              'A relatively smaller portion of the current premium is time value, ' +\r\n              'with more of the premium represented by intrinsic value. ';\r\n\r\n          }\r\n\r\n\r\n          if (\r\n            expiryIntrinsic === 0\r\n          ) {\r\n\r\n            interpretation +=\r\n              'At the selected expiry price, the option would finish out of the money ' +\r\n              'and its theoretical expiry value would be \u20b90. ';\r\n\r\n          } else {\r\n\r\n            interpretation +=\r\n              'At the selected expiry price, the option would retain ' +\r\n              money(expiryIntrinsic) +\r\n              ' of intrinsic value. ';\r\n\r\n          }\r\n\r\n\r\n          if (\r\n            expiryPnlPerUnit < 0\r\n          ) {\r\n\r\n            interpretation +=\r\n              'For an option buyer paying the entered premium, the selected expiry scenario ' +\r\n              'would result in a theoretical loss of ' +\r\n              money(\r\n                Math.abs(\r\n                  expiryPnlPerUnit\r\n                )\r\n              ) +\r\n              ' per unit before costs.';\r\n\r\n          } else if (\r\n            expiryPnlPerUnit > 0\r\n          ) {\r\n\r\n            interpretation +=\r\n              'For an option buyer paying the entered premium, the selected expiry scenario ' +\r\n              'would result in a theoretical profit of ' +\r\n              money(\r\n                expiryPnlPerUnit\r\n              ) +\r\n              ' per unit before costs.';\r\n\r\n          } else {\r\n\r\n            interpretation +=\r\n              'For an option buyer paying the entered premium, the selected expiry scenario ' +\r\n              'would be approximately breakeven before costs.';\r\n\r\n          }\r\n\r\n\r\n          tool.querySelector(\r\n            '.smpd-interpretation-text'\r\n          ).textContent =\r\n            interpretation;\r\n\r\n\r\n          results.style.display =\r\n            'block';\r\n\r\n\r\n          \/*\r\n           * Mobile scroll\r\n           *\/\r\n\r\n          if (\r\n            window.innerWidth < 600\r\n          ) {\r\n\r\n            setTimeout(function() {\r\n\r\n              results.scrollIntoView({\r\n                behavior: 'smooth',\r\n                block: 'start'\r\n              });\r\n\r\n            }, 100);\r\n\r\n          }\r\n\r\n        });\r\n\r\n\r\n      \/*\r\n       * Draw chart\r\n       *\/\r\n\r\n      function drawChart(\r\n        rows,\r\n        currentPremium\r\n      ) {\r\n\r\n\r\n        var canvas =\r\n          tool.querySelector(\r\n            '.smpd-chart'\r\n          );\r\n\r\n\r\n        var wrapper =\r\n          canvas.parentElement;\r\n\r\n\r\n        var width =\r\n          wrapper.clientWidth;\r\n\r\n\r\n        var height =\r\n          wrapper.clientHeight;\r\n\r\n\r\n        var ratio =\r\n          window.devicePixelRatio || 1;\r\n\r\n\r\n        canvas.width =\r\n          width * ratio;\r\n\r\n\r\n        canvas.height =\r\n          height * ratio;\r\n\r\n\r\n        canvas.style.width =\r\n          width + 'px';\r\n\r\n\r\n        canvas.style.height =\r\n          height + 'px';\r\n\r\n\r\n        var ctx =\r\n          canvas.getContext('2d');\r\n\r\n\r\n        ctx.scale(\r\n          ratio,\r\n          ratio\r\n        );\r\n\r\n\r\n        var padding = {\r\n          left: 55,\r\n          right: 20,\r\n          top: 20,\r\n          bottom: 45\r\n        };\r\n\r\n\r\n        var chartWidth =\r\n          width -\r\n          padding.left -\r\n          padding.right;\r\n\r\n\r\n        var chartHeight =\r\n          height -\r\n          padding.top -\r\n          padding.bottom;\r\n\r\n\r\n        var maxPremium =\r\n          Math.max.apply(\r\n            null,\r\n            rows.map(function(row) {\r\n              return row.premium;\r\n            })\r\n          );\r\n\r\n\r\n        maxPremium =\r\n          Math.max(\r\n            maxPremium,\r\n            currentPremium\r\n          );\r\n\r\n\r\n        if (\r\n          maxPremium <= 0\r\n        ) {\r\n\r\n          maxPremium = 100;\r\n\r\n        }\r\n\r\n\r\n        maxPremium *= 1.15;\r\n\r\n\r\n        function x(index) {\r\n\r\n          return padding.left +\r\n            (\r\n              index \/\r\n              Math.max(\r\n                1,\r\n                rows.length - 1\r\n              )\r\n            ) *\r\n            chartWidth;\r\n\r\n        }\r\n\r\n\r\n        function y(value) {\r\n\r\n          return padding.top +\r\n            (\r\n              (maxPremium - value) \/\r\n              maxPremium\r\n            ) *\r\n            chartHeight;\r\n\r\n        }\r\n\r\n\r\n        ctx.clearRect(\r\n          0,\r\n          0,\r\n          width,\r\n          height\r\n        );\r\n\r\n\r\n        \/*\r\n         * Grid\r\n         *\/\r\n\r\n        ctx.strokeStyle =\r\n          '#e5e7eb';\r\n\r\n        ctx.lineWidth =\r\n          1;\r\n\r\n\r\n        for (\r\n          var g = 0;\r\n          g <= 5;\r\n          g++\r\n        ) {\r\n\r\n          var gy =\r\n            padding.top +\r\n            (\r\n              chartHeight \/ 5\r\n            ) *\r\n            g;\r\n\r\n\r\n          ctx.beginPath();\r\n\r\n          ctx.moveTo(\r\n            padding.left,\r\n            gy\r\n          );\r\n\r\n          ctx.lineTo(\r\n            width -\r\n            padding.right,\r\n            gy\r\n          );\r\n\r\n          ctx.stroke();\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Premium line\r\n         *\/\r\n\r\n        ctx.strokeStyle =\r\n          '#5b21b6';\r\n\r\n        ctx.lineWidth =\r\n          3;\r\n\r\n\r\n        ctx.beginPath();\r\n\r\n\r\n        rows.forEach(function(row, index) {\r\n\r\n          var px =\r\n            x(index);\r\n\r\n\r\n          var py =\r\n            y(row.premium);\r\n\r\n\r\n          if (index === 0) {\r\n\r\n            ctx.moveTo(\r\n              px,\r\n              py\r\n            );\r\n\r\n          } else {\r\n\r\n            ctx.lineTo(\r\n              px,\r\n              py\r\n            );\r\n\r\n          }\r\n\r\n        });\r\n\r\n\r\n        ctx.stroke();\r\n\r\n\r\n        \/*\r\n         * Current premium reference\r\n         *\/\r\n\r\n        var currentY =\r\n          y(currentPremium);\r\n\r\n\r\n        ctx.strokeStyle =\r\n          '#9ca3af';\r\n\r\n        ctx.setLineDash([\r\n          5,\r\n          5\r\n        ]);\r\n\r\n\r\n        ctx.beginPath();\r\n\r\n        ctx.moveTo(\r\n          padding.left,\r\n          currentY\r\n        );\r\n\r\n        ctx.lineTo(\r\n          width -\r\n          padding.right,\r\n          currentY\r\n        );\r\n\r\n        ctx.stroke();\r\n\r\n\r\n        ctx.setLineDash([]);\r\n\r\n\r\n        \/*\r\n         * X labels\r\n         *\/\r\n\r\n        ctx.fillStyle =\r\n          '#6b7280';\r\n\r\n        ctx.font =\r\n          '11px Arial';\r\n\r\n        ctx.textAlign =\r\n          'center';\r\n\r\n\r\n        for (\r\n          var i = 0;\r\n          i <= 4;\r\n          i++\r\n        ) {\r\n\r\n          var index =\r\n            Math.round(\r\n              (\r\n                rows.length - 1\r\n              ) *\r\n              (\r\n                i \/ 4\r\n              )\r\n            );\r\n\r\n\r\n          var row =\r\n            rows[index];\r\n\r\n\r\n          ctx.fillText(\r\n            row.days +\r\n            ' days',\r\n            x(index),\r\n            height - 15\r\n          );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Y labels\r\n         *\/\r\n\r\n        ctx.textAlign =\r\n          'right';\r\n\r\n\r\n        for (\r\n          var j = 0;\r\n          j <= 4;\r\n          j++\r\n        ) {\r\n\r\n          var value =\r\n            maxPremium -\r\n            (\r\n              maxPremium \/ 4\r\n            ) *\r\n            j;\r\n\r\n\r\n          ctx.fillText(\r\n            money(value),\r\n            padding.left - 8,\r\n            y(value) + 4\r\n          );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Axis titles\r\n         *\/\r\n\r\n        ctx.fillStyle =\r\n          '#374151';\r\n\r\n        ctx.textAlign =\r\n          'center';\r\n\r\n        ctx.font =\r\n          '12px Arial';\r\n\r\n\r\n        ctx.fillText(\r\n          'Days Remaining',\r\n          width \/ 2,\r\n          height - 1\r\n        );\r\n\r\n\r\n        ctx.save();\r\n\r\n        ctx.translate(\r\n          13,\r\n          height \/ 2\r\n        );\r\n\r\n        ctx.rotate(\r\n          -Math.PI \/ 2\r\n        );\r\n\r\n        ctx.fillText(\r\n          'Estimated Premium',\r\n          0,\r\n          0\r\n        );\r\n\r\n        ctx.restore();\r\n\r\n      }\r\n\r\n\r\n      \/*\r\n       * Redraw on resize\r\n       *\/\r\n\r\n      window.addEventListener(\r\n        'resize',\r\n        function() {\r\n\r\n          if (\r\n            results.style.display ===\r\n            'block'\r\n          ) {\r\n\r\n            calculate.click();\r\n\r\n          }\r\n\r\n        }\r\n      );\r\n\r\n    });\r\n\r\n  }\r\n\r\n\r\n  if (\r\n    document.readyState ===\r\n    'loading'\r\n  ) {\r\n\r\n    document.addEventListener(\r\n      'DOMContentLoaded',\r\n      initSMPD\r\n    );\r\n\r\n  } else {\r\n\r\n    initSMPD();\r\n\r\n  }\r\n\r\n})();\r\n\r\n<\/script>\n<p style=\"text-align: justify;\">The <strong><a href=\"https:\/\/www.stockmaster.in\/universe\/\">StockMaster Universe<\/a> Option Premium Decay Simulator<\/strong> is an educational tool designed to help F&amp;O traders understand how an option&#8217;s premium can change as the expiry date approaches. Time decay is one of the most important concepts in options trading, particularly for traders who buy or sell options with limited time remaining.<\/p>\n<p style=\"text-align: justify;\">An option premium generally consists of two major components: <strong>intrinsic value<\/strong> and <strong>time value<\/strong>. Intrinsic value represents the option&#8217;s immediate exercise value, while time value represents the additional premium traders may be willing to pay because there is still time for the underlying asset to make a favourable move.<\/p>\n<p style=\"text-align: justify;\">As expiry approaches, time value generally decreases, assuming other factors remain unchanged. This process is commonly known as <strong>theta decay<\/strong>.<\/p>\n<h3>How Does the Option Premium Decay Simulator Work?<\/h3>\n<p>The calculator allows you to enter important option parameters such as:<\/p>\n<ul>\n<li>Underlying price<\/li>\n<li>Strike price<\/li>\n<li>Current option premium<\/li>\n<li>Call or Put<\/li>\n<li>Days to expiry<\/li>\n<li>Lot size<\/li>\n<li>Expected expiry price<\/li>\n<li>Volatility assumption<\/li>\n<\/ul>\n<p>After entering the details, the simulator creates a theoretical premium-decay timeline.<\/p>\n<p>You can see how the estimated premium changes with fewer days remaining until expiry.<\/p>\n<p><strong>Intrinsic Value vs Time Value<\/strong><\/p>\n<p>Understanding the difference between intrinsic value and time value is essential for analysing option premiums.<\/p>\n<p>For example, suppose a Call option has a strike price of \u20b925,000 and the underlying is trading at \u20b925,200.<\/p>\n<p>The option has an intrinsic value of:<\/p>\n<p><strong>\u20b925,200 \u2212 \u20b925,000 = \u20b9200<\/strong><\/p>\n<p>If the option is trading at \u20b9300, the remaining \u20b9100 represents its time value.<\/p>\n<p>As expiry gets closer, this time value can decline significantly, particularly when the option remains out of the money.<\/p>\n<h3>Why Is Time Decay Important?<\/h3>\n<p>Time decay affects option buyers and sellers differently.<\/p>\n<p>An option buyer pays a premium and needs the underlying asset to move sufficiently in the expected direction before expiry. If the underlying does not move as expected, the option&#8217;s time value can decline.<\/p>\n<p>Option sellers, on the other hand, generally benefit from the passage of time when other factors remain favourable.<\/p>\n<p>However, time decay is not constant. It generally becomes more significant as expiry approaches, and its impact can vary depending on the option&#8217;s moneyness, volatility and other market conditions.<\/p>\n<h4>Explore Different Expiry Scenarios<\/h4>\n<p>The simulator allows traders to enter an expected expiry price and see the option&#8217;s theoretical expiry value.<\/p>\n<p>For example, an options trader can compare scenarios where the underlying finishes:<\/p>\n<ul>\n<li>Above the strike price<\/li>\n<li>Near the strike price<\/li>\n<li>At the strike price<\/li>\n<li>Below the strike price<\/li>\n<\/ul>\n<p>This can help traders understand how the option&#8217;s intrinsic value changes at expiry.<\/p>\n<h4>Premium Decay Timeline<\/h4>\n<p>The calculator provides a timeline showing estimated premium values at different days remaining.<\/p>\n<p>This makes it easier to visualise the concept of time decay rather than looking at a single theta number.<\/p>\n<p>The <strong>Premium Decay Curve<\/strong> provides another visual representation of how estimated option value changes as expiry approaches.<\/p>\n<h5>Who Can Use This Tool?<\/h5>\n<p>The Option Premium Decay Simulator can be useful for:<\/p>\n<ul>\n<li>Options beginners<\/li>\n<li>F&amp;O traders<\/li>\n<li>Options buyers<\/li>\n<li>Options sellers<\/li>\n<li>Intraday traders<\/li>\n<li>Swing traders<\/li>\n<li>Trading students<\/li>\n<li>Investors learning options strategies<\/li>\n<\/ul>\n<p>It can also be useful when comparing options with different expiry periods.<\/p>\n<p><strong>Important Limitation<\/strong><\/p>\n<p>The simulator provides a <strong>theoretical estimate<\/strong>, not a prediction of the actual market premium.<\/p>\n<p>Real option prices are affected by several factors, including <strong>underlying price movements, implied volatility, time to expiry, liquidity, interest rates, market demand and supply<\/strong>.<\/p>\n<p>The actual premium may therefore differ substantially from the simulated value.<\/p>\n<h4>Key Takeaway<\/h4>\n<p><strong>Time is an important part of an option&#8217;s value.<\/strong><\/p>\n<p>The StockMaster Universe Option Premium Decay Simulator helps traders visualise how time value may decline as expiry approaches and understand the potential impact of time decay on option positions.<\/p>\n<p>Use the simulator to explore different scenarios and build a better understanding of <strong>option premium, intrinsic value, time value and expiry risk<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The StockMaster Universe Option Premium Decay Simulator is an educational tool designed to help F&amp;O traders understand how an option&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[62],"tags":[],"class_list":["post-496","post","type-post","status-publish","format-standard","hentry","category-fo-trading-tools"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"StockMaster Universe","author_link":"https:\/\/www.stockmaster.in\/universe\/author\/unistockadmin\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/www.stockmaster.in\/universe\/category\/tools\/fo-trading-tools\/\" rel=\"category tag\">F&amp;O Trading Tools<\/a>","rttpg_excerpt":"The StockMaster Universe Option Premium Decay Simulator is an educational tool designed to help F&amp;O traders understand how an option&#8217;s [&hellip;]","_links":{"self":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/posts\/496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/comments?post=496"}],"version-history":[{"count":0,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}