Self-Hosted A-Share Quant వర్క్బెంచ్ వివరణ
మీ స్వంత యంత్రంలో నడిచే A-share quant వర్క్బెంచ్ screening, backtesting ఎలా నిర్వహిస్తుంది? దాని ఆధారాలు, ముందుగా తనిఖీ చేయాల్సిన నాలుగు అంశాలు ఇవి.
మీరు నియంత్రించే యంత్రంలో, బ్రోకర్ టెర్మినల్కు బదులుగా పనిచేసే self-hosted A-share quant workbench ఒక వెబ్పేజీలో మార్కెట్ స్క్రీనింగ్, షేర్ల జాబితా పర్యవేక్షణ, backtestలు, మార్కెట్ ముగిసిన తర్వాత సమీక్ష రచన వంటి పనులను నిర్వహిస్తుంది. MIT లైసెన్స్ కలిగిన tickflow-stock-panel అనే ప్రాజెక్ట్ ఇవన్నింటినీ ఒకే port వెనుక అందిస్తుంది. 2026 ఆగస్టు నాటికి దీనికి GitHubలో సుమారు 2,800 stars వచ్చాయి. ఫీచర్ల జాబితాను చదవడం సులభమైన భాగం. ఈ వ్యవస్థకు కింద పనిచేసే మౌలిక పొరే, వచ్చే త్రైమాసికంలో ఇవన్నీ ఇంకా పనిచేస్తాయా లేదా అనేది నిర్ణయిస్తుంది.
స్వయంగా హోస్ట్ చేసుకునే A-share quant వర్క్బెంచ్ నిర్మాణం
ఈ ఆర్కిటెక్చర్ను సులభంగా అర్థం చేసుకునేంత సంక్షిప్తంగా ఉంది. ఆగస్టు 2026 commitలోని code మరియు docs ఆధారంగా చూస్తే, ఇందులో ఇవి ఉన్నాయి:
- React మరియు TypeScriptతో రూపొందించిన వెబ్ పేజీ.
- FastAPI ఆధారిత Python service. ఇందులో నిర్ణీత సమయానికొకసారి dataను refresh చేసే scheduler ఉంటుంది.
- స్థానిక data store: diskలోని Parquet files. వీటిని DuckDBతో query చేసి, Polarsతో లెక్కలు నిర్వహిస్తారు.
- ఆ filesను ఉపయోగించే backtesting engine, vectorbt.
- ప్యానెల్ చూపించే ప్రతి ధరను fetch చేసే vendor SDK.
ఇందులో లేనిదాన్ని గమనించండి. ఈ stackలోని ఏ భాగమూ exchangeకు connect కాదు. ప్యానెల్ లెక్కలు చేస్తుంది; vendor dataను అందిస్తుంది. “Self-hosted” అంటే code ఎక్కడ run అవుతుందో మాత్రమే వివరిస్తుంది. సంఖ్యలు ఎక్కడి నుంచి వస్తాయో అది చెప్పదు. ముడి price barsను స్వంతంగా నిర్వహించే పని దిగువ పొరదైన స్థానిక A-share market data lakeది. అదే పై పొరలన్నింటినీ అవసరమైతే మార్చుకునేలా చేస్తుంది.
డేటా మూలం యొక్క ఉచిత టియర్లో లభించేది
ప్యానెల్ ఏ డేటాను చూడగలదో ఒక environment variable నిర్ణయిస్తుంది. vendor keyను ఖాళీగా ఉంచితే, ప్రాజెక్ట్ డాక్యుమెంటేషన్లో చెప్పిన None modeలో నడుస్తుంది. ఇందులో ఉచిత endpoint నుంచి చారిత్రక రోజువారీ bars లభిస్తాయి. ప్రస్తుత సెషన్ డేటా మార్కెట్ ముగిసిన ఒకటి నుంచి రెండు గంటల తర్వాత అందుతుంది. keyను నమోదు చేస్తే, చెల్లింపు టియర్ ఆధారంగా యాక్సెస్ లభిస్తుంది. రోజు ముగింపు డేటాపై పనిచేసే వారికి ఇది ఉపయోగకరమైన ఉచిత టియర్. అయితే intraday అవసరాలకు ఇది స్పష్టమైన పరిమితి. ప్రతి renewal సమయంలో vendor ఇదే నిబంధనలను మళ్లీ నిర్ధారించవచ్చు.
Maintainer ఈ ఏర్పాటును స్పష్టంగా వివరించారు:
ఈ ప్రాజెక్ట్ కేవలం అభ్యాసం మరియు quantitative research కోసం మాత్రమే. ఇది ఎలాంటి పెట్టుబడి సలహాను అందించదు. Backtest ఫలితాలు భవిష్యత్ రాబడులను సూచించవు.
ఈ ప్రాజెక్ట్ వ్యక్తిగత open-source ప్రాజెక్ట్. ఇది TickFlow డేటా మూలంపై ఆధారపడి ఉంటుంది. ఇది TickFlow అధికారిక ప్రాజెక్ట్ కాదు.
README, shy3130/tickflow-stock-panel, 13 ఆగస్టు 2026న చదివారు
అంటే, ఈ ప్రాజెక్ట్ అభ్యాసం మరియు quantitative research కోసం మాత్రమే. ఇది “పెట్టుబడి సలహా కాదు”. Backtest ఫలితాలు భవిష్యత్ రాబడులను సూచించవు. ఇది “అధికారిక TickFlow ఉత్పత్తి కాదు; వ్యక్తిగత open-source ప్రాజెక్ట్”. ఈ మొత్తం తరహా ప్రాజెక్టుల నుంచి తీసుకోవాల్సిన ముఖ్యమైన పాఠం ఇదే. Zero-ops విధానం నిర్వహణ పనిని మీ బాధ్యత నుంచి తొలగిస్తుంది. కానీ ఆధారపడే మూలం మాత్రం మారదు. ఈ ప్యానెల్కు మద్దతు ఇవ్వడానికి ఎప్పుడూ అంగీకరించని ఒక కంపెనీ నుంచి మీరు డేటాను అద్దెకు తీసుకుంటూనే ఉంటారు. README వినియోగాన్ని అధ్యయనం మరియు పరిశోధనకు మాత్రమే పరిమితం చేస్తుంది. అయితే licence file MITగా ఉంది.
వెర్షన్ నంబర్కు బదులుగా commit SHAను ఎందుకు స్థిరపరచాలి
commit SHA అనేది git ప్రతి సేవ్ చేసిన మార్పుకు కేటాయించే 40 అక్షరాల గుర్తింపు. ఇది కోడ్లోని ఒక నిర్దిష్ట స్థితిని శాశ్వతంగా గుర్తిస్తుంది.
13 ఆగస్టు 2026న పరిశీలించినప్పుడు, ఆ repositoryలోని GitHub Releases పేజీలో ఏమీ లేదు. అయితే v0.1.31 నుంచి v0.1.88 వరకు 31 version tags ఉన్నాయి. వాటి నంబరింగ్లో ఖాళీలు ఉన్నాయి, వాటికి ఎలాంటి గమనికలు జతచేయలేదు. తాజా tag 31 జూలై 2026నాటి commitను సూచిస్తోంది. అయితే default branch 6 ఆగస్టు 2026నాటి పనికి ముందుకు వెళ్లింది. Branch కంటే వెనుకబడిన, గమనికలు లేని tag ద్వారా మీరు ఏ కోడ్ను పొందుతున్నారో తెలుసుకోలేరు.
కాబట్టి ఆ SHAను నమోదు చేసుకోండి. 6 ఆగస్టు 2026న default branch head ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33. ఆ commitను checkout చేసి, backtests ఆధారంగా మీరు చేసే ప్రతి నిర్ధారణ పక్కన దాన్ని నమోదు చేయండి. ఆరు వారాల తర్వాత “నేను తాజా వెర్షన్ను నడిపాను” అని చెప్పడం వల్ల ఏ విషయమూ స్పష్టంగా తెలియదు.
డాక్యుమెంట్లో పేర్కొన్న ప్రారంభ విధానం రెండు పంక్తులే: ఉదాహరణ environment fileను .envకు కాపీ చేయాలి. ఆ తర్వాత docker compose up --buildను నడపాలి. ఇది panelను port 3018పై అందిస్తుంది. ఇవి ఆ commitలో maintainer ఇచ్చిన సూచనలు మాత్రమే; పరీక్షించి నిర్ధారించిన విధానం కాదు. Buildకు images download చేయాలి, అలాగే ఈ పేజీ పరీక్షించని network access అవసరం. Development విధానానికి (./dev.sh, లేదా Windowsలో .\dev.ps1) Python 3.11 లేదా తదుపరి వెర్షన్, Node 20 లేదా తదుపరి వెర్షన్, అలాగే uv మరియు pnpm package managers అవసరం.
LLM strategy ఫీచర్ ఏమి పంపుతుంది, ఎక్కడికి పంపుతుంది
Strategy generation, single-stock commentary, review write-up ఐచ్ఛికాలు. AI_API_KEY ఖాళీగా ఉంచితే మొత్తం ఇంటర్ఫేస్ క్రియారహితంగా ఉంటుంది. దాన్ని నింపితే AI_PROVIDER (OpenAI-compatible endpoint లేదా Ollama), AI_BASE_URL, AI_MODEL, AI_DAILY_TOKEN_BUDGET కూడా సెట్ అవుతాయి. ఆ రోజు token allowance పూర్తయిన తర్వాత ఇవి మరిన్ని callsను నిలిపివేస్తాయి.
డేటా ఎటు వెళ్తుందో ముఖ్యం. మీ prompt, అలాగే panel దానికి జత చేసే context, మీరు కాన్ఫిగర్ చేసిన endpointకు మీ మెషీన్ నుంచి బయటకు వెళ్తాయి. Base URLను hosted APIకి సెట్ చేస్తే request ఆ కంపెనీకి వెళ్తుంది. మీ స్వంత networkలోని runtimeకు సెట్ చేస్తే అది మీ పరిధిలోనే ఉంటుంది. Panelను self-host చేయడం వల్ల modelను self-host చేసినట్లు కాదు. Keys project rootలోని plaintext .env ఫైల్లో ఉంటాయి. వాటిని settings page నుంచీ కూడా సవరించవచ్చు. ఆ page dashboard passwordతో రక్షించబడుతుంది; password కనీసం ఆరు అక్షరాలు ఉండాలి. Machine-written strategies సాధారణంగా ఎక్కడ విఫలమవుతాయో మా LLM రూపొందించిన alpha factors గమనికలో వివరించాం.
బ్యాక్టెస్టర్ ట్రేడింగ్ ఖర్చులను పరిగణనలోకి తీసుకుంటుందా?
బ్యాక్టెస్టర్ T+1 నిర్వహణ, కమీషన్లు, slippage, stop-losses వంటి అంశాలను అందిస్తుందని చెబుతోంది. అయితే ఈ ఎంపికలు అందుబాటులో ఉండటం, అవి వాస్తవంగా సెట్ చేయబడి ఉండటం ఒకటే కాదు. ఖర్చులను సున్నాగా ఉంచి, ముద్రిత closing price వద్దే ఆర్డర్లు నెరవేరినట్లు చూపించే backtest, ట్రేడింగ్ ఉచితం అని చెప్పినట్లే. అది వాస్తవం కాదు. ఒక basis point అంటే ఒక శాతంలో వందవ వంతు. క్రింది ప్యానెల్ 17 జూన్ 2026న మధ్యాహ్నపు ఒక గంటలో, ఆరు US listingsలో best bid మరియు best offer మధ్య ఉన్న సగటు వ్యత్యాసాన్ని basis pointsలో కొలుస్తుంది.
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price) - toFloat64(bid_price))
/ avg((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, 2) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'F')
AND sip_timestamp >= toDateTime('2026-06-17 15:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 16:00:00', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY spread_bpsఈ ప్యానెల్లో అత్యంత తక్కువ వ్యత్యాసం ఉన్న పేరు SPY. ఆ గంటలో దాని సగటు quote వ్యత్యాసం 0.29 bps. అత్యధిక వ్యత్యాసం ఉన్నది F. దాని quote వ్యత్యాసం 6.98 bps. ఆ వ్యత్యాసాన్ని రెండుసార్లు దాటాలి—ఒకసారి కొనుగోలు చేసి ప్రవేశించడానికి, మరోసారి విక్రయించి బయటకు రావడానికి. అందువల్ల కమీషన్లకు ముందు round trip ఖర్చు చూపించిన గణాంకానికి సుమారు రెండింతలు అవుతుంది.
పేరు పెట్టడంతే timing కూడా ఖర్చుతో కూడుకున్నది. తదుపరి ప్యానెల్ ఆ listingsలో ఒకదాన్ని తీసుకుని, ఒకే నిమిషంలో దాని ధర ఎంతదూరం కదిలిందో కొలుస్తుంది. అదే రోజులోని గణాంకాలను అరగంటల విభాగాలుగా సగటు చేస్తుంది.
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
SELECT
formatDateTime(
toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
'%H:%i') AS et_time,
round(avg((toFloat64(high) - toFloat64(low)) / toFloat64(close)) * 10000, 1) AS range_bps
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND window_start >= toDateTime('2026-06-17 12:00:00', 'UTC')
AND window_start < toDateTime('2026-06-17 21:00:00', 'UTC')
AND volume > 0
AND close > 0
GROUP BY et_time
ORDER BY et_timeఈ ప్యానెల్ సాధారణ సెషన్కు ముందు ఉన్న 08:00 వద్ద ప్రారంభమవుతుంది. ఆ సమయంలో సగటు నిమిషపు barలో ధర కదలిక 0 bpsగా నమోదైంది. ట్రేడింగ్ జరిగిన నిమిషాలు ఒకే ధర వద్దే ఉన్నాయి. చివరి విభాగం 16:30. ఇది మార్కెట్ close తర్వాతి సమయాన్ని సూచిస్తుంది; అక్కడ సగటు 4.2 bpsగా ఉంది. Backtest ఈ పరిధుల్లో ప్రతి దానికి ఒక బిందువును ఎంచుకుని, అదే fill price అని పరిగణిస్తుంది. చివరి బిందువులను మాత్రమే కాకుండా మొత్తం వక్రరేఖను చూడాలి. ఒకే assumption కొన్ని గంటల్లో అనుకూలంగా, మరికొన్ని గంటల్లో ప్రతికూలంగా ఉండవచ్చు. A-share నియమాలు కూడా ప్రభావం చూపుతాయి. T+1 కారణంగా ఈరోజు కొనుగోలు చేసిన షేర్లను తదుపరి సెషన్ వరకు విక్రయించలేరు. Daily price limits వల్ల model చేసిన exit పూర్తిగా సాధ్యం కాకపోవచ్చు. మా పునరుత్పత్తి చేయగల backtest వివరణలో సమర్థించదగిన setupలో నమోదు చేయాల్సిన అంశాలు చూపించాం. look-ahead biasలో బయటికి శుభ్రంగా కనిపించే curve ఎలా తప్పుదోవ పట్టిస్తుందో వివరించాం.
సర్దుబాటు చేసినదా, చేయనిదా: మూలాధారాన్ని గుర్తించే ప్రశ్న
కార్పొరేట్ చర్యల సమయంలో స్క్రీనర్ నిశ్శబ్దంగా తప్పుదారి పట్టించవచ్చు. ఒక షేరు పది-కు-ఒకటి నిష్పత్తిలో split అయితే, ఆ రోజున ఎవరూ ఒక్క సెంటు కూడా నష్టపోకపోయినా ధరలో 90% పతనం నమోదవుతుంది. 1 జనవరి నుంచి 13 ఆగస్టు 2026 మధ్య US listingsలో జరిగిన forward splitsలో అత్యంత పెద్ద పన్నెండు విభజనలను దిగువ ప్యానెల్ చూపిస్తుంది.
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
SELECT
ticker AS symbol,
formatDateTime(execution_date, '%b %e, %Y') AS effective_on,
round(any(toFloat64(split_to)) / any(toFloat64(split_from)), 2) AS shares_after_per_share
FROM global_markets.stocks_splits
WHERE execution_date >= toDate('2026-01-01')
AND execution_date <= toDate('2026-08-13')
AND split_from > 0
AND split_to > split_from
AND ticker NOT IN ('SPCX')
GROUP BY ticker, execution_date
ORDER BY shares_after_per_share DESC, execution_date DESC
LIMIT 12అందులో అతిపెద్దది ఒక షేరును 10000 షేర్లుగా మారుస్తుంది. ఇది Feb 10, 2026 నుంచి అమల్లోకి వస్తుంది. ఈ స్థాయి నిష్పత్తులు సాధారణ నాలుగు-కు-ఒకటి splitలు కావు. Corporate-action feed మొత్తం పరిధిని ఒకే కాలమ్లో ఉంచుతుంది. ఈ పన్నెండింటిలో చిన్నదైన split కూడా ఒక షేరును 20 షేర్లుగా మారుస్తుంది. దాంతో unadjusted chart చూస్తే అది పతనంలా కనిపిస్తుంది. ముడి ధరలను చదివే momentum screen వీటన్నింటినీ crashగా గుర్తిస్తుంది. Chinese feedsలో కూడా ఇదే సమస్య వారి స్వంత పదజాలంలో కనిపిస్తుంది. ప్రతి seriesకు unadjusted, forward-adjusted, back-adjusted అనే మూడు రూపాలను అందిస్తాయి. మీ ప్యానెల్లో ఏ రూపం లోడ్ అయిందో తెలుసుకోండి. Splitకు సర్దుబాటు చేసిన ధర చరిత్రలో లెక్కింపు విధానం వివరించబడింది.
ఇలాంటి ఏదైనా వ్యవస్థను స్వయంగా హోస్ట్ చేయడానికి ముందు పరిశీలించాల్సిన అంశాలు
- డేటా మూలం. ఏ vendor నుంచి డేటా వస్తోంది, దానికి ఏ licence వర్తిస్తుంది, అలాగే మీరు చేయాలనుకుంటున్న పనిని free tier అనుమతిస్తుందా.
- Key నిర్వహణ. API keys డిస్క్లో ఎక్కడ నిల్వ అవుతాయి, settings pageను ఎవరు యాక్సెస్ చేయగలరు, అలాగే మీ స్వంత నెట్వర్క్కు వెలుపల machine అందుబాటులో ఉందా.
- ఖర్చుల నమూనా. Backtester commissions, slippage, మార్కెట్కు సంబంధించిన నియమాలను పరిగణనలోకి తీసుకుంటుందా, అలాగే మీరు వాటిని మార్చకుండా వదిలితే ఆ fieldsలో ఏ విలువలు ఉంటాయి.
- Update మార్గం. మీరు deploy చేసిన ఖచ్చితమైన commitను ఫలితాల పక్కన నమోదు చేయాలి. నెలల తర్వాత కూడా దాన్ని పునరుత్పత్తి చేయగలగాలి.
తరచుగా అడిగే ప్రశ్నలు
స్వయంగా హోస్ట్ చేసుకునే A-share quant workbenchను నడపడం ఉచితమేనా?
కోడ్ MIT లైసెన్స్ కింద అందుబాటులో ఉంది, ఉచితం. డేటా విషయానికి వస్తే సమాధానం వేరు. vendor key ఖాళీగా ఉంచితే, ఈ ప్రాజెక్ట్ ఉచిత చారిత్రక రోజువారీ barsను ఉపయోగిస్తుంది. ప్రస్తుత session డేటా మార్కెట్ ముగిసిన ఒకటి నుంచి రెండు గంటల తర్వాత అందుతుంది. అంతకంటే వేగవంతమైన లేదా లోతైన డేటా vendor చెల్లింపు tiers ద్వారా మాత్రమే లభిస్తుంది.
ఇక్కడ self-hosted అంటే నిజంగా ఏమిటి?
వెబ్ పేజీ, scheduler, నిల్వ చేసిన files, backtester—ఇవన్నీ మీ స్వంత కంప్యూటర్ లేదా serverపై నడుస్తాయి. ఇతరుల platformలో account అవసరం లేదు. అయితే డేటా మీ సొంతమని దీని అర్థం కాదు. మీరు వాటిని మీ స్వంత networkలోని modelకు అనుసంధానించకపోతే, ఐచ్ఛిక AI features remoteగానే ఉంటాయి.
LLM feature నా డేటాను third partyకి పంపుతుందా?
ఈ featureను ఆన్ చేస్తే, అవును. మీరు configure చేసిన OpenAI-compatible endpointకు డేటా వెళ్తుంది. ఈ feature defaultగా disabledగా ఉంటుంది. AI key ఖాళీగా ఉంటే, ఏ డేటా కూడా machineను విడిచిపెట్టదు.
version tagకు బదులుగా commit SHAను ఎందుకు pin చేయాలి?
13 ఆగస్టు 2026 నాటికి ఈ repositoryలో published releases లేదా release notes లేవు. అలాగే దాని తాజా tag, default branchలోని code కంటే పాత codeను సూచించింది. అలాంటి పరిస్థితిలో “Latest” అంటే మీరు clone చేసిన రోజున branchలో ఉన్నదేదైనా కావచ్చు. Commit SHA మాత్రం ఖచ్చితమైనదాన్ని సూచిస్తుంది. ఇదే నియమం సాధారణంగా open-source quant trading materialకూ వర్తిస్తుంది: మీరు అమలు చేసినదానినే pin చేయాలి.
ధృవీకరణ గమనికలు
పైన పేర్కొన్న architecture మరియు configuration వివరాలన్నీ 13 ఆగస్టు 2026న public repository నుంచి చదివినవే. ఆ సమయంలో repository commit ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33 వద్ద ఉంది. అదే default branch head, దాని తేదీ 6 ఆగస్టు 2026. Releases పేజీలో ఏదీ లేదు. Tag జాబితాలో v0.1.31 నుంచి v0.1.88 వరకు 31 version tags ఉన్నాయి. వాటిలో తాజాది 31 జూలై 2026 తేదీ గల commitను సూచించింది. ఉటంకించిన పంక్తులు maintainer స్వయంగా రాసినవే. అవి సంక్షిప్తీకరణ కాకుండా README నుంచి నేరుగా తీసుకున్నవి. Container start command కూడా README నుంచి నేరుగా తీసుకున్నదే; దీనిని ఇక్కడ అమలు చేయలేదు.
ఇక్కడి market panels US listingsకు సంబంధించినవి. గణాంకాలు మారకుండా ఉండేందుకు వాటిని గతంలోని నిర్దిష్ట తేదీలకు pin చేశారు. ఇవి చైనా మార్కెట్ను వివరించడానికి కాదు. ఏ మార్కెట్కైనా వర్తించే రెండు తనిఖీలను—execution cost మరియు corporate-action adjustment—చూపించడానికి మాత్రమే ఉన్నాయి.
ఇక్కడి ప్రతి panelను రూపొందించిన SQLతో పాటు అందిస్తున్నారు. ఆ SQLను కింద expand చేసి చూడవచ్చు. Screenerలో ఉపయోగించే ముందు మీ స్వంత names జాబితాపై అదే spread checkను అమలు చేయాలనుకుంటే, Strasmore terminalలో సాధారణ Englishలో అడగండి.