Strasmore Research
Jifunze Matt ConnorNa Matt Connor

Jifunze Quant Trading kwa Kitabu Huria

Kitabu huria cha quant trading kinaeleza mtaala mzima, hatua ambazo wanaoanza huacha, na maarifa yanayoweza kutumika kwenye hisa za Marekani.

Kitabu huria cha biashara ya kiasi ni mtaala wa umma unaopatikana bila malipo. Kinaeleza safari nzima kutoka data ghafi hadi kutekelezwa kwa agizo la moja kwa moja, kwa mpangilio ambao anayeanza hukutana nao. Muswada wa XQuant: Everyone Can Be a Quantitative Trader, uliochapishwa kwenye GitHub na xingwudao, ni mfano mzuri wenye nyota 686 kufikia Agosti 2026. Sura zake tisa zinafuata mwelekeo unaopatikana katika karibu kila mtaala wa biashara ya kiasi. Ukurasa huu unafuata mwelekeo huo hatua kwa hatua, unaainisha hitilafu mahususi inayojitokeza katika kila hatua, na unaonyesha ni sehemu zipi zinazoweza kutumika katika safari kutoka hisa za A za China hadi hisa za Marekani.

Kitabu cha quantitative trading cha open source kina nini?

Ukiondoa chapa kwenye mtaala wowote wa wanaoanza, hatua tano hubaki, kwa mpangilio huu: kupata na kusafisha data, kujenga signal kutokana nayo, kuijaribu signal hiyo dhidi ya historia, kuamua ukubwa wa dau, kisha kutuma oda na kulipia gharama. Yaliyomo katika XQuant, yaliyosomwa kwenye commit 016b66e ya Julai 14, 2026, yanashughulikia eneo hilo hilo katika sura tisa.

  • Maandalizi, kisha sura ya kwanza: kuendesha strategy moja kamili kutoka mwanzo hadi mwisho.
  • Sura ya pili, cha kununua: kuanza na ETF tatu.
  • Sura ya tatu, kiasi cha kununua: mbinu tatu za allocation, zikilinganishwa.
  • Sura ya nne, wakati wa kufanya trading: rebalancing, stop loss, take profit.
  • Sura ya tano, kutathmini kama strategy ni nzuri: mitazamo minne.
  • Sura ya sita, usisherehekee mapema: kuzuia overfitting.
  • Sura ya saba, kutoka kwenye mpango bora hadi uhalisia: kutekeleza trades.
  • Sura ya nane, maisha baada ya kuzinduliwa: monitoring, diagnosis, iteration.
  • Sura ya tisa, kutafuta fursa mpya: utangulizi wa factor research.

Mpangilio huo unastahili kuzingatiwa. Sizing inakuja katika sura ya tatu, kabla ya sura zote mbili za backtest, na factor research inakuja mwisho. Njia za kujifunza mwenyewe kwa kawaida huwa kinyume: wazo la factor kwanza, backtest pili, na kanuni ya sizing haipo kabisa. Hazina ya mazoezi inayoambatana na kitabu hicho (ina nyota 333, katika tarehe hiyo hiyo) imepangwa kuzunguka maelezo yaliyoandikwa ya kazi badala ya code iliyokamilika, huku msomaji akimwelekeza msaidizi wa AI kuitekeleza. Kusoma code ambayo hukuandika bado ni ujuzi unaoamua kila kitu kinachofuata, kwa sababu kila hitilafu inayofuata hujificha ndani ya maelezo moja ya utekelezaji.

Hatua ya kwanza: pata data, kisha fafanua kundi la utafiti

Kusafisha data ni nusu inayoonekana ya kazi ya data: miamala iliyorekodiwa kimakosa, vipindi vya biashara vinavyokosekana, na marekebisho ya split na gawio. Kuchagua majina ya kuchunguza ni nusu isiyoonekana, na hapo ndipo upendeleo wa survivorship bias huanza, kabla hata ya kuwepo kwa mstari wa msimbo wa mkakati. Chukua kila ticker ya Marekani iliyokuwa na muamala katika wiki moja ya Juni, kwa kila mwaka mmoja baada ya mwingine, kisha uliza ni mingapi ilikuwa bado ikiuzwa katika wiki hiyo hiyo ya 2026.

