{"id":19779360,"url":"https://github.com/ranjanrak/optionchainstream","last_synced_at":"2025-04-07T09:17:53.900Z","repository":{"id":50022932,"uuid":"337100160","full_name":"ranjanrak/optionchainstream","owner":"ranjanrak","description":"Live streaming option chain for equity derivatives using Kite connect Websocket based on redis.","archived":false,"fork":false,"pushed_at":"2023-05-26T20:46:12.000Z","size":41,"stargazers_count":148,"open_issues_count":9,"forks_count":69,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-31T08:09:28.663Z","etag":null,"topics":["implied-volatility","option-chain-stream","redis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ranjanrak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-08T14:20:17.000Z","updated_at":"2025-03-20T16:38:07.000Z","dependencies_parsed_at":"2024-11-12T05:34:38.109Z","dependency_job_id":"0399e795-c5ea-41d4-8b15-c9f40d2e1dff","html_url":"https://github.com/ranjanrak/optionchainstream","commit_stats":{"total_commits":20,"total_committers":2,"mean_commits":10.0,"dds":"0.44999999999999996","last_synced_commit":"27dbdedc17f0f3556aa7144f5c3bff2b13b2b042"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjanrak%2Foptionchainstream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjanrak%2Foptionchainstream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjanrak%2Foptionchainstream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranjanrak%2Foptionchainstream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ranjanrak","download_url":"https://codeload.github.com/ranjanrak/optionchainstream/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247622986,"owners_count":20968575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["implied-volatility","option-chain-stream","redis"],"created_at":"2024-11-12T05:34:30.653Z","updated_at":"2025-04-07T09:17:53.882Z","avatar_url":"https://github.com/ranjanrak.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://zerodha.tech\"\u003e\u003cimg src=\"https://zerodha.tech/static/images/github-badge.svg\" align=\"right\" /\u003e\u003c/a\u003e\n# Option Chain Stream\n\nLive streaming option chain for equity derivatives using [Kite connect Websocket](https://kite.trade/docs/connect/v3/websocket/). \n\nThis package uses [Redis](https://redis.io/) as storage backend. Here Redis is used to store real time streaming websocket data and instruments detail i.e all option strike details for contracts. Combination of these data structure are used to create real-time option chain stream for any given instrument.\n\n## Installation\n``` \npip install optionchain_stream\n```\n## Request parameters\n\n| Field                | Type    | Detail                                                                 |\n| -------------        |:-------:|:-------------:                                                         |\n| api_key              | string  | Kite connect API key                                                   |\n| secret_key           | string  | Kite connect API secret                                                |\n| request_token        | string  | Kite connect one-time token obtained after the [login flow](https://kite.trade/docs/connect/v3/user/#login-flow)              |\n| access_token         | string  | The authentication token obtained post the [login flow](https://kite.trade/docs/connect/v3/user/#login-flow) using request_token and secret_key\n| option_symbol        | string  | Symbol of the instrument(eg: NIFTY, SBIN, ONGC, etc)                   |\n| option_expiry_date   | string  | Option expiry date in yyyy-mm-dd format(eg: '2021-02-25', '2021-04-29')|\n| underlying           | boolean | Add NSE-EQ underlying stock in option stream for True input|\n\n## Usage\n```\nfrom optionchain_stream import OptionChain\nOptionStream = OptionChain(\"option_symbol\", \"option_expiry_date in yyyy-mm-dd format\", \"api_key\",\n                    \"api_secret=None\", \"request_token=None\", \"access_token=None\", underlying=False)\n\n# You can directly pass access_token from previous active session \nEg: OptionStream = OptionChain(\"ONGC\", \"2021-02-25\", \"your_api_key\", access_token=\"XXXXXX\")\n\n# Generate new session by passing api_secret and request_token\nEg: OptionStream = OptionChain(\"ONGC\", \"2021-02-25\", \"your_api_key\", api_secret=\"XXXXX\",\n                    request_token=\"XXXXXX\")\n\n# You can fetch underlying stock tick as well in option chain, by sending optional param `underlying=True`\nEg: OptionStream = OptionChain(\"ONGC\", \"2021-02-25\", \"your_api_key\", access_token=\"XXXXXX\", underlying=True)\n                  Or\n    OptionStream = OptionChain(\"ONGC\", \"2021-02-25\", \"your_api_key\", api_secret=\"XXXXX\",\n                    request_token=\"XXXXXX\", underlying=True)\n\n\n# Sync master instrument data to DB(redis)     \n# This sync is required only once daily at initial run             \nOptionStream.sync_instruments()\n\n# Stream option chain data in real-time\nStreamData = OptionStream.create_option_chain()\nfor data in StreamData:\n    print(data)\n```\n## Response\nResponses are **JSON messages**.\u003c/br\u003e\n1\u003e For `underlying=True`, response contain underlying stock tick as well. Eg. for `option_symbol=ONGC`, underlying is `ONGC EQ NSE` contract:\n\n```\n....{'token': 633601, 'symbol': 'ONGC', 'last_price': 112.35, 'change': 0.4470272686633885},....,\n{'token': 24268034, 'symbol': 'ONGC21FEB87PE', 'last_price': 1.5, 'volume': 61600, 'change': 0.0, 'oi': 400400},.....\n```\n2\u003e By default, option contracts are sent.\n```\n\n...., 'change': 54.09090909090908, 'oi': 7700},{'token': 24268034, 'symbol': 'ONGC21FEB87PE', 'last_price': 1.5, 'volume': 61600, 'change': 0.0, 'oi': 400400}, \n{'token': 24268290, 'symbol': 'ONGC21FEB88CE', 'last_price': 10.6, 'volume': 0, 'change': -12.033195020746897, 'oi': 15400}, {'token': 24268546, 'symbol': \n'ONGC21FEB88PE', 'last_price': 1.75, 'volume': 53900, 'change': 25.000000000000007, 'oi': 261800}, {'token': 24268802, 'symbol': 'ONGC21FEB89CE', \n'last_price':10.6, 'volume': 15400, 'change': -5.77777777777778, 'oi': 107800}, \n{'token': 24269058, 'symbol': 'ONGC21FEB89PE', 'last_price': 1.85, 'volume': 184800, 'change': -11.904761904761905, 'oi': 338800}, {'token': 24269314, 'symbol': \n'ONGC21FEB90CE', 'last_price': 10.0, 'volume': 654500, 'change': 2.5641025641025643, 'oi': 1632400}, {'token': 24269570, 'symbol': 'ONGC21FEB90PE', 'last_price': \n2.2, 'volume': 1925000, 'change': -2.2222222222222143, 'oi': 3326400}, {'token': 24269826, 'symbol': 'ONGC21FEB91CE', 'last_price': 9.3, 'volume': 15400, \n'change': -6.999999999999993, 'oi': 308000}, {'token': 24270082, 'symbol': 'ONGC21FEB91PE', 'last_price': 2.55, 'volume': 61600, 'change': -5.555555555555569, \n'oi': 323400}, {'token': 24270338, 'symbol': 'ONGC21FEB92CE', 'last_price': 8.7, 'volume': 30800,....\n```\n## Response attributes\n\n| Field        | Type    | Detail                                                     |\n| -------------|:-------:|:-------------:                                             |\n| token        | string  | instrument_token for requested tradingsymbol               |\n| symbol       | string  | tradingsymbol of the instrument                            |\n| last_price   | float   | Current market price                                       |\n| volume       | int     | Volume traded for the day                                  |\n| change       | float   | Price change % w.r.t previous day close/LTP                |\n| oi           | float   | Open Interest for a options contract                       |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjanrak%2Foptionchainstream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franjanrak%2Foptionchainstream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franjanrak%2Foptionchainstream/lists"}