{"id":572,"date":"2026-08-11T10:34:08","date_gmt":"2026-08-11T10:34:08","guid":{"rendered":"https:\/\/www.stockmaster.in\/universe\/?p=572"},"modified":"2026-08-11T10:34:57","modified_gmt":"2026-08-11T10:34:57","slug":"option-chain-analyzer","status":"publish","type":"post","link":"https:\/\/www.stockmaster.in\/universe\/option-chain-analyzer\/","title":{"rendered":"Option Chain Analyzer"},"content":{"rendered":"<div class=\"smoca-tool\">\r\n\r\n  <div class=\"smoca-header\">\r\n    <div class=\"smoca-badge\">STOCKMASTER UNIVERSE<\/div>\r\n\r\n    <h2>Option Chain Analyzer<\/h2>\r\n\r\n    <p>\r\n      Analyse Call and Put open interest, OI change, volume, implied volatility,\r\n      support, resistance, PCR and theoretical max pain from your option-chain data.\r\n    <\/p>\r\n  <\/div>\r\n\r\n\r\n  <div class=\"smoca-body\">\r\n\r\n    <!-- MARKET SETTINGS -->\r\n\r\n    <div class=\"smoca-section-title\">\r\n      <span>1<\/span>\r\n      Market Settings\r\n    <\/div>\r\n\r\n    <div class=\"smoca-grid\">\r\n\r\n      <div class=\"smoca-field\">\r\n        <label>Underlying Price (\u20b9)<\/label>\r\n        <input type=\"number\" class=\"smoca-spot\" value=\"25000\" min=\"0.01\" step=\"0.01\">\r\n      <\/div>\r\n\r\n      <div class=\"smoca-field\">\r\n        <label>Strike Interval<\/label>\r\n        <input type=\"number\" class=\"smoca-step\" value=\"100\" min=\"0.01\" step=\"0.01\">\r\n      <\/div>\r\n\r\n      <div class=\"smoca-field\">\r\n        <label>Strikes to Analyse<\/label>\r\n        <select class=\"smoca-range\">\r\n          <option value=\"5\">5 Above \/ 5 Below<\/option>\r\n          <option value=\"7\">7 Above \/ 7 Below<\/option>\r\n          <option value=\"10\" selected>10 Above \/ 10 Below<\/option>\r\n          <option value=\"15\">15 Above \/ 15 Below<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <div class=\"smoca-field\">\r\n        <label>Lot Size<\/label>\r\n        <input type=\"number\" class=\"smoca-lot\" value=\"75\" min=\"1\" step=\"1\">\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <!-- OPTION CHAIN DATA -->\r\n\r\n    <div class=\"smoca-section-title smoca-chain-title\">\r\n      <span>2<\/span>\r\n      Option Chain Data\r\n    <\/div>\r\n\r\n    <div class=\"smoca-info\">\r\n      Enter approximate or live option-chain values for each strike.\r\n      OI and OI Change should be entered as contract quantities.\r\n      Use the same unit throughout the table.\r\n    <\/div>\r\n\r\n\r\n    <div class=\"smoca-table-wrap\">\r\n\r\n      <table class=\"smoca-table\">\r\n\r\n        <thead>\r\n\r\n          <tr>\r\n\r\n            <th colspan=\"5\" class=\"smoca-call-head\">\r\n              CALLS\r\n            <\/th>\r\n\r\n            <th class=\"smoca-strike-head\">\r\n              STRIKE\r\n            <\/th>\r\n\r\n            <th colspan=\"5\" class=\"smoca-put-head\">\r\n              PUTS\r\n            <\/th>\r\n\r\n          <\/tr>\r\n\r\n          <tr>\r\n\r\n            <th>OI<\/th>\r\n            <th>OI Chg<\/th>\r\n            <th>Volume<\/th>\r\n            <th>IV %<\/th>\r\n            <th>LTP<\/th>\r\n\r\n            <th>Price<\/th>\r\n\r\n            <th>LTP<\/th>\r\n            <th>IV %<\/th>\r\n            <th>Volume<\/th>\r\n            <th>OI Chg<\/th>\r\n            <th>OI<\/th>\r\n\r\n          <\/tr>\r\n\r\n        <\/thead>\r\n\r\n        <tbody class=\"smoca-chain-body\"><\/tbody>\r\n\r\n      <\/table>\r\n\r\n    <\/div>\r\n\r\n\r\n    <button type=\"button\" class=\"smoca-analyse\">\r\n      Analyse Option Chain\r\n    <\/button>\r\n\r\n    <div class=\"smoca-error\"><\/div>\r\n\r\n\r\n    <!-- RESULTS -->\r\n\r\n    <div class=\"smoca-results\">\r\n\r\n\r\n      <div class=\"smoca-section-title smoca-result-title\">\r\n        <span>3<\/span>\r\n        Option Chain Analysis\r\n      <\/div>\r\n\r\n\r\n      <div class=\"smoca-result-grid\">\r\n\r\n        <div class=\"smoca-card smoca-primary\">\r\n          <small>Put-Call Ratio (OI)<\/small>\r\n          <strong class=\"smoca-pcr\">0.00<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Total Call OI<\/small>\r\n          <strong class=\"smoca-call-oi\">0<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Total Put OI<\/small>\r\n          <strong class=\"smoca-put-oi\">0<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Highest Call OI<\/small>\r\n          <strong class=\"smoca-call-resistance\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Highest Put OI<\/small>\r\n          <strong class=\"smoca-put-support\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card smoca-primary\">\r\n          <small>Theoretical Max Pain<\/small>\r\n          <strong class=\"smoca-max-pain\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Highest Call OI Change<\/small>\r\n          <strong class=\"smoca-call-build\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n        <div class=\"smoca-card\">\r\n          <small>Highest Put OI Change<\/small>\r\n          <strong class=\"smoca-put-build\">\u20b90<\/strong>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- MARKET BIAS -->\r\n\r\n      <div class=\"smoca-bias-panel\">\r\n\r\n        <h3>Option Chain Bias<\/h3>\r\n\r\n        <div class=\"smoca-bias\">\r\n          <strong class=\"smoca-bias-value\">\r\n            NEUTRAL\r\n          <\/strong>\r\n        <\/div>\r\n\r\n        <p class=\"smoca-bias-text\"><\/p>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- SUPPORT RESISTANCE -->\r\n\r\n      <div class=\"smoca-panel\">\r\n\r\n        <h3>Potential Support &amp; Resistance<\/h3>\r\n\r\n        <div class=\"smoca-level-grid\">\r\n\r\n          <div class=\"smoca-support-box\">\r\n            <span>Potential Put Support<\/span>\r\n            <strong class=\"smoca-support\">\u20b90<\/strong>\r\n            <small>Highest Put OI<\/small>\r\n          <\/div>\r\n\r\n          <div class=\"smoca-spot-box\">\r\n            <span>Underlying Price<\/span>\r\n            <strong class=\"smoca-current\">\u20b90<\/strong>\r\n            <small>Current reference price<\/small>\r\n          <\/div>\r\n\r\n          <div class=\"smoca-resistance-box\">\r\n            <span>Potential Call Resistance<\/span>\r\n            <strong class=\"smoca-resistance\">\u20b90<\/strong>\r\n            <small>Highest Call OI<\/small>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- MAX PAIN -->\r\n\r\n      <div class=\"smoca-panel\">\r\n\r\n        <h3>Max Pain Analysis<\/h3>\r\n\r\n        <div class=\"smoca-maxpain-box\">\r\n\r\n          <div>\r\n            <span>Current Price<\/span>\r\n            <strong class=\"smoca-max-current\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Max Pain<\/span>\r\n            <strong class=\"smoca-max-value\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Difference<\/span>\r\n            <strong class=\"smoca-max-difference\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n        <p class=\"smoca-max-text\"><\/p>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- OI CHANGE -->\r\n\r\n      <div class=\"smoca-panel\">\r\n\r\n        <h3>Open Interest Change<\/h3>\r\n\r\n        <div class=\"smoca-oi-grid\">\r\n\r\n          <div>\r\n            <span>Largest Call OI Increase<\/span>\r\n            <strong class=\"smoca-call-change-strike\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Call OI Change<\/span>\r\n            <strong class=\"smoca-call-change-value\">0<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Largest Put OI Increase<\/span>\r\n            <strong class=\"smoca-put-change-strike\">\u20b90<\/strong>\r\n          <\/div>\r\n\r\n          <div>\r\n            <span>Put OI Change<\/span>\r\n            <strong class=\"smoca-put-change-value\">0<\/strong>\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- TOP STRIKES -->\r\n\r\n      <div class=\"smoca-panel\">\r\n\r\n        <h3>Key Strike Levels<\/h3>\r\n\r\n        <div class=\"smoca-table-wrap\">\r\n\r\n          <table class=\"smoca-key-table\">\r\n\r\n            <thead>\r\n              <tr>\r\n                <th>Strike<\/th>\r\n                <th>Call OI<\/th>\r\n                <th>Call OI Chg<\/th>\r\n                <th>Put OI<\/th>\r\n                <th>Put OI Chg<\/th>\r\n              <\/tr>\r\n            <\/thead>\r\n\r\n            <tbody class=\"smoca-key-body\"><\/tbody>\r\n\r\n          <\/table>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- INTERPRETATION -->\r\n\r\n      <div class=\"smoca-interpretation\">\r\n\r\n        <h3>What This Means<\/h3>\r\n\r\n        <p class=\"smoca-interpretation-text\"><\/p>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- DISCLAIMER -->\r\n\r\n      <div class=\"smoca-disclaimer\">\r\n\r\n        <strong>Important:<\/strong>\r\n        This tool analyses the option-chain values entered by the user.\r\n        Support, resistance, PCR and max pain are analytical indicators,\r\n        not guaranteed price levels. Actual market behaviour can change\r\n        rapidly because of price movement, volatility, news, liquidity\r\n        and changes in open interest. Do not use this tool as a standalone\r\n        trading signal.\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <div class=\"smoca-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.smoca-tool {\r\n  max-width: 1200px;\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.smoca-tool *,\r\n.smoca-tool *:before,\r\n.smoca-tool *:after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.smoca-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.smoca-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.smoca-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.smoca-header p {\r\n  max-width: 800px;\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.smoca-body {\r\n  padding: 26px;\r\n}\r\n\r\n.smoca-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.smoca-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.smoca-chain-title {\r\n  margin-top: 28px;\r\n}\r\n\r\n.smoca-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 15px;\r\n}\r\n\r\n.smoca-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.smoca-field input,\r\n.smoca-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.smoca-field input:focus,\r\n.smoca-field select:focus,\r\n.smoca-table input: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.smoca-info {\r\n  margin: 0 0 15px;\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.smoca-table-wrap {\r\n  width: 100%;\r\n  overflow-x: auto;\r\n}\r\n\r\n.smoca-table {\r\n  width: 100%;\r\n  min-width: 950px;\r\n  border-collapse: collapse;\r\n}\r\n\r\n.smoca-table th {\r\n  padding: 9px 6px;\r\n  background: #f3f4f6;\r\n  color: #374151;\r\n  font-size: 10px;\r\n  white-space: nowrap;\r\n  text-align: center;\r\n}\r\n\r\n.smoca-table th.smoca-call-head {\r\n  background: #ede9fe;\r\n  color: #4c1d95;\r\n  font-size: 12px;\r\n}\r\n\r\n.smoca-table th.smoca-put-head {\r\n  background: #ede9fe;\r\n  color: #4c1d95;\r\n  font-size: 12px;\r\n}\r\n\r\n.smoca-table th.smoca-strike-head {\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 12px;\r\n}\r\n\r\n.smoca-table td {\r\n  padding: 6px;\r\n  border-bottom: 1px solid #e5e7eb;\r\n  text-align: center;\r\n  font-size: 11px;\r\n}\r\n\r\n.smoca-table tr.smoca-atm {\r\n  background: #f5f3ff;\r\n  box-shadow: inset 0 2px 0 #8b5cf6,\r\n              inset 0 -2px 0 #8b5cf6;\r\n}\r\n\r\n.smoca-table td.smoca-strike {\r\n  background: #f9fafb;\r\n  color: #4c1d95;\r\n  font-weight: 700;\r\n}\r\n\r\n.smoca-table tr.smoca-atm td.smoca-strike {\r\n  background: #5b21b6;\r\n  color: #fff;\r\n}\r\n\r\n.smoca-table input {\r\n  width: 70px;\r\n  padding: 7px 5px;\r\n  border: 1px solid #d1d5db;\r\n  border-radius: 6px;\r\n  font-size: 11px;\r\n  text-align: center;\r\n  outline: none;\r\n}\r\n\r\n.smoca-analyse {\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.smoca-analyse:hover {\r\n  background: #4c1d95;\r\n}\r\n\r\n.smoca-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.smoca-results {\r\n  display: none;\r\n  margin-top: 30px;\r\n}\r\n\r\n.smoca-result-title {\r\n  margin-bottom: 18px;\r\n}\r\n\r\n.smoca-result-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 12px;\r\n}\r\n\r\n.smoca-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.smoca-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.smoca-card strong {\r\n  display: block;\r\n  color: #4c1d95;\r\n  font-size: 17px;\r\n}\r\n\r\n.smoca-primary {\r\n  background: #f5f3ff;\r\n  border-color: #ddd6fe;\r\n}\r\n\r\n.smoca-bias-panel {\r\n  margin-top: 22px;\r\n  padding: 20px;\r\n  border: 1px solid #ddd6fe;\r\n  border-radius: 12px;\r\n  background: #f5f3ff;\r\n  text-align: center;\r\n}\r\n\r\n.smoca-bias-panel h3 {\r\n  margin: 0 0 12px;\r\n  color: #111827;\r\n  font-size: 17px;\r\n}\r\n\r\n.smoca-bias-value {\r\n  display: inline-block;\r\n  padding: 9px 20px;\r\n  border-radius: 30px;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 14px;\r\n}\r\n\r\n.smoca-bias-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.smoca-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.smoca-panel h3,\r\n.smoca-interpretation h3 {\r\n  margin: 0 0 15px;\r\n  color: #111827;\r\n  font-size: 17px;\r\n}\r\n\r\n.smoca-level-grid {\r\n  display: grid;\r\n  grid-template-columns: 1fr 1fr 1fr;\r\n  gap: 12px;\r\n  text-align: center;\r\n}\r\n\r\n.smoca-level-grid div {\r\n  padding: 18px 10px;\r\n  border-radius: 10px;\r\n}\r\n\r\n.smoca-support-box {\r\n  background: #f0fdf4;\r\n  border: 1px solid #bbf7d0;\r\n}\r\n\r\n.smoca-spot-box {\r\n  background: #f5f3ff;\r\n  border: 1px solid #ddd6fe;\r\n}\r\n\r\n.smoca-resistance-box {\r\n  background: #fff7ed;\r\n  border: 1px solid #fed7aa;\r\n}\r\n\r\n.smoca-level-grid span,\r\n.smoca-maxpain-box span,\r\n.smoca-oi-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.smoca-level-grid strong,\r\n.smoca-maxpain-box strong,\r\n.smoca-oi-grid strong {\r\n  display: block;\r\n  color: #111827;\r\n  font-size: 18px;\r\n}\r\n\r\n.smoca-level-grid small {\r\n  display: block;\r\n  margin-top: 5px;\r\n  color: #6b7280;\r\n  font-size: 10px;\r\n}\r\n\r\n.smoca-maxpain-box {\r\n  display: grid;\r\n  grid-template-columns: repeat(3,1fr);\r\n  gap: 10px;\r\n}\r\n\r\n.smoca-maxpain-box div,\r\n.smoca-oi-grid div {\r\n  padding: 15px;\r\n  border-radius: 9px;\r\n  background: #f9fafb;\r\n}\r\n\r\n.smoca-max-text {\r\n  margin: 13px 0 0;\r\n  color: #4b5563;\r\n  font-size: 13px;\r\n  line-height: 1.6;\r\n}\r\n\r\n.smoca-oi-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4,1fr);\r\n  gap: 10px;\r\n}\r\n\r\n.smoca-key-table {\r\n  width: 100%;\r\n  border-collapse: collapse;\r\n}\r\n\r\n.smoca-key-table th {\r\n  padding: 10px;\r\n  background: #5b21b6;\r\n  color: #fff;\r\n  font-size: 11px;\r\n  text-align: left;\r\n}\r\n\r\n.smoca-key-table td {\r\n  padding: 10px;\r\n  border-bottom: 1px solid #e5e7eb;\r\n  font-size: 12px;\r\n}\r\n\r\n.smoca-key-table tr:nth-child(even) {\r\n  background: #fafafa;\r\n}\r\n\r\n.smoca-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.smoca-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.smoca-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.smoca-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@media(max-width:900px) {\r\n\r\n  .smoca-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smoca-result-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smoca-oi-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n}\r\n\r\n@media(max-width:600px) {\r\n\r\n  .smoca-tool {\r\n    margin: 15px 5px;\r\n    border-radius: 13px;\r\n  }\r\n\r\n  .smoca-header {\r\n    padding: 23px 16px;\r\n  }\r\n\r\n  .smoca-header h2 {\r\n    font-size: 23px;\r\n  }\r\n\r\n  .smoca-body {\r\n    padding: 17px;\r\n  }\r\n\r\n  .smoca-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smoca-result-grid {\r\n    grid-template-columns: repeat(2,1fr);\r\n  }\r\n\r\n  .smoca-level-grid,\r\n  .smoca-maxpain-box {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smoca-oi-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n}\r\n\r\n@media(max-width:400px) {\r\n\r\n  .smoca-result-grid {\r\n    grid-template-columns: 1fr;\r\n  }\r\n\r\n  .smoca-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 initSMOCA() {\r\n\r\n    var tools =\r\n      document.querySelectorAll('.smoca-tool');\r\n\r\n\r\n    tools.forEach(function(tool) {\r\n\r\n      if (tool.dataset.smocaLoaded === '1') {\r\n        return;\r\n      }\r\n\r\n      tool.dataset.smocaLoaded = '1';\r\n\r\n\r\n      var spotInput =\r\n        tool.querySelector('.smoca-spot');\r\n\r\n      var stepInput =\r\n        tool.querySelector('.smoca-step');\r\n\r\n      var rangeInput =\r\n        tool.querySelector('.smoca-range');\r\n\r\n      var lotInput =\r\n        tool.querySelector('.smoca-lot');\r\n\r\n      var chainBody =\r\n        tool.querySelector('.smoca-chain-body');\r\n\r\n      var analyseButton =\r\n        tool.querySelector('.smoca-analyse');\r\n\r\n      var error =\r\n        tool.querySelector('.smoca-error');\r\n\r\n      var results =\r\n        tool.querySelector('.smoca-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(\r\n            'en-IN',\r\n            {\r\n              maximumFractionDigits: 2\r\n            }\r\n          );\r\n\r\n      }\r\n\r\n\r\n      function num(value) {\r\n\r\n        if (!isFinite(value)) {\r\n          return '0';\r\n        }\r\n\r\n        return Number(value).toLocaleString(\r\n          'en-IN',\r\n          {\r\n            maximumFractionDigits: 2\r\n          }\r\n        );\r\n\r\n      }\r\n\r\n\r\n      function createChain() {\r\n\r\n        var spot =\r\n          parseFloat(\r\n            spotInput.value\r\n          );\r\n\r\n        var step =\r\n          parseFloat(\r\n            stepInput.value\r\n          );\r\n\r\n        var range =\r\n          parseInt(\r\n            rangeInput.value,\r\n            10\r\n          );\r\n\r\n\r\n        if (\r\n          !isFinite(spot) ||\r\n          spot <= 0 ||\r\n          !isFinite(step) ||\r\n          step <= 0\r\n        ) {\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        var atmIndex =\r\n          Math.round(\r\n            spot \/ step\r\n          );\r\n\r\n\r\n        chainBody.innerHTML =\r\n          '';\r\n\r\n\r\n        for (\r\n          var i = -range;\r\n          i <= range;\r\n          i++\r\n        ) {\r\n\r\n          var strike =\r\n            (\r\n              atmIndex + i\r\n            ) * step;\r\n\r\n\r\n          if (\r\n            strike <= 0\r\n          ) {\r\n            continue;\r\n          }\r\n\r\n\r\n          var row =\r\n            document.createElement(\r\n              'tr'\r\n            );\r\n\r\n\r\n          var isATM =\r\n            Math.abs(\r\n              strike - spot\r\n            ) <\r\n            (\r\n              step * 0.5\r\n            );\r\n\r\n\r\n          if (isATM) {\r\n            row.className =\r\n              'smoca-atm';\r\n          }\r\n\r\n\r\n          row.innerHTML =\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-call-oi\" value=\"0\" min=\"0\" step=\"1\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-call-change\" value=\"0\" step=\"1\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-call-volume\" value=\"0\" min=\"0\" step=\"1\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-call-iv\" value=\"0\" min=\"0\" step=\"0.01\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-call-ltp\" value=\"0\" min=\"0\" step=\"0.01\">' +\r\n            '<\/td>' +\r\n\r\n            '<td class=\"smoca-strike\">' +\r\n              strike.toFixed(2) +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-put-ltp\" value=\"0\" min=\"0\" step=\"0.01\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-put-iv\" value=\"0\" min=\"0\" step=\"0.01\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-put-volume\" value=\"0\" min=\"0\" step=\"1\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-put-change\" value=\"0\" step=\"1\">' +\r\n            '<\/td>' +\r\n\r\n            '<td>' +\r\n              '<input type=\"number\" class=\"smoca-put-oi\" value=\"0\" min=\"0\" step=\"1\">' +\r\n            '<\/td>';\r\n\r\n\r\n          row.dataset.strike =\r\n            strike;\r\n\r\n\r\n          chainBody.appendChild(\r\n            row\r\n          );\r\n\r\n        }\r\n\r\n      }\r\n\r\n\r\n      createChain();\r\n\r\n\r\n      spotInput.addEventListener(\r\n        'change',\r\n        createChain\r\n      );\r\n\r\n\r\n      stepInput.addEventListener(\r\n        'change',\r\n        createChain\r\n      );\r\n\r\n\r\n      rangeInput.addEventListener(\r\n        'change',\r\n        createChain\r\n      );\r\n\r\n\r\n      analyseButton.addEventListener(\r\n        'click',\r\n        function() {\r\n\r\n          error.style.display =\r\n            'none';\r\n\r\n\r\n          var spot =\r\n            parseFloat(\r\n              spotInput.value\r\n            );\r\n\r\n\r\n          var rows =\r\n            chainBody.querySelectorAll(\r\n              'tr'\r\n            );\r\n\r\n\r\n          if (\r\n            !isFinite(spot) ||\r\n            spot <= 0 ||\r\n            rows.length === 0\r\n          ) {\r\n\r\n            error.textContent =\r\n              'Please enter a valid underlying price and option-chain data.';\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          var data = [];\r\n\r\n\r\n          rows.forEach(\r\n            function(row) {\r\n\r\n              var strike =\r\n                parseFloat(\r\n                  row.dataset.strike\r\n                );\r\n\r\n\r\n              var callOI =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-call-oi'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var callChange =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-call-change'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var callVolume =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-call-volume'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var callIV =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-call-iv'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var callLTP =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-call-ltp'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var putLTP =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-put-ltp'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var putIV =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-put-iv'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var putVolume =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-put-volume'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var putChange =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-put-change'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              var putOI =\r\n                parseFloat(\r\n                  row.querySelector(\r\n                    '.smoca-put-oi'\r\n                  ).value\r\n                ) || 0;\r\n\r\n\r\n              data.push({\r\n\r\n                strike: strike,\r\n\r\n                callOI: Math.max(\r\n                  0,\r\n                  callOI\r\n                ),\r\n\r\n                callChange: callChange,\r\n\r\n                callVolume: Math.max(\r\n                  0,\r\n                  callVolume\r\n                ),\r\n\r\n                callIV: Math.max(\r\n                  0,\r\n                  callIV\r\n                ),\r\n\r\n                callLTP: Math.max(\r\n                  0,\r\n                  callLTP\r\n                ),\r\n\r\n                putLTP: Math.max(\r\n                  0,\r\n                  putLTP\r\n                ),\r\n\r\n                putIV: Math.max(\r\n                  0,\r\n                  putIV\r\n                ),\r\n\r\n                putVolume: Math.max(\r\n                  0,\r\n                  putVolume\r\n                ),\r\n\r\n                putChange: putChange,\r\n\r\n                putOI: Math.max(\r\n                  0,\r\n                  putOI\r\n                )\r\n\r\n              });\r\n\r\n            }\r\n          );\r\n\r\n\r\n          \/*\r\n           * Totals\r\n           *\/\r\n\r\n          var totalCallOI =\r\n            0;\r\n\r\n          var totalPutOI =\r\n            0;\r\n\r\n\r\n          data.forEach(\r\n            function(item) {\r\n\r\n              totalCallOI +=\r\n                item.callOI;\r\n\r\n              totalPutOI +=\r\n                item.putOI;\r\n\r\n            }\r\n          );\r\n\r\n\r\n          var pcr =\r\n            totalCallOI > 0\r\n            ? totalPutOI \/\r\n              totalCallOI\r\n            : 0;\r\n\r\n\r\n          \/*\r\n           * Highest OI strikes\r\n           *\/\r\n\r\n          var maxCallOIItem =\r\n            data.reduce(\r\n              function(max, item) {\r\n\r\n                return item.callOI >\r\n                  max.callOI\r\n                  ? item\r\n                  : max;\r\n\r\n              },\r\n              {\r\n                callOI: -1,\r\n                strike: 0\r\n              }\r\n            );\r\n\r\n\r\n          var maxPutOIItem =\r\n            data.reduce(\r\n              function(max, item) {\r\n\r\n                return item.putOI >\r\n                  max.putOI\r\n                  ? item\r\n                  : max;\r\n\r\n              },\r\n              {\r\n                putOI: -1,\r\n                strike: 0\r\n              }\r\n            );\r\n\r\n\r\n          \/*\r\n           * Highest OI change\r\n           *\r\n           * Only positive additions\r\n           * are considered for building\r\n           * interpretation.\r\n           *\/\r\n\r\n          var maxCallChangeItem =\r\n            data.reduce(\r\n              function(max, item) {\r\n\r\n                return item.callChange >\r\n                  max.callChange\r\n                  ? item\r\n                  : max;\r\n\r\n              },\r\n              {\r\n                callChange: -Infinity,\r\n                strike: 0\r\n              }\r\n            );\r\n\r\n\r\n          var maxPutChangeItem =\r\n            data.reduce(\r\n              function(max, item) {\r\n\r\n                return item.putChange >\r\n                  max.putChange\r\n                  ? item\r\n                  : max;\r\n\r\n              },\r\n              {\r\n                putChange: -Infinity,\r\n                strike: 0\r\n              }\r\n            );\r\n\r\n\r\n          \/*\r\n           * Max Pain\r\n           *\r\n           * For each candidate settlement\r\n           * strike, calculate total intrinsic\r\n           * payout owed by option writers.\r\n           *\/\r\n\r\n          var maxPainStrike =\r\n            data[0].strike;\r\n\r\n          var lowestPain =\r\n            Infinity;\r\n\r\n\r\n          data.forEach(\r\n            function(candidate) {\r\n\r\n              var pain =\r\n                0;\r\n\r\n\r\n              data.forEach(\r\n                function(item) {\r\n\r\n                  var callLoss =\r\n                    Math.max(\r\n                      0,\r\n                      candidate.strike -\r\n                      item.strike\r\n                    ) *\r\n                    item.callOI;\r\n\r\n\r\n                  var putLoss =\r\n                    Math.max(\r\n                      0,\r\n                      item.strike -\r\n                      candidate.strike\r\n                    ) *\r\n                    item.putOI;\r\n\r\n\r\n                  pain +=\r\n                    callLoss +\r\n                    putLoss;\r\n\r\n                }\r\n              );\r\n\r\n\r\n              if (\r\n                pain < lowestPain\r\n              ) {\r\n\r\n                lowestPain =\r\n                  pain;\r\n\r\n                maxPainStrike =\r\n                  candidate.strike;\r\n\r\n              }\r\n\r\n            }\r\n          );\r\n\r\n\r\n          \/*\r\n           * Bias\r\n           *\r\n           * PCR > 1 = relatively more\r\n           * put OI.\r\n           *\r\n           * PCR < 1 = relatively more\r\n           * call OI.\r\n           *\r\n           * OI change is also considered.\r\n           *\/\r\n\r\n          var callPositiveChange =\r\n            0;\r\n\r\n          var putPositiveChange =\r\n            0;\r\n\r\n\r\n          data.forEach(\r\n            function(item) {\r\n\r\n              if (\r\n                item.callChange > 0\r\n              ) {\r\n\r\n                callPositiveChange +=\r\n                  item.callChange;\r\n\r\n              }\r\n\r\n\r\n              if (\r\n                item.putChange > 0\r\n              ) {\r\n\r\n                putPositiveChange +=\r\n                  item.putChange;\r\n\r\n              }\r\n\r\n            }\r\n          );\r\n\r\n\r\n          var bias =\r\n            'NEUTRAL';\r\n\r\n\r\n          if (\r\n            pcr >= 1.15 &&\r\n            putPositiveChange >=\r\n            callPositiveChange\r\n          ) {\r\n\r\n            bias =\r\n              'BULLISH';\r\n\r\n          } else if (\r\n            pcr <= 0.85 &&\r\n            callPositiveChange >=\r\n            putPositiveChange\r\n          ) {\r\n\r\n            bias =\r\n              'BEARISH';\r\n\r\n          } else if (\r\n            pcr > 1.05\r\n          ) {\r\n\r\n            bias =\r\n              'SLIGHTLY BULLISH';\r\n\r\n          } else if (\r\n            pcr < 0.95\r\n          ) {\r\n\r\n            bias =\r\n              'SLIGHTLY BEARISH';\r\n\r\n          }\r\n\r\n\r\n          \/*\r\n           * Display main results\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smoca-pcr'\r\n          ).textContent =\r\n            num(pcr);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-call-oi'\r\n          ).textContent =\r\n            num(totalCallOI);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-put-oi'\r\n          ).textContent =\r\n            num(totalPutOI);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-call-resistance'\r\n          ).textContent =\r\n            money(\r\n              maxCallOIItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-put-support'\r\n          ).textContent =\r\n            money(\r\n              maxPutOIItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-max-pain'\r\n          ).textContent =\r\n            money(\r\n              maxPainStrike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-call-build'\r\n          ).textContent =\r\n            money(\r\n              maxCallChangeItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-put-build'\r\n          ).textContent =\r\n            money(\r\n              maxPutChangeItem.strike\r\n            );\r\n\r\n\r\n          \/*\r\n           * Bias\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smoca-bias-value'\r\n          ).textContent =\r\n            bias;\r\n\r\n\r\n          var biasText =\r\n            'The current option-chain inputs show a Put-Call Ratio of ' +\r\n            num(pcr) +\r\n            '. ';\r\n\r\n\r\n          if (\r\n            bias.indexOf(\r\n              'BULLISH'\r\n            ) !== -1\r\n          ) {\r\n\r\n            biasText +=\r\n              'The combination of PCR and positive Put OI activity suggests a relatively bullish option-chain structure.';\r\n\r\n          } else if (\r\n            bias.indexOf(\r\n              'BEARISH'\r\n            ) !== -1\r\n          ) {\r\n\r\n            biasText +=\r\n              'The combination of PCR and positive Call OI activity suggests a relatively bearish option-chain structure.';\r\n\r\n          } else {\r\n\r\n            biasText +=\r\n              'The current PCR and OI-change data do not provide a strong directional signal and suggest a relatively neutral structure.';\r\n\r\n          }\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-bias-text'\r\n          ).textContent =\r\n            biasText;\r\n\r\n\r\n          \/*\r\n           * Support resistance\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smoca-support'\r\n          ).textContent =\r\n            money(\r\n              maxPutOIItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-current'\r\n          ).textContent =\r\n            money(spot);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-resistance'\r\n          ).textContent =\r\n            money(\r\n              maxCallOIItem.strike\r\n            );\r\n\r\n\r\n          \/*\r\n           * Max pain\r\n           *\/\r\n\r\n          var maxDifference =\r\n            maxPainStrike -\r\n            spot;\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-max-current'\r\n          ).textContent =\r\n            money(spot);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-max-value'\r\n          ).textContent =\r\n            money(maxPainStrike);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-max-difference'\r\n          ).textContent =\r\n            (\r\n              maxDifference >= 0\r\n              ? '+'\r\n              : ''\r\n            ) +\r\n            money(maxDifference);\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-max-text'\r\n          ).textContent =\r\n            'The theoretical max pain level from the entered OI data is ' +\r\n            money(maxPainStrike) +\r\n            '. This is the candidate settlement price at which the calculated combined intrinsic payout to option holders is lowest. Max pain is an analytical concept and is not a guaranteed expiry price.';\r\n\r\n\r\n          \/*\r\n           * OI change\r\n           *\/\r\n\r\n          tool.querySelector(\r\n            '.smoca-call-change-strike'\r\n          ).textContent =\r\n            money(\r\n              maxCallChangeItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-call-change-value'\r\n          ).textContent =\r\n            num(\r\n              maxCallChangeItem.callChange\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-put-change-strike'\r\n          ).textContent =\r\n            money(\r\n              maxPutChangeItem.strike\r\n            );\r\n\r\n\r\n          tool.querySelector(\r\n            '.smoca-put-change-value'\r\n          ).textContent =\r\n            num(\r\n              maxPutChangeItem.putChange\r\n            );\r\n\r\n\r\n          \/*\r\n           * Key strikes\r\n           *\r\n           * Sort by total OI.\r\n           *\/\r\n\r\n          var sorted =\r\n            data.slice().sort(\r\n              function(a,b) {\r\n\r\n                return (\r\n                  b.callOI +\r\n                  b.putOI\r\n                ) -\r\n                (\r\n                  a.callOI +\r\n                  a.putOI\r\n                );\r\n\r\n              }\r\n            );\r\n\r\n\r\n          var top =\r\n            sorted.slice(\r\n              0,\r\n              Math.min(\r\n                10,\r\n                sorted.length\r\n              )\r\n            );\r\n\r\n\r\n          var keyBody =\r\n            tool.querySelector(\r\n              '.smoca-key-body'\r\n            );\r\n\r\n\r\n          keyBody.innerHTML =\r\n            '';\r\n\r\n\r\n          top.forEach(\r\n            function(item) {\r\n\r\n              var tr =\r\n                document.createElement(\r\n                  'tr'\r\n                );\r\n\r\n\r\n              tr.innerHTML =\r\n\r\n                '<td>' +\r\n                  money(item.strike) +\r\n                '<\/td>' +\r\n\r\n                '<td>' +\r\n                  num(item.callOI) +\r\n                '<\/td>' +\r\n\r\n                '<td>' +\r\n                  num(item.callChange) +\r\n                '<\/td>' +\r\n\r\n                '<td>' +\r\n                  num(item.putOI) +\r\n                '<\/td>' +\r\n\r\n                '<td>' +\r\n                  num(item.putChange) +\r\n                '<\/td>';\r\n\r\n\r\n              keyBody.appendChild(\r\n                tr\r\n              );\r\n\r\n            }\r\n          );\r\n\r\n\r\n          \/*\r\n           * Show\r\n           *\/\r\n\r\n          results.style.display =\r\n            'block';\r\n\r\n\r\n          if (\r\n            window.innerWidth < 600\r\n          ) {\r\n\r\n            setTimeout(\r\n              function() {\r\n\r\n                results.scrollIntoView({\r\n                  behavior: 'smooth',\r\n                  block: 'start'\r\n                });\r\n\r\n              },\r\n              100\r\n            );\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      initSMOCA\r\n    );\r\n\r\n  } else {\r\n\r\n    initSMOCA();\r\n\r\n  }\r\n\r\n})();\r\n\r\n<\/script>\n<p style=\"text-align: justify;\">The <strong>StockMaster Universe Option Chain Analyzer<\/strong> is a practical tool designed to help F&amp;O traders study option-chain data and identify important market levels. An option chain contains valuable information about Call and Put contracts across different strike prices, but analysing a large amount of data manually can be difficult.<\/p>\n<p style=\"text-align: justify;\">This tool brings important option-chain metrics together so traders can examine <strong>Open Interest (OI), OI change, volume, implied volatility, Put-Call Ratio (PCR), potential support, potential resistance and theoretical max pain<\/strong> in one place.<\/p>\n<h3>What Is an Option Chain?<\/h3>\n<p style=\"text-align: justify;\">An option chain is a list of available Call and Put option contracts arranged according to their strike prices and expiry.<\/p>\n<p style=\"text-align: justify;\">Traders commonly study the option chain to understand where market participants have accumulated positions and where significant changes in positioning are taking place.<\/p>\n<p style=\"text-align: justify;\">Open Interest is one of the most commonly watched metrics in an option chain.<\/p>\n<h3>What Is Open Interest?<\/h3>\n<p style=\"text-align: justify;\">Open Interest represents the number of outstanding option contracts that remain open.<\/p>\n<p style=\"text-align: justify;\">A concentration of Call Open Interest at a particular strike may indicate an area that traders are watching as potential resistance. Similarly, a concentration of Put Open Interest may indicate a potential support area.<\/p>\n<p style=\"text-align: justify;\">However, OI should not be interpreted in isolation because market positioning can change rapidly.<\/p>\n<p><strong>Analyse Call and Put OI<\/strong><\/p>\n<p>The StockMaster Universe Option Chain Analyzer allows traders to enter Call and Put OI for multiple strikes.<\/p>\n<p>The calculator identifies:<\/p>\n<ul>\n<li>Highest Call OI<\/li>\n<li>Highest Put OI<\/li>\n<li>Call OI change<\/li>\n<li>Put OI change<\/li>\n<li>Total Call OI<\/li>\n<li>Total Put OI<\/li>\n<li>Key strike levels<\/li>\n<\/ul>\n<p>This can help traders quickly identify where the largest concentration of open positions exists.<\/p>\n<h3>Put-Call Ratio<\/h3>\n<p>The <strong>Put-Call Ratio (PCR)<\/strong> compares Put Open Interest with Call Open Interest.<\/p>\n<p>A higher PCR means there is relatively more Put OI compared with Call OI, while a lower PCR indicates relatively greater Call OI.<\/p>\n<p>PCR can provide useful context, but there is no universal PCR value that automatically means bullish or bearish. The interpretation depends on the market, expiry, strike distribution and changes in positioning.<\/p>\n<p><strong>Potential Support and Resistance<\/strong><\/p>\n<p>The analyzer identifies the strike with the highest Put OI as a <strong>potential support reference<\/strong> and the strike with the highest Call OI as a <strong>potential resistance reference<\/strong>.<\/p>\n<p>These are analytical levels rather than guaranteed support or resistance.<\/p>\n<p>A trader should combine option-chain information with price action, volume, volatility and other market data.<\/p>\n<p><strong>Max Pain<\/strong><\/p>\n<p>The calculator also estimates <strong>theoretical max pain<\/strong> from the entered Open Interest.<\/p>\n<p>Max pain represents the candidate expiry price at which the calculated combined intrinsic payout to option holders is lowest based on the entered OI.<\/p>\n<p>It is important to understand that max pain is an analytical concept and <strong>does not guarantee where the underlying will expire<\/strong>.<\/p>\n<p><strong>OI Change<\/strong><\/p>\n<p>Changes in Open Interest can provide additional information about changing market participation.<\/p>\n<p>Large increases in Call OI or Put OI may indicate new positioning, while decreases can indicate positions being closed. Traders often examine OI change alongside price movement to develop a better understanding of market positioning.<\/p>\n<p><strong>Who Can Use This Tool?<\/strong><\/p>\n<p>The Option Chain Analyzer can be useful for:<\/p>\n<ul>\n<li>F&amp;O traders<\/li>\n<li>Options buyers<\/li>\n<li>Options sellers<\/li>\n<li>Intraday traders<\/li>\n<li>Positional traders<\/li>\n<li>Index options traders<\/li>\n<li>Options beginners<\/li>\n<li>Trading students<\/li>\n<li>Technical analysts<\/li>\n<\/ul>\n<p><strong>Important Limitation<\/strong><\/p>\n<p style=\"text-align: justify;\">The tool analyses the option-chain data entered by the user. It does <strong>not provide a live exchange feed<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Actual market conditions can change quickly because of price movement, volatility, news, institutional activity, liquidity and changes in open interest.<\/p>\n<p style=\"text-align: justify;\">Support, resistance, PCR and max pain should therefore be treated as <strong>analytical indicators rather than trading signals<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The StockMaster Universe Option Chain Analyzer is a practical tool designed to help F&amp;O traders study option-chain data and identify [&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-572","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 Chain Analyzer is a practical tool designed to help F&amp;O traders study option-chain data and identify [&hellip;]","_links":{"self":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/posts\/572","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=572"}],"version-history":[{"count":0,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/posts\/572\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/media?parent=572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/categories?post=572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stockmaster.in\/universe\/wp-json\/wp\/v2\/tags?post=572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}