UlizaTicker za Marekani zinazofanya biashara katika wiki moja ya Juni, na ni ngapi bado zilifanya biashara Juni 2026
SQL halisi nyuma ya kila namba
WITH june_week AS (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
           ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toMonth(toTimeZone(window_start, 'America/New_York')) = 6
      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 16
      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2026
      AND volume > 0
    GROUP BY year, ticker
),
survivors AS (
    SELECT ticker FROM june_week WHERE year = 2026
)
SELECT year,
       uniqExact(ticker) AS tickers_traded,
       uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors)) AS still_trading_2026,
       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors))
             / uniqExact(ticker), 1) AS still_trading_pct
FROM june_week
GROUP BY year
ORDER BY year
Run this yourself

Kati ya ticker 8224 zilizofanya biashara katika wiki hiyo ya 2016, 50% zilikuwa bado zikifanya biashara katika wiki hiyo hiyo ya 2026. Nyingine zilinunuliwa, ziliunganishwa, zilibadilisha majina, au zilitolewa kwenye orodha ya biashara. Backtest iliyoundwa kutokana na orodha ya leo huchunguza majina yaliyofanikiwa tu, na huipa mkakati sifa kwa kushikilia kampuni zilizochaguliwa baada ya ukweli kutokea. Feed ya anayeanza itakupatia orodha hiyo ya walionusurika bila onyo: mwongozo wa API ya data ya bure ya soko la hisa unaeleza data hizo zinabeba nini na hazibebi nini.

Hatua ya pili: geuza data kuwa signal

Signal ni kanuni inayopima hisa kwa wakati fulani, na factor ni signal unayoamini inafanya kazi kwa hisa nyingi kwa wakati mmoja. Momentum, value na low volatility ni mifano ya kawaida katika vitabu vya kiada. Tatizo katika hatua hii ni kujaribu kanuni hadi moja ifanye kazi. Tofauti ishirini za crossover ya moving average kwenye muongo mmoja wa index moja zitatoa mshindi kila mara, na mshindi huyo huwa ni toleo lililoendana zaidi na kelele za data. Kinga dhidi ya tatizo hili si ya kuvutia: weka kanuni kabla ya kuipima, tenga sehemu ya historia ambayo huitazami kamwe, hesabu kila toleo ulilojaribu, na pendelea nambari chache za kurekebisha. XQuant inaweka sura nzima kuhusu jambo hili kabla ya utafiti wa factor, na huo ndio mpangilio sahihi.

Hatua ya tatu: backtest, ambapo wanaoanza wengi huacha

Hii ndiyo hatua inayokomesha miradi mingi ya kujifunza mwenyewe, na huikomesha kimya kimya ikiwa na equity curve inayovutia sana. Survivorship, iliyotajwa hapo juu, ndiyo kosa la kwanza kati ya mawili. Look-ahead bias ni kosa la pili: mkakati hutumia namba ambayo saa haikuwa bado imewasilisha wakati agizo lilipaswa kuingizwa. Toleo linalotokea mara nyingi ni kanuni inayokokotolewa kwa kutumia bei ya kufunga ya leo na kutekelezwa kwa bei hiyo hiyo ya kufunga. Pima umbali unaopuuzwa na dhana hiyo.

