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")
fresh_breakout = cs.n_fresh_resistance_breakout(
    "600519",
    lookback=240,
)
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.2.tar.gz (28.4 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.2-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canslim_yanxiang-0.1.2.tar.gz
  • Upload date:
  • Size: 28.4 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.2.tar.gz
Algorithm Hash digest
SHA256 e39a9572569f0783d2de36eaad1fd7efec1dc30407f3abe2cf37946d79098038
MD5 7ed4e58a8cb241a4b17a8aabf2f9741f
BLAKE2b-256 0862deee4e674239abb2a4e887444a1db1d03170f764b897cf0619191b4327b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for canslim_yanxiang-0.1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for canslim_yanxiang-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 354c04b744f2e0d9e973df681a16d758e92bd0292225480d64cf46f5662a4989
MD5 6e4d5eda771281dc60ccbb7f248c1288
BLAKE2b-256 96bf81a8e616fa18133655ab1139977b81964b145fa19cf5a75a7c6b03703f24

See more details on using hashes here.

Provenance

The following attestation bundles were made for canslim_yanxiang-0.1.2-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