Kituo cha Quant cha A-share Kinachojitegemea
Kituo cha quant cha A-share kinachojiendesha chenyewe hufanya uchujaji na backtesting kwenye mashine yako. Jua kinachokitegemeza na mambo manne ya kwanza ya kukagua.
Kituo cha kujitegemea cha quant kwa A-share
Kituo cha quant cha A-share kinachojiendesha chenyewe ni ukurasa mmoja wa wavuti unaochuja soko, kufuatilia orodha ya hisa, kuendesha backtests na kuandika mapitio ya baada ya soko. Kinaendeshwa kwenye mashine unayodhibiti, badala ya terminal ya broker. Mradi mmoja wenye leseni ya MIT, tickflow-stock-panel, unaweka vipengele hivyo vyote nyuma ya port moja. Kufikia Agosti 2026, ulikuwa umepata takribani nyota 2,800 kwenye GitHub. Orodha ya vipengele ni rahisi kusoma. Lakini ni tabaka lililo chini yake linaloamua ikiwa vipengele hivyo vitaendelea kufanya kazi katika robo ijayo.
Kinachounda workbench ya quant ya A-share inayopangishwa kibinafsi
Muundo wake ni mfupi kiasi cha kuweza kuuelewa kwa urahisi. Ukisoma msimbo na nyaraka za commit ya Agosti 2026, unapata vipengele hivi:
- Ukurasa wa wavuti uliojengwa kwa React na TypeScript.
- Huduma ya Python, FastAPI, yenye scheduler inayosasisha data kwa muda uliowekwa.
- Hifadhi ya ndani: faili za Parquet kwenye diski, zinazoulizwa kwa DuckDB na kuchakatwa kwa Polars.
- Injini ya backtesting, vectorbt, inayotumia faili hizo.
- SDK ya vendor inayopakua kila bei inayoonyeshwa na paneli.
Zingatia kisichokuwapo. Hakuna kipengele katika stack hiyo kinachounganishwa moja kwa moja na exchange. Paneli hufanya mahesabu; vendor hutoa data. “Self-hosted” inaeleza mahali msimbo unapoendeshwa, lakini haisemi chochote kuhusu chanzo cha nambari hizo. Kumiliki bars ghafi ni jukumu la safu iliyo chini, ya lake ya ndani ya data ya soko la A-share, na hilo ndilo linalofanya kila kitu kilicho juu yake kiweze kubadilishwa.
Kinachojumuishwa na kiwango cha bure cha chanzo cha data
Kigezo kimoja cha mazingira huamua kile ambacho paneli inaweza kuona. Ukiacha ufunguo wa vendor wazi, mradi huendesha katika hali ambayo nyaraka zake huiita None mode: data za kihistoria za kila siku kutoka kwenye endpoint ya bure, huku data ya kikao cha sasa ikiwasili saa moja hadi mbili baada ya kufungwa kwa soko. Ukiweka ufunguo huo, ufikiaji hufunguliwa kulingana na kiwango cha malipo. Hiki ni kiwango cha bure kinachoweza kutumika kwa kazi za mwisho wa siku, lakini kinaweka kikomo kisichovukwa kwa shughuli za intraday, kwa masharti ambayo vendor anaweza kuyabadilisha wakati wa kusasisha mkataba.
Msimamizi anaeleza mpangilio huo moja kwa moja:
Mradi huu ni kwa ajili ya kujifunza na utafiti wa kiasi pekee, na haujumuishi ushauri wowote wa uwekezaji. Matokeo ya backtest hayawakilishi mapato ya siku zijazo.
Mradi huu ni wa mtu binafsi na umetolewa kama open source, unatokana na chanzo cha data cha TickFlow, na si mradi rasmi wa TickFlow.
README, shy3130/tickflow-stock-panel, ilisomwa tarehe 13 Agosti 2026
Kwa Kiingereza: mradi huu ni wa kujifunza na utafiti wa kiasi, “haujumuishi ushauri wa uwekezaji”, matokeo ya backtest hayawakilishi mapato ya siku zijazo, na ni “mradi wa mtu binafsi wa open source, si bidhaa rasmi ya TickFlow”. Hilo ndilo somo la kudumu katika miradi ya aina hii. Zero-ops huondoa kazi za uendeshaji kwenye dawati lako. Lakini utegemezi unabaki pale pale: unakodisha data kutoka kwa kampuni ambayo haikuwahi kukubali kuunga mkono paneli hii. README pia inaweka matumizi kwenye kujifunza na utafiti pekee, huku faili la leseni likiwa MIT.
Kwa nini uweke commit SHA badala ya nambari ya toleo
Commit SHA ni alama ya herufi 40 ambayo git huipa kila mabadiliko yaliyohifadhiwa. Hutambulisha hali moja mahususi ya msimbo, na utambulisho huo hubaki wa kudumu.
Niliposoma tarehe 13 Agosti 2026, hifadhi hiyo haikuwa na chochote kwenye ukurasa wake wa GitHub Releases. Ina tagi 31 za matoleo, kuanzia v0.1.31 hadi v0.1.88, zikiwa na mapengo katika mpangilio wa nambari na bila maelezo yoyote. Tagi mpya zaidi ilielekeza kwenye commit ya tarehe 31 Julai 2026, huku branch chaguo-msingi ikiwa imeendelea hadi kazi ya tarehe 6 Agosti 2026. Tagi iliyo nyuma ya branch na isiyo na maelezo haiwezi kukuambia unachopata.
Kwa hiyo, andika SHA hiyo. Kilele cha branch chaguo-msingi tarehe 6 Agosti 2026 kilikuwa ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33. Fanya checkout ya commit hiyo na iandike pamoja na hitimisho lolote utakaloatoa kutokana na backtests. Baada ya wiki sita, kusema “niliendesha toleo jipya zaidi” hakuelezi chochote.
Hatua ya kuanza iliyoandikwa ina mistari miwili: nakili faili ya mfano ya mazingira hadi .env, kisha endesha docker compose up --build, ambayo huendesha paneli kwenye port 3018. Hayo ndiyo maelekezo ya maintainer kwenye commit hiyo, wala si njia iliyojaribiwa; build huvuta images na inahitaji ufikiaji wa mtandao ambao ukurasa huu haujautumia. Njia ya uendelezaji (./dev.sh, au .\dev.ps1 kwenye Windows) inahitaji Python 3.11 au mpya zaidi, Node 20 au mpya zaidi, pamoja na wasimamizi wa package uv na pnpm.
Kipengele cha mkakati wa LLM hutuma nini, na huenda wapi
Uundaji wa mkakati, maelezo ya hisa moja, na maandishi ya mapitio ni hiari. Acha AI_API_KEY wazi, na sehemu yote ya kiolesura itaendelea kuwa tupu. Ukiijaza, pia utaweka AI_PROVIDER (endpoint inayooana na OpenAI, au Ollama), AI_BASE_URL, AI_MODEL na AI_DAILY_TOKEN_BUDGET, ambayo husitisha maombi mara tu kiwango cha tokeni cha siku kinapotumika.
Mwelekeo wa data ni muhimu. Prompt yako, pamoja na muktadha wowote unaoongezwa na paneli, huondoka kwenye mashine yako na kwenda kwenye endpoint uliyosanidi. Ukiweka base URL kuelekea API inayopangishwa, ombi huenda kwa kampuni hiyo; ukiielekeza kwenye runtime iliyo kwenye mtandao wako mwenyewe, hubaki ndani ya mtandao huo. Kujipangishia paneli mwenyewe hakumaanishi kuwa umejipangishia model mwenyewe. Keys huhifadhiwa katika .env ya maandishi wazi kwenye mzizi wa mradi, na pia zinaweza kuhaririwa kwenye ukurasa wa mipangilio, unaolindwa na dashboard password yenye angalau herufi sita. Maelezo yetu kuhusu fahirisi za alpha zinazozalishwa na LLM yanaeleza maeneo ambayo mikakati iliyoandikwa na mashine mara nyingi hushindwa.
Je, backtester huiga gharama za biashara?
Backtester inatangaza utunzaji wa T+1, commissions, slippage na stop-losses. Kuwa na mipangilio hiyo hakumaanishi kuwa imewashwa. Backtest inayotekeleza miamala kwa bei ya mwisho iliyoonyeshwa huku gharama zikiwa sifuri inadai kuwa biashara ni bure. Si hivyo. Basis point ni moja ya mia ya asilimia moja. Paneli iliyo hapa chini inapima pengo la wastani kati ya bei bora ya kununua na bei bora ya kuuza, kwa basis points, katika listings sita za Marekani kwa saa moja ya katikati ya siku tarehe 17 Juni 2026.
SQL halisi nyuma ya kila namba
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_bpsJina lenye spread ndogo zaidi kwenye paneli, SPY, lilikuwa na wastani wa 0.29 bps katika saa hiyo. Jina lenye spread kubwa zaidi, F, lilikuwa na 6.98 bps. Ukivuka pengo hilo mara mbili—mara moja kuingia na mara moja kutoka—gharama ya safari nzima huwa takribani mara mbili ya takwimu iliyoonyeshwa, kabla ya commissions.
Muda una gharama sawa na uteuzi wa instrument. Paneli inayofuata inachukua mojawapo ya listings hizo na kupima umbali ambao bei yake ilisafiri ndani ya dakika moja, kisha kuhesabu wastani huo katika vipindi vya nusu saa kwa siku hiyo hiyo.
SQL halisi nyuma ya kila namba
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_timePaneli inaanza 08:00, kabla ya kikao cha kawaida, ambapo bar ya wastani ya dakika ilionyesha mwendo wa 0 bps: dakika zilizokuwa na biashara zilifanyika kwa bei moja tu. Kipindi cha mwisho, 16:30, kinafuata baada ya soko kufungwa na kilikuwa na wastani wa 4.2 bps. Backtest huchagua hatua moja kutoka katika kila mojawapo ya masafa hayo na kuiita bei ya utekelezaji. Soma mwelekeo wa curve badala ya ncha zake: dhana hiyo hiyo huwa yenye ukarimu katika saa fulani na yenye kuadhibu katika saa nyingine. Sheria za A-share huongeza vikwazo vyake, kwa kuwa T+1 huzuia hisa zilizonunuliwa leo kuuzwa hadi kikao kinachofuata, na price limits za kila siku zinaweza kuondoa kabisa exit iliyowekwa kwenye modeli. Mwongozo wetu wa backtest inayoweza kurudiwa unaonyesha kile ambacho usanidi unaoweza kutetewa unapaswa kurekodi, na upendeleo wa kuangalia mbele unaeleza njia nyingine ambayo curve inayoonekana safi inaweza kuharibika.
Iliyorekebishwa au isiyorekebishwa: swali la chanzo
Hatua za kampuni ndizo zinaweza kufanya screener ipotoshe kimya kimya. Hisa inayogawanywa kwa uwiano wa ten-for-one huonyesha kushuka kwa 90% siku hiyo, bila mtu yeyote kupoteza hata senti moja. Jedwali lililo hapa chini linaorodhesha gawio kumi na mbili kubwa zaidi za mbele kwenye listings za Marekani kati ya 1 Januari na 13 Agosti 2026.
SQL halisi nyuma ya kila namba
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 12Gawio kubwa zaidi hubadilisha hisa moja kuwa 10000, kuanzia Feb 10, 2026. Uwiano wa ukubwa huo si ule wa kawaida wa four-for-one; data feed ya corporate action hubeba wigo wote katika safu moja. Gawio dogo zaidi kati ya hayo kumi na mawili bado hubadilisha hisa moja kuwa 20, kiasi cha kutosha kufanya chati isiyorekebishwa ionekane kama kuanguka kwa bei. Momentum screen inayosoma bei ghafi huashiria kila moja kama crash. Feeds za China zina tatizo hilo hilo kwa istilahi zao, zikituma matoleo matatu ya kila mfululizo: lisilorekebishwa, lililorekebishwa kuelekea mbele na lililorekebishwa kuelekea nyuma. Jua ni lipi ambalo paneli yako ilipakia. Historia ya bei iliyorekebishwa kwa mgawanyo wa hisa inaeleza hesabu hiyo hatua kwa hatua.
Mambo ya kukagua kabla ya kujiendeshea mwenyewe huduma kama hii
- Chanzo cha data. Ni vendor gani anayeitoa, iko chini ya leseni gani, na ikiwa kiwango cha bure kinatosha kwa matumizi unayokusudia.
- Usimamizi wa funguo. API keys zinahifadhiwa wapi kwenye diski, ni nani anayeweza kufikia ukurasa wa mipangilio, na ikiwa mashine inaonekana nje ya mtandao wako mwenyewe.
- Uundaji wa makadirio ya gharama. Ikiwa backtester inazingatia commissions, slippage na kanuni za soko lenyewe, na thamani za sehemu hizo huwa nini unapoziacha bila kuzibadilisha.
- Njia ya masasisho. Commit halisi uliyoweka, ikiandikwa pamoja na matokeo yako ili iweze kuzalishwa tena miezi kadhaa baadaye.
Maswali Yanayoulizwa Mara kwa Mara
Je, kuendesha A-share quant workbench kwenye mashine yako mwenyewe ni bila malipo?
Msimbo umepewa leseni ya MIT na ni wa bure. Data ni suala tofauti: vendor key ikiachwa wazi, mradi huu hutumia data ya bure ya kihistoria ya bei za kila siku, huku data ya kikao cha sasa ikiwasili saa moja hadi mbili baada ya soko kufungwa. Data ya haraka au yenye kina zaidi hupatikana kupitia tiers za vendor zinazolipiwa.
Hapa, self-hosted ina maana gani hasa?
Ukurasa wa wavuti, scheduler, mafaili yaliyohifadhiwa na backtester vyote huendeshwa kwenye kompyuta au server yako mwenyewe, bila kuwa na akaunti kwenye platform ya mtu mwingine. Haimaanishi kwamba data ni yako, na vipengele vya hiari vya AI hubaki remote isipokuwa uvielekeze kwenye model iliyo kwenye mtandao wako mwenyewe.
Kipengele cha LLM hutuma data yangu kwa mtu mwingine?
Ndiyo, kinapowashwa, data hutumwa kwenye endpoint yoyote inayooana na OpenAI utakayosanidi. Kipengele hicho huja kikiwa kimezimwa: AI key ikiwa wazi, hakuna data inayotoka kwenye mashine.
Kwa nini kuweka commit SHA badala ya version tag?
Kufikia tarehe 13 Agosti 2026, repository hii haikuwa na releases zilizochapishwa wala release notes, na tag yake mpya zaidi ilielekeza kwenye code ya zamani kuliko default branch. Hapo, “Latest” humaanisha chochote kilichokuwa kwenye branch siku uliyo-clone, ilhali commit SHA ni sahihi kabisa. Nidhamu hiyo hiyo inatumika kwa nyenzo za open-source quant trading kwa ujumla: weka kumbukumbu ya kile ulichotumia.
Maelezo ya uthibitishaji
Kila maelezo ya architecture na configuration hapo juu yalisomwa kutoka kwenye repository ya umma tarehe 13 Agosti 2026, kwenye commit ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33, ambayo ilikuwa head ya default branch na ilikuwa ya tarehe 6 Agosti 2026. Ukurasa wa Releases haukuwa na chochote; orodha ya tags ilikuwa na version tags 31 kuanzia v0.1.31 hadi v0.1.88, huku tag mpya zaidi ikielekeza kwenye commit ya tarehe 31 Julai 2026. Mistari iliyonukuliwa ni ya maintainer mwenyewe, imenakiliwa kutoka README badala ya kufupishwa. Amri ya kuanzisha container imenukuliwa kutoka README hiyo na haikuendeshwa hapa.
Paneli za soko ni listings za Marekani, zikiwa zimefungwa kwenye tarehe za zamani zilizowekwa ili takwimu zibaki zilezile. Zipo hapa kuonyesha ukaguzi wawili unaotumika katika soko lolote: gharama ya utekelezaji na marekebisho ya corporate action, si kuelezea soko la China.
Kila paneli hapa inaambatana na SQL iliyotumika kuitengeneza, ambayo inaweza kufunguliwa hapa chini. Ili kuendesha ukaguzi huo wa spread kwenye orodha yako mwenyewe ya kampuni kabla ya kuunganisha moja kwenye screener, iombe kwa Kiingereza cha kawaida kwenye terminal ya Strasmore.