UlizaUmbali wa wastani kutoka kufungwa kwa kipindi kimoja hadi kufunguliwa kwa kipindi kinachofuata, kwa mwezi
SQL halisi nyuma ya kila namba
WITH sessions AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMin(open, window_start) AS session_open,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'NVDA')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
gaps AS (
    SELECT ticker,
           session,
           toFloat64(session_open) AS open_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM sessions
)
SELECT formatDateTime(toStartOfMonth(session), '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(toStartOfMonth(session), 'MMMM yyyy') AS month_label,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'SPY'), 1) AS spy_gap_bps,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'NVDA'), 1) AS nvda_gap_bps
FROM gaps
WHERE prev_close > 0
GROUP BY month, month_label
HAVING countIf(ticker = 'SPY') > 0 AND countIf(ticker = 'NVDA') > 0
ORDER BY month
Run this yourself

Katika July 2026, wastani wa umbali kati ya bei moja ya kufunga na print inayofuata ya kufungua ulipima 40.8 basis points kwa SPY na 107.4 kwa NVDA. Basis point ni sehemu moja ya mia ya pointi ya asilimia. Miezi yote 24 kwenye paneli, kuanzia August 2024, iko juu ya sifuri. Backtest inayofanya uamuzi wakati wa kufunga na kutekeleza kwa bei hiyo ya kufunga hukusanya umbali huo bila gharama kwenye kila trade, ilhali hakuna agizo la live linalofanya hivyo. Look-ahead bias katika backtesting inachambua utaratibu huo, na kwa nini hisa hupanda au kushuka kwa pengo usiku kucha inaeleza pengo lenyewe.

Hatua ya nne: amua kiasi cha kununua

Tatizo hapa ni kutokuwepo kwa kanuni. Wafanyabiashara wengi waliojifunza wenyewe huwa hawaandiki kanuni ya kuamua ukubwa wa nafasi. Hivyo, kwa bahati mbaya huwa na kanuni fulani, kwa kawaida ikiweka kiasi sawa cha fedha kwa kila jina au kutumia fedha yoyote ya taslimu iliyopo. Kiasi sawa cha fedha si sawa na hatari sawa.

UlizaMabadiliko ya kila siku ya miezi kumi na miwili: tetemeko la mwaka na kipindi kibaya zaidi, majina manane
SQL halisi nyuma ya kila namba
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'AAPL', 'NVDA', 'TSLA', 'COIN')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
rets AS (
    SELECT ticker,
           toFloat64(session_close) AS close_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM daily
)
SELECT ticker,
       round(stddevSamp(close_px / prev_close - 1) * sqrt(252) * 100, 1) AS annualized_vol_pct,
       round(abs(min(close_px / prev_close - 1)) * 100, 2) AS worst_day_pct
FROM rets
WHERE prev_close > 0
GROUP BY ticker
ORDER BY annualized_vol_pct DESC
Run this yourself

Katika miezi kumi na miwili iliyoishia Julai 31, 2026, COIN ilionyesha volatility ya mwaka ya 68%, ikilinganishwa na 12.7% ya SPY, iliyokuwa kwenye upande tulivu wa kundi lililochambuliwa. Kipindi chake kibaya zaidi cha siku moja kilifungwa 13.34% chini ya bei ya kufunga ya siku iliyotangulia, huku siku yake mbaya zaidi katika SPY ikiwa 2.69%. Kuweka kiasi sawa cha fedha katika kila jina kunanunua mabadiliko tofauti sana ya kila siku. Kwa anayeanza, mabadiliko hayo ndiyo anayoyapata moja kwa moja, si signal. ukubwa wa nafasi kwa kigezo cha Kelly inaeleza jibu moja rasmi, na hatari ya mkusanyiko inaonyesha muundo wa jibu lisilo rasmi.

Hatua ya tano: utekelezaji na gharama ambazo backtest husahau

Gharama mbili, moja inaonekana. Commission na ada za udhibiti huonekana kwenye taarifa ya akaunti. Slippage haionekani: ni tofauti kati ya bei iliyo kwenye skrini na bei unayopata. Kiwango chake cha chini ni bid-ask spread, yaani tofauti kati ya bei bora ya kununua na bei bora ya kuuza wakati huo. Wanunuzi hulipa ask na wauzaji hugonga bid, hivyo muamala wa kwenda na kurudi huvuka spread hiyo mara mbili. Spread si ya kudumu.

