Skip to main content

Python SDK for the CANSLIM Yanxiang cloud API

Project description

canslim-yanxiang

canslim-yanxiang is the lightweight Python SDK for the CANSLIM cloud service. It uses an API key and HTTPS to call /api/sdk/v1. Database credentials, membership checks, indicator calculations, and stock screening stay on the server; an SDK user never connects to the production database directly.

Version 0.1.0 includes L1 market and financial queries, L2-Class1 stock analysis, L2-Class2 industry analysis, L2-Class3 CANSLIM card indicators, and L2-Class4 rule-based stock screening.

Install

Install the production package from PyPI:

python -m pip install --upgrade canslim-yanxiang

Verify the installation:

python -c "import canslim_yanxiang as cs; print(cs.__version__)"

On macOS (Intel or Apple Silicon), use Python 3.10 or newer:

python3 -m pip install --upgrade canslim-yanxiang
python3 -c "import canslim_yanxiang as cs; print(cs.__version__)"

The SDK is platform-independent and does not include B-XTrender.

For repository development:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .

Configure

Set the cloud endpoint and API key in the current PowerShell session:

$env:CANSLIM_API_BASE_URL = "https://your-domain.example/api/sdk/v1"
$env:CANSLIM_API_KEY = "csk_live_xxx"

Configuration can also be supplied in Python:

import canslim_yanxiang as cs

cs.configure(
    base_url="https://your-domain.example/api/sdk/v1",
    api_key="csk_live_xxx",
)

The API key is never written into the package. The server validates membership level and account expiry for every call.

L1 Queries

import canslim_yanxiang as cs

stocks = cs.stock_search("600519")
info = cs.stock_basic_info("600519")
latest = cs.stock_price_latest("600519")
prices = cs.stock_price_history("600519", start="2025-01-01")
financials = cs.stock_financials("600519", period="quarterly", limit=20)

List endpoints return pandas DataFrame objects by default and single-object endpoints return dictionaries. Pass raw=True to receive the complete response envelope.

L2 Analysis

L2-Class1 stock analysis:

current = cs.eps_current_quarter_score("600519")
eps = cs.eps_growth_history("600519", mode="quarter")
stock_score = cs.stock_rps_score("600519")       # defaults to rps_240
industry_score = cs.industry_rps_score("600519") # defaults to rps_120
industry = cs.stock_industry("600519")

L2-Class2 industry analysis:

industries = cs.industry_list()
basic = cs.industry_basic_info("340500")
members = cs.industry_constituents("340500")
fundamental = cs.industry_fundamental_analysis(top_n=20)
strength = cs.industry_strength_history("340500")
member_rps = cs.industry_constituent_rps_ranking("340500")

L2-Class3 CANSLIM card analysis:

c = cs.c_card("600519", report_date="2026-03-31")
a = cs.a_card("600519", report_date="2026-03-31")
n = cs.n_card("600519")
s = cs.s_card("600519", report_date="2026-03-31")
l = cs.l_card("600519")
i = cs.i_card("600519", report_date="2026-03-31")
m = cs.m_card()

Atomic indicators are also callable individually and can be registered in L2-Class4 screening rules. See the contracts under docs/ for stable parameters and response fields.

Six-Rule Screen

Run the frozen C/A/N/S/L/I rule set after installation:

python -m canslim_yanxiang.screen_six_rules

Use --rules to select a subset. The default intersection mode requires every selected rule, so this example only returns stocks that satisfy C, A, L and I:

python -m canslim_yanxiang.screen_six_rules --rules C A L I

Comma-separated input is also accepted. To return stocks matching at least three of those four selected rules:

python -m canslim_yanxiang.screen_six_rules `
  --rules C,A,L,I `
  --combine at_least `
  --min-matched-rules 3

Dates and output location can be fixed explicitly:

python -m canslim_yanxiang.screen_six_rules `
  --report-date 2026-03-31 `
  --as-of-date 2026-07-17 `
  --output .\results\six_rules.csv

The command writes a CSV and a matching .meta.json file. Each result contains matched_rule_count and matched_rules, so the selected rule names are visible for every stock. Because the current screening API is synchronous, the percentage shown while waiting is an elapsed-time estimate. Final counts and results always come from the cloud response.

Repository Boundaries

  • This repository contains the installable SDK and archived backtest CSV data.
  • The production backend owns API keys, permissions, quotas, logs, database access, and job execution.
  • The offline project owns heavy recomputation, historical backfills, and publishable data generation.
  • backtest_csv/ is not included in the SDK wheel. It is deployed separately as read-only cloud data when required by the backtest service.

See SDK framework and cloud deployment for the complete architecture.

Development Verification

python -m unittest discover -s tests -v
python -m build
python -m twine check dist/*

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

canslim_yanxiang-0.1.1.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

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

canslim_yanxiang-0.1.1-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file canslim_yanxiang-0.1.1.tar.gz.

File metadata

  • Download URL: canslim_yanxiang-0.1.1.tar.gz
  • Upload date:
  • Size: 28.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for canslim_yanxiang-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aa053e62c682e8c46f6b0faf900fe4bc072e47ea4c54a129a8f9112eb4851782
MD5 4c6874f009fac18df8df7fe1856829e9
BLAKE2b-256 1bd20e7027f6c5d954286cc4087001a1dd9e850ca063b8dc38777f1888d0327c

See more details on using hashes here.

Provenance

The following attestation bundles were made for canslim_yanxiang-0.1.1.tar.gz:

Publisher: publish-pypi.yml on johnhowl/canslim_lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file canslim_yanxiang-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for canslim_yanxiang-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f0b223a0933f478a35bfa4c97ac7378c6d203310649363adcee95c3b338c477
MD5 757d5d1841aea889c39c9fe65270e414
BLAKE2b-256 1fd303679799331d604d00b541afdf7cbab0d3529cb15bab4825598785cef22c

See more details on using hashes here.

Provenance

The following attestation bundles were made for canslim_yanxiang-0.1.1-py3-none-any.whl:

Publisher: publish-pypi.yml on johnhowl/canslim_lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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