Skip to main content

Download stock data and perform data analisys

Project description

jing

This is a python library, used for download stock data and perform data analysis.

Installation

pip install jing

All required dependencies (requests, pandas, baostock, yfinance, akshare, pyarrow) will be installed automatically.

Usage

Only 2 classes are exported.

downloader D

  • Function: download the data from internet to local file system
  • Parameter:
    • _market (str): us, cn, hk, default is us
  • Return Value: No return value

sample code

import jing

# US stock via Yahoo Finance
d = jing.D('us')
d.download('AAPL')

# CN stock via BaoStock (default source for CN)
d = jing.D('cn')
d.download('sz.000807')

# HK stock via AkShare
d = jing.D('hk')
d.download('00700')

Data layout

The project now uses a source-first layout under data/:

data/
  raw/
    yahoo/us/
    baostock/cn/
    akshare/cn/
    akshare/hk/
    binance/bn/
    list/
  parquet/
  duckdb/

Examples:

  • US Yahoo CSV: data/raw/yahoo/us/AAPL.csv
  • CN BaoStock CSV: data/raw/baostock/cn/sh.601088.csv
  • HK AkShare CSV: data/raw/akshare/hk/00700.csv
  • list files: data/raw/list/us.txt

Configuration

Data directory

Priority (highest first):

  1. Function call — programmatic override

    from jing.data_paths import set_data_root
    set_data_root('/custom/data/path')
    
  2. Environment variable

    export JING_DATA=/custom/data/path
    
  3. Default~/data/jing

Cache

jing caches fetched stock data as Parquet files to speed up repeated analysis.

  • Cache dir: ~/.cache/jing/data (override with JING_CACHE env var)
  • Cache key: market_source_code_date.parquet

The date in the cache key is the analysis date you pass (e.g. _date='2024-01-01'). If no date is passed, today's date is used. This ensures cached data is scoped to the specific date filter you requested.

Why Parquet?

  • Fast reads — columnar format, much faster than CSV for large DataFrames
  • Small size — binary + compression (~45% smaller than CSV in our tests)
  • Preserves schema — dates, floats, and dtypes survive round-trip without re-parsing
  • Pandas-nativepd.read_parquet() / df.to_parquet() with no extra code

Trade-off: requires pyarrow dependency. For repeated stock data reads the speedup is worth it.

Skip cache

y = jing.Y('sh.600519', _date='2024-01-01', _market='cn', skip_cache=True)

Clear cache

from jing.data_center import DataCenter

dc = DataCenter('cn', 'baostock')
dc.clear_cache()                               # clear all
dc.clear_cache(code='sh.600519')               # clear specific stock
dc.clear_cache(code='sh.600519', date='2024-01-01')  # clear specific entry

Release to PyPI

  1. Bump the version in pyproject.toml:

    version = "0.3.1"
    
  2. Build the distribution packages:

    python -m build
    
  3. Upload to PyPI:

    python -m twine upload dist/*
    

    You will need a PyPI account and API token. Configure twine once with python -m twine upload --repository testpypi dist/* to test first if desired.

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

jing-0.3.3.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

jing-0.3.3-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file jing-0.3.3.tar.gz.

File metadata

  • Download URL: jing-0.3.3.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.8

File hashes

Hashes for jing-0.3.3.tar.gz
Algorithm Hash digest
SHA256 8c587bd81b6ab8c8d611b4892e26d32a3814bd44f93186e4d00e995de03f5f29
MD5 91c30f48f8756e89c7e9b7e7127d6b7a
BLAKE2b-256 60abb0c54a9292451ee9e85a17c57061f0a49f8a590fea1f370bf54d228708a2

See more details on using hashes here.

File details

Details for the file jing-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: jing-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.8

File hashes

Hashes for jing-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c48d4f4a1aa6df33819ae2a809aaf61dbe6002b389c02a214c1fd63aeefbf1d2
MD5 4d7fa3f59779fc47851d30693db5788b
BLAKE2b-256 dc37f987b08d3b679b2e016c8a903dbbe86280e8ae40bbe30c667509ced44873

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