UlizaSpread wastani iliyonukuliwa kwa kila nusu saa ya ET: AAPL na KO, Ijumaa tarehe 17 Julai 2026
SQL halisi nyuma ya kila namba
WITH quotes AS (
    SELECT ticker,
           toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE) AS bucket,
           toFloat64(ask_price - bid_price) / toFloat64((ask_price + bid_price) / 2) * 10000 AS spread_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO')
      AND sip_timestamp >= toDateTime('2026-07-17 13:00:00')
      AND sip_timestamp < toDateTime('2026-07-17 21:00:00')
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT formatDateTime(bucket, '%H:%i') AS et_time,
       round(avgIf(spread_bps, ticker = 'AAPL'), 2) AS aapl_spread_bps,
       round(avgIf(spread_bps, ticker = 'KO'), 2) AS ko_spread_bps
FROM quotes
WHERE spread_bps > 0 AND spread_bps < 500
GROUP BY et_time
HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0
ORDER BY et_time
Run this yourself

Jopo linajumuisha 16 vipindi vya nusu saa vya Ijumaa moja, kuanzia kipindi cha 09:00 kabla ya kengele ya ufunguzi hadi kipindi cha 16:30 baada ya kufungwa kwa soko. AAPL ilikuwa na spread ya 10.53 basis points katika kipindi cha kwanza na 3.27 katika cha mwisho, huku KO ikiwa na 28.87 na 8.04. Nukuu zilizokuwa na spread ndogo zaidi siku hiyo ziko katikati ya chati, kati ya ncha hizo mbili. Strategy inayofanya biashara wakati wa ufunguzi kwa kutumia majina mawili yenye liquidity kubwa zaidi sokoni hulipa gharama tofauti na toleo lake la mchana, na backtest inayodhani gharama ni sifuri haikadirii gharama yoyote kati ya hizo. Bid-ask spread huainisha namba hiyo, kwa nini spread huongezeka wakati wa ufunguzi hufafanua mwinuko wa mstari, na gharama ya kufanya biashara ya hisa hukusanya gharama za muamala kamili wa kwenda na kurudi. Kati ya backtest safi na fedha halisi kuna hatua moja zaidi: paper trading kabla ya kutumia fedha halisi.

Ni sehemu zipi za mtaala wa hisa A zinazohamishika kwenye hisa za Marekani?

XQuant na wenzao zimeandaliwa kwa ajili ya hisa na ETF za A za China. Mbinu hiyo inahamishika bila kubadilishwa: mpangilio wa hatua, fasili, nidhamu ya kuepuka overfitting, utaratibu wa kuandika gharama kama kipengele tofauti badala ya kuziacha kama jambo la baadaye, pamoja na kila sehemu ya hesabu za ukubwa wa nafasi. Vipau vya bei hubaki vipau vya bei. Kinachobadilika ni kanuni zinazovizunguka.

  • Hisa A zina kizuizi halisi cha T+1: hisa iliyonunuliwa leo haiwezi kuuzwa hadi kikao kinachofuata. T+1 ya Marekani ni utaratibu wa settlement na haizuii biashara ya siku hiyo, ingawa kanuni ya pattern day trader huweka akaunti za margin zenye chini ya $25,000 kwenye kikomo cha biashara tatu za siku ndani ya siku tano za biashara.
  • Hisa A za bodi kuu zina kikomo cha mabadiliko ya 10% kwa siku, na 20% kwa growth boards. Hisa za Marekani hazina kikomo cha kila siku; badala yake, kusitishwa kwa biashara hutokana na volatility bands na news halts.
  • Oda za hisa A zinafanya biashara kwa lots za hisa 100. Brokers wengi wa Marekani hutekeleza ununuzi wa fractional shares, jambo linalobadilisha hata kile ambacho kanuni ya kuweka ukubwa wa nafasi inaweza kueleza.
  • China hutoza stamp duty upande wa mauzo. Wauzaji wa Marekani hulipa regulatory fees ndogo zenye ukubwa na muundo tofauti.
  • Muundo wa vikao unatofautiana, ukiwemo muda wa mapumziko ya mchana huko Shanghai na Shenzhen. Saa za soko la hisa la Marekani huendelea bila kukatika na kumalizika kwa closing auction.

