{"id":23350569,"url":"https://github.com/yieldcurvemonkey/volcube420","last_synced_at":"2025-04-07T18:19:55.365Z","repository":{"id":268648294,"uuid":"905043366","full_name":"yieldcurvemonkey/VolCube420","owner":"yieldcurvemonkey","description":"SOFR OIS Swaption Vol Cube Data","archived":false,"fork":false,"pushed_at":"2025-01-13T20:50:27.000Z","size":17891,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-13T20:17:11.017Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yieldcurvemonkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-12-18T03:39:50.000Z","updated_at":"2025-01-13T20:50:31.000Z","dependencies_parsed_at":"2024-12-18T04:27:27.133Z","dependency_job_id":"a0c3639a-9efe-468d-a9df-36f8429ebe59","html_url":"https://github.com/yieldcurvemonkey/VolCube420","commit_stats":null,"previous_names":["yieldcurvemonkey/volcube420"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yieldcurvemonkey%2FVolCube420","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yieldcurvemonkey%2FVolCube420/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yieldcurvemonkey%2FVolCube420/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yieldcurvemonkey%2FVolCube420/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yieldcurvemonkey","download_url":"https://codeload.github.com/yieldcurvemonkey/VolCube420/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704579,"owners_count":20982299,"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":[],"created_at":"2024-12-21T08:16:58.915Z","updated_at":"2025-04-07T18:19:55.329Z","avatar_url":"https://github.com/yieldcurvemonkey.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# VolCube420\n\n- SOFR OIS (BBG ICVS 490 curve) Swaption Volatility Cube Data\n- Data sourced from mix of different brokers and proprietary markings from the DTCC SDR\n- NY EOD marks\n- All in Normal Vol - thats current practice, divide by sqrt(252) for bpvol/daily vol\n- ATMF Stike Offsets (bps): `[-200, -100, -50, -25, -10, 0, 10, 25, 50, 100, 200]`\n- SABR Model calibrated using [Differential Evolution](https://en.wikipedia.org/wiki/Differential_evolution) with a Residual Sum of Squares objective function and a refinement using simple Gauss-Newton to minimize the weighted root mean square error in implied volatilities as described in `Le Floc’h` + `Kennedy`'s [Explicit SABR Calibration through Simple Expansions](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2467231)\n- [Bilinear interpolation](https://en.wikipedia.org/wiki/Bilinear_interpolation) in log-space (to avoid negative vols when extrapolating) is used\n- `\\atm_timeseries` is daily timeseries data of ATMF normal vol quotes in annual json files w/ type `Dict[datetime.strftime(\"%Y-%m-%d\"), List[Dict[str, float]]]`\n\n- Schema for EOD JSON file:\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Swaption Volatility Cube\",\n  \"description\": \"A schema for validating swaption volatility cube data where keys represent strike offsets from the at-the-money forward (ATMF).\",\n  \"type\": \"object\",\n  \"patternProperties\": {\n    \"^-\\\\d+$\": {\n      \"description\": \"Strike offsets from the at-the-money forward (ATMF) in basis points. Keys are negative for strikes below ATMF.\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"Option Tenor\": {\n            \"type\": \"string\",\n            \"description\": \"The tenor of the option (e.g., '1M', '3M', '6M', '1Y', etc.).\"\n          },\n          \"1Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 1-year maturity.\"\n          },\n          \"2Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 2-year maturity.\"\n          },\n          \"3Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 3-year maturity.\"\n          },\n          \"4Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 4-year maturity.\"\n          },\n          \"5Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 5-year maturity.\"\n          },\n          \"6Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 6-year maturity.\"\n          },\n          \"7Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 7-year maturity.\"\n          },\n          \"8Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with an 8-year maturity.\"\n          },\n          \"9Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 9-year maturity.\"\n          },\n          \"10Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 10-year maturity.\"\n          },\n          \"15Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 15-year maturity.\"\n          },\n          \"20Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 20-year maturity.\"\n          },\n          \"25Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 25-year maturity.\"\n          },\n          \"30Y\": {\n            \"type\": \"number\",\n            \"description\": \"Normal Volatility value for a swap with a 30-year maturity.\"\n          }\n        },\n        \"required\": [\"Option Tenor\"],\n        \"additionalProperties\": false\n      }\n    }\n  },\n  \"additionalProperties\": false\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyieldcurvemonkey%2Fvolcube420","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyieldcurvemonkey%2Fvolcube420","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyieldcurvemonkey%2Fvolcube420/lists"}