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.

The current SDK includes L1 market and financial queries, L2-Class1 stock analysis, L2-Class2 industry analysis, L2-Class3 CANSLIM card indicators, L2-Class4 rule-based stock screening, and the first L2-Class5 market-analysis aggregate.

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()

# Nine-index consensus used by later L3 market gates.
market = cs.market_state_aggregate()

L3 industry-rotation opportunities default to evaluating industries without a market gate:

opportunities = cs.industry_rotation_opportunities(
    rps_top_n=30,
    eps_top_m=30,
    output_top_n=5,
    stocks_per_industry=10,
    market_gate="off",
)

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.3.tar.gz (30.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.3-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: canslim_yanxiang-0.1.3.tar.gz
  • Upload date:
  • Size: 30.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.3.tar.gz
Algorithm Hash digest
SHA256 653df4dbc1ba49573a72ed8c36a249602292991c7d15697521873718cca73959
MD5 fed6e2a7f70fa772d42fc01ad81e788d
BLAKE2b-256 14477950e504c0bda21886af9835533e065d17cd4f2ee175e96ac5b0c32d68f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for canslim_yanxiang-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a55687ebdcfb517b1a885246779bd90cddd548ddda2aa1dd87fe70506cb7dc92
MD5 7d9b709d813f145f47c641bb166f8634
BLAKE2b-256 3d9dd51fb1b3f051964bb9d1f029b75a5add29af078705ae4135a2e5ff93fe1e

See more details on using hashes here.

Provenance

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