Gharama au kigezo chochote cha muda kinachonakiliwa kutoka kwenye kozi na kuingizwa kwenye msimbo wako ni hitilafu inayosubiri oda ya kwanza ya moja kwa moja.

Bandika marejeo, si README

Kufikia Agosti 2026, hazina hiyo haina matoleo yaliyowekwa tagi. Kwa hiyo, rejeo la kudumu ni commit: 016b66e, ya tarehe 14 Julai 2026. Hilo ni muhimu kwa kitabu ambacho bado kinaandikwa. Nambari za sura hubadilika, faili za README huandikwa upya, vichwa huhamishwa, na kiungo kilichoelekeza kwenye sura ya saba kinaweza kimyakimya kuelekeza sehemu nyingine. Taja commit na tarehe, rekodi kichwa cha sura uliyosoma badala ya nambari yake, na maelezo yako yataendelea kuthibitishwa mwaka mmoja baadaye. Muswada umechapishwa chini ya CC BY-NC-SA 4.0, huku hati za ujenzi zikiwa chini ya MIT. Nidhamu hiyo hiyo ndiyo somo la mwisho la mtaala wenyewe: mkakati ambao huwezi kuutekeleza tena kwa kutumia data snapshot iliyobandikwa ni simulizi, si matokeo.

Maswali Yanayoulizwa Mara kwa Mara

Je, unaweza kujifunza quant trading kupitia kitabu cha bure cha open source?

Kwa upande wa ramani ya kujifunza, ndiyo. Manuskripti iliyo wazi hukuwezesha kuthibitisha kila dai dhidi ya chanzo chake. Kile ambacho kitabu hakiwezi kutoa ni data, gharama na kanuni za soko lako. Hapo ndipo mtaala ulioandaliwa kwa ajili ya exchange moja huacha kuendana na broker wako.

Ni hatua gani ya mtaala wa quant inayowakwaza zaidi wanaoanza?

Backtest. Makosa mawili hutokea hapo, na yote mawili hufanya matokeo yaonekane bora: survivorship, inayotokana na kuunda universe baada ya tukio, na look-ahead, inayotokana na kujaza oda kwa bei ambayo saa ya soko ilikuwa bado haijachapisha. Ni 50% pekee ya tickers zilizokuwa zikifanya biashara katika wiki hiyo ya Juni ya 2016 ndizo ambazo bado zilikuwa zikifanya biashara muongo mmoja baadaye.

Kuna tofauti gani kati ya survivorship bias na look-ahead bias?

Survivorship bias ni tatizo la universe: majina yaliyokuwa yakichunguzwa yalichaguliwa kwa sababu yaliendelea kuwepo. Look-ahead bias ni tatizo la muda: mkakati unatumia namba ambayo haikuwepo wakati oda ilipaswa kuwasilishwa. Ya kwanza huongeza idadi ya majina yanayochunguzwa; ya pili huongeza ubora unaodhaniwa wa bei ya utekelezaji.

Je, kozi ya quant ya China A share inafaa kwa hisa za Marekani?

Mbinu inafaa. Kanuni za soko hazifanani. Hifadhi mpangilio wa hatua, nidhamu ya kuepuka overfitting na uhasibu wa gharama. Kisha badilisha miundombinu ya data, kizuizi cha kuuza cha T+1, mipaka ya bei ya kila siku na ukubwa wa lot kwa viwango vinavyolingana vya Marekani kabla ya kutumia fedha yoyote.


Kila paneli hapo juu ni stored query yenye SQL yake chini yake. Fungua moja, badilisha tickers au tarehe, kisha iendeshe mwenyewe kwenye terminal ya Strasmore.

#quant#learning path#backtesting#open source#beginners