Skip to main content

A Python wrapper for the Novig API with built-in filtering and liquidity validation.

Project description

Novig Liquidity

A Python wrapper around the Novig API with built-in filtering and validation.
This package helps you fetch sports market data and filter it based on liquidity and stat types.

Installation

pip install novig-liquidity

Requirements

Dependencies are listed in requirements.txt and are installed automatically. Core ones include:

  • aiohttp
  • redis
  • pydantic
  • requests

Usage

Create a filters.json file defining which stat types you care about. Example:

{
  "WNBA": [
    {
      "raw_name": "points_rebounds_assists",
      "display_name": "Points, Rebounds, and Assists",
      "active": true
    },
    {
      "raw_name": "points",
      "display_name": "Points",
      "active": true
    },
    {
      "raw_name": "rebounds_assists",
      "display_name": "Rebounds and Assists",
      "active": true
    },
    {
      "raw_name": "points_assists",
      "display_name": "Points and Assists",
      "active": true
    },
    {
      "raw_name": "points_rebounds",
      "display_name": "Points and Rebounds",
      "active": true
    },
    {
      "raw_name": "three_pointers_made",
      "display_name": "Three Pointers Made",
      "active": true
    },
    {
      "raw_name": "double_double",
      "display_name": "Double-Double",
      "active": true
    }
  ],
  "NFL": [
    {
      "raw_name": "rushing_yards",
      "display_name": "Rushing Yards",
      "active": true
    },
    {
      "raw_name": "rushing_attempts",
      "display_name": "Rushing Attempts",
      "active": true
    },
    {
      "raw_name": "longest_rush",
      "display_name": "Longest Rush",
      "active": true
    },
    {
      "raw_name": "passing_yards",
      "display_name": "Passing Yards",
      "active": true
    },
    {
      "raw_name": "receiving_yards",
      "display_name": "Receiving Yards",
      "active": true
    },
    {
      "raw_name": "receptions",
      "display_name": "Receptions",
      "active": true
    },
    {
      "raw_name": "longest_reception",
      "display_name": "Longest Receptions",
      "active": true
    },
    {
      "raw_name": "passing_completions",
      "display_name": "Passing Completions",
      "active": true
    }
  ]
}

Example script

import asyncio
import json
from Config import Novig

if __name__ == "__main__":
    # Load filters from file
    with open("filters.json", "r") as f:
        filters = json.load(f)

    # Choose your filter type and amounts
    total_and_difference_filter = {
        # "filter_type": "total_difference",
        "filter_type": "total_and_difference",
        "difference_amount": 3000,
        "highest_order_amount": 1500
    }
    
    # OR
    
    total_difference_filter = {
        "filter_type": "total_difference",
        "difference_amount": 3000,
    }
        
    

    # Create Novig instance
    novig = Novig(filters=filters, filter_amount_dict=total_and_difference_filter)

    # Run it
    results = asyncio.run(novig.run())
    print(results)
if __name__ == "__main__":
   raw = asyncio.run(Novig.get_raw_data(["NFL"]))
   import json
   with open("raw.json", "w") as f:
        json.dump(raw, f, indent=4)

Filter Types

Two filter types are currently supported:

  1. total_difference
    Keeps markets where the liquidity difference between over/under is at least difference_amount.

  2. total_and_difference
    Keeps markets where:

    • Liquidity difference ≥ difference_amount, and
    • Either over/under side has a highest order with liquidity_lefthighest_order_amount.

Output

novig.run() returns a dict keyed by league name (e.g., "WNBA", "NFL"), each with a list of filtered market entries. Each entry includes:

  • key_name (market description)
  • liquidity (grouped by over/under, includes highest_order, totals, etc.)
  • additional_data (player name, stat type, line, game title, start time)

Features

  • Async API calls via aiohttp
  • Filtering on liquidity differences and totals
  • Stat-type validation via your filters.json
  • Clean models (Pydantic + dataclasses where applicable)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

novig_liquidity-1.0.6.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

novig_liquidity-1.0.6-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file novig_liquidity-1.0.6.tar.gz.

File metadata

  • Download URL: novig_liquidity-1.0.6.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for novig_liquidity-1.0.6.tar.gz
Algorithm Hash digest
SHA256 3f5b06bc533806a76e54fa9d44b5a804cad0806463e3d9a878613f756e4d5fb8
MD5 d4dd1a7cbac7b7dcaf1c8178b500323c
BLAKE2b-256 d267e28586bd9fa4e32ad5bb1dec402f301f2680009910f9e056b11be8f4a137

See more details on using hashes here.

File details

Details for the file novig_liquidity-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for novig_liquidity-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d82c5af1eae6923f048ba4d586aa303eb41b14bfa7a6fe889b8f34ce0012d5e6
MD5 f526482edcd9e0ff2c4c821f852975d5
BLAKE2b-256 fad137d3dd45e55970f32d332e6dde5b8ac0c459cfccf3c83a93f78b0c19b973

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page