Matuto ng Quant Trading sa Open Source na Aklat
Isang open source quant trading book ang naglalahad ng buong syllabus, mga aralin sa bawat yugto, karaniwang hinto ng beginners, at bahaging angkop sa US stocks.
Ang open source quant trading book ay isang libreng pampublikong syllabus. Nakadokumento rito ang buong proseso mula sa raw data hanggang sa live order, ayon sa pagkakasunod na karaniwang nararanasan ng isang beginner. Ang manuscript ng XQuant: Everyone Can Be a Quantitative Trader, na inilathala sa GitHub ng xingwudao, ay isang malinaw na halimbawa na may 686 stars noong August 2026. Binubuo ito ng siyam na chapter na sumusunod sa landas na tinatahak ng halos lahat ng quant curriculum. Sinusundan ng page na ito ang prosesong iyon stage by stage, tinutukoy ang partikular na failure sa bawat yugto, at ipinapakita kung aling mga bahagi ang nananatiling angkop sa paglipat mula sa Chinese A shares patungo sa US equities.
Ano ang nilalaman ng isang open source na aklat sa quant trading?
Alisin ang branding sa anumang beginner syllabus at limang yugto ang matitira, sa ganitong pagkakasunod-sunod: kunin at linisin ang data, bumuo ng signal mula rito, i-test ang signal laban sa historical data, magpasya kung gaano kalaki ang itataya, at saka ipadala ang order at bayaran ang mga gastos. Saklaw ng XQuant contents, batay sa commit na 016b66e noong July 14, 2026, ang parehong mga paksa sa siyam na chapter.
- Paghahanda, saka chapter one: patakbuhin ang isang buong strategy mula simula hanggang dulo.
- Chapter two, ano ang bibilhin: magsimula sa tatlong ETF.
- Chapter three, gaano karami ang bibilhin: tatlong paraan ng allocation, at ihambing ang mga resulta ng mga ito.
- Chapter four, kailan magti-trade: rebalancing, stop loss, take profit.
- Chapter five, paano malalaman kung mahusay ang isang strategy: apat na pananaw.
- Chapter six, huwag agad magdiwang: pag-iwas sa overfitting.
- Chapter seven, mula sa ideal patungo sa aktuwal: pagsasagawa ng trades.
- Chapter eight, buhay pagkatapos ng launch: monitoring, diagnosis, iteration.
- Chapter nine, paghahanap ng mga bagong oportunidad: pagpapakilala sa factor research.
Mahalagang pagtuunan ng pansin ang pagkakasunod-sunod. Nasa chapter three ang sizing, bago ang dalawang chapter tungkol sa backtest, at nasa huli ang factor research. Karaniwang kabaligtaran nito ang landas ng mga self-taught trader: ideya tungkol sa factor muna, backtest ikalawa, at walang sizing rule. Ang companion exercise repository (333 stars, parehong petsa) ay inayos batay sa mga nakasulat na task specification sa halip na finished code, kung saan inuutusan ng reader ang isang AI assistant na i-implement ang mga ito. Mahalaga pa rin ang pagbasa ng code na hindi ikaw ang sumulat, dahil dito nakasalalay ang lahat ng susunod. Ang bawat pagkabigo ay maaaring nakatago sa isang detalye ng implementation.
Unang yugto: kunin ang data, pagkatapos ay tukuyin ang universe
Ang paglilinis ang nakikitang bahagi ng data work: mga maling prints, nawawalang trading sessions, at mga adjustment para sa stock split at dividend. Ang pagpili kung aling mga pangalan ang pag-aaralan ang hindi nakikitang bahagi. Dito pumapasok ang survivorship bias, bago pa man magkaroon ng kahit isang linya ng strategy code. Kunin ang bawat US ticker na nagkaroon ng trade sa loob ng isang linggo ng June, isang taon bawat pagkakataon, at alamin kung ilan sa mga ito ang nagte-trade pa rin sa parehong linggo ng 2026.
Ang eksaktong SQL sa likod ng bawat numero
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 yearSa 8224 ticker na nag-trade sa linggong iyon ng 2016, 50% ang nagte-trade pa rin sa parehong linggo ng 2026. Ang iba ay na-acquire, nagsanib, nagpalit ng pangalan, o na-delist. Ang backtest na binuo mula sa roster ngayon ay pinag-aaralan lamang ang mga pangalang nakaligtas, at binibigyan ng kita ang isang strategy sa paghawak ng mga kumpanyang pinili batay sa kinalabasan. Ibibigay sa iyo ng isang beginner feed ang listahan ng mga survivor na iyon nang walang warning label: tinatalakay ng gabay sa libreng stock market data API kung ano ang dala at hindi dala ng mga feed na iyon.
Ikalawang yugto: gawing signal ang data
Ang signal ay isang rule na nagso-score sa isang stock sa isang partikular na panahon. Ang factor naman ay signal na pinaniniwalaan mong gumagana sa maraming stock nang sabay-sabay. Kabilang sa mga textbook example ang momentum, value, at low volatility. Ang karaniwang pagkakamali sa yugtong ito ay ang paulit-ulit na pag-test ng mga rule hanggang may gumana. Ang twenty variants ng moving-average crossover sa isang dekada ng iisang index ay palaging magbibigay ng winner. Ang winner ay yaong pinakamahusay na nakaangkop sa noise. Simple ngunit mahalaga ang mga depensa: itakda muna ang rule bago ito sukatin, magtabi ng bahagi ng history na hindi mo kailanman titingnan, itala ang bawat variant na sinubukan mo, at mas piliin ang mas kaunting tunable numbers. Inilalagay ng XQuant ang isang buong chapter bago ang factor research, at ito ang tamang pagkakasunod-sunod.
Yugto three: ang backtest, kung saan karamihan ng beginners ay humihinto
Ito ang yugto kung saan natatapos ang karamihan ng mga self-taught na proyekto. Tahimik itong nangyayari, kasama ang isang equity curve na mukhang napakaganda. Ang survivorship, na tinalakay sa itaas, ang una sa dalawang error. Ang look-ahead bias ang ikalawa: gumagamit ang strategy ng isang numero na hindi pa naibibigay ng oras nang dapat nang ipasok ang order. Ang pinakakaraniwang anyo nito ay isang rule na kinakalkula mula sa closing price ngayon at isinasagawa sa parehong closing price. Sukatin ang distansiyang nilalaktawan ng palagay na iyon.
Ang eksaktong SQL sa likod ng bawat numero
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 monthSa July 2026, ang average na distansiya sa pagitan ng isang close at ng kasunod na opening print ay 40.8 basis points para sa SPY at 107.4 para sa NVDA. Ang isang basis point ay one hundredth ng isang percentage point. Lahat ng 24 buwan sa panel, simula sa August 2024, ay nasa itaas ng zero. Ang backtest na nagpapasya sa close at nagsasagawa sa parehong close ay nakokolekta ang distansiyang iyon nang libre sa bawat trade, pero walang live order ang nakakagawa nito. Ang look-ahead bias sa backtesting ay ipinapakita nang detalyado ang mekanismo, at ipinapaliwanag ng kung bakit nagkakaroon ng gap ang mga stock overnight ang mismong gap.
Ikaapat na yugto: magpasya kung magkano ang bibilhin
Ang problema rito ay kawalan ng patakaran. Karamihan sa mga self-taught trader ay hindi kailanman nagsusulat ng panuntunan sa position sizing. Dahil dito, nagkakaroon sila ng panuntunan nang hindi sinasadya. Karaniwan itong pantay na halaga ng dolyar sa bawat pangalan o anumang cash ang available. Ang pantay na halaga ng dolyar ay hindi katumbas ng pantay na risk.
Ang eksaktong SQL sa likod ng bawat numero
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 DESCSa labindalawang buwang nagtapos noong Hulyo 31, 2026, COIN ay gumalaw sa annualized volatility na 68%, kumpara sa 12.7% para sa SPY na nasa mas kalmadong dulo ng panel. Ang pinakamalaking ibinagsak nito sa isang session ay nagsara nang 13.34% mas mababa kaysa sa nakaraang close, habang ang pinakamasamang araw sa SPY ay 2.69%. Ang parehong halaga ng dolyar sa bawat pangalan ay bumibili ng magkakaibang laki ng daily swings. Ang swing, hindi ang signal, ang aktuwal na nararanasan ng beginner. Inilalahad sa position sizing gamit ang Kelly criterion ang isang pormal na sagot, habang ipinapakita ng concentration risk ang anyo ng impormal na sagot.
Ikalimang yugto: pagpapatupad at mga gastos na hindi isinasama ng backtest
Dalawang gastos, ngunit isa lang ang nakikita. Lumalabas sa statement ang commissions at regulatory fees. Hindi lumalabas ang slippage: ito ang diperensya sa pagitan ng presyong nasa screen at presyong aktuwal mong nakukuha. Ang pinakamababang antas nito ay ang bid-ask spread, ang pagitan ng pinakamagandang buying quote at pinakamagandang selling quote sa sandaling iyon. Binabayaran ng buyers ang ask at tinatamaan ng sellers ang bid, kaya dalawang beses tumatawid dito ang isang round trip. Hindi pare-pareho ang spread.
Ang eksaktong SQL sa likod ng bawat numero
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_timeSaklaw ng panel ang 16 half-hour bucket sa isang Friday, mula sa 09:00 bucket bago tumunog ang opening bell hanggang sa 16:30 bucket pagkatapos ng close. Ang lapad ng quote ng AAPL ay 10.53 basis points sa unang bucket at 3.27 sa huli, habang nasa 28.87 at 8.04 ang KO. Nasa gitna ng chart ang pinakamahigpit na quotes ng araw, sa pagitan ng dalawang dulong ito. Iba ang gastos ng isang strategy na nagte-trade sa open ng dalawa sa pinakamalilikidong pangalan sa market kumpara sa bersiyon nito na nagte-trade sa tanghali, at walang napipresyuhan nang tama ang backtest na gumagamit ng zero-cost assumption. Tinutukoy ng bid-ask spread ang halaga, ipinapaliwanag ng kung bakit lumalaki ang spread sa open ang kurba, at tinatantiya ng magkano ang gastos sa pag-trade ng isang stock ang buong round trip. Sa pagitan ng malinis na backtest at totoong pera ay may isa pang hakbang: paper trading bago ang totoong pera.
Aling mga bahagi ng A share curriculum ang naaangkop sa US stocks?
Ang XQuant at mga katulad nitong materyal ay isinulat para sa Chinese A shares at ETFs. Buo pa ring naaangkop ang method: ang pagkakasunod-sunod ng mga stage, ang mga definition, ang disiplina laban sa overfitting, ang nakasanayang pagtatala ng costs bilang line item sa halip na pahabol, at lahat ng bahagi ng sizing arithmetic. Price bars pa rin ang price bars. Ang hindi naaangkop ay ang mga patakaran sa paligid ng mga ito.
- May tunay na T+1 restriction ang A shares: ang stock na binili ngayon ay hindi maaaring ibenta hanggang sa susunod na session. Ang US T+1 ay settlement convention at walang hinaharang na intraday trading, bagama’t nililimitahan ng patakaran sa pattern day trader ang margin accounts na may mas mababa sa $25,000 sa tatlong day trades sa loob ng limang business days.
- Humihinto sa 10% daily move ang main-board A shares, at 20% naman sa growth boards. Walang daily cap ang US stocks. Sa halip, nagkakaroon ng mga pause dahil sa volatility bands at news halts.
- Ang mga order sa A shares ay tine-trade sa lots na tig-100 shares. Maraming US brokers ang nagfi-fill ng fractional shares, kaya nagbabago kung ano ang maaaring ipahayag ng isang sizing rule.
- Naniningil ang China ng stamp duty sa sell side. Ang mga US seller ay nagbabayad ng maliliit na regulatory fees na iba ang laki at istruktura.
- Magkaiba ang session structure, kabilang ang midday break sa Shanghai at Shenzhen. Ang trading hours ng US stock market ay tuloy-tuloy at nagtatapos sa closing auction.
Anumang cost o timing constant na kinopya mula sa isang course papunta sa sarili mong code ay bug na naghihintay sa unang live order.
I-pin ang reference, hindi ang README
Walang tagged releases ang repository hanggang August 2026, kaya ang matibay na citation ay isang commit: 016b66e, na may petsang July 14, 2026. Mahalaga ito para sa isang aklat na ginagawa pa. Nagbabago ang mga numero ng chapter, muling isinusulat ang README files, gumagalaw ang mga heading, at ang link na dating tumutukoy sa chapter seven ay maaaring tahimik na tumukoy sa ibang bagay. I-cite ang commit at petsa, itala ang title ng chapter na binasa mo sa halip na ang numero nito, at mananatiling mabe-verify ang iyong mga tala makalipas ang isang taon. Inilathala ang manuscript sa ilalim ng CC BY-NC-SA 4.0, habang ang build scripts ay nasa ilalim ng MIT. Ang parehong disiplina ang huling aral ng syllabus mismo: ang strategy na hindi mo muling ma-run mula sa isang pinned data snapshot ay isang kuwento, hindi resulta.
Mga FAQ
Matututuhan ba ang quant trading mula sa libreng open source na libro?
Para sa roadmap, oo. Hinahayaan ka ng open manuscript na suriin ang bawat claim laban sa source nito. Hindi maibibigay ng libro ang data, mga gastos, at mga panuntunan ng sarili mong market. Dito karaniwang hindi na tugma sa broker mo ang syllabus na isinulat para sa isang exchange.
Aling yugto ng quant curriculum ang pinakamaraming baguhan ang hindi nalalampasan?
Ang backtest. May dalawang error dito, at kapwa pinapaganda ng mga ito ang resulta: survivorship, mula sa universe na binuo pagkatapos mangyari ang mga kaganapan, at look-ahead, mula sa paglalagay ng trade sa presyong hindi pa naipri-print ng market clock. 50% lamang ng mga ticker na nagte-trade noong linggong iyon ng Hunyo ng 2016 ang nagte-trade pa makalipas ang isang dekada.
Ano ang pagkakaiba ng survivorship bias at look-ahead bias?
Ang survivorship bias ay problema sa universe: pinili ang mga stock na sinusuri dahil nakaligtas ang mga ito. Ang look-ahead bias ay problema sa timing: gumagamit ang strategy ng numerong hindi pa umiiral noong dapat ipasok ang order. Pinapalaki ng una ang roster; pinapaganda naman ng ikalawa ang fill.
Gumagana ba ang isang Chinese A share quant course para sa US stocks?
Gumagana ang method. Hindi gumagana ang market rules. Panatilihin ang pagkakasunod-sunod ng mga yugto, disiplina laban sa overfitting, at cost accounting. Pagkatapos, palitan ang data plumbing, T+1 selling restriction, daily price limits, at lot sizes ng mga katumbas sa US bago ilipat ang anumang pera.
Ang bawat panel sa itaas ay isang stored query na may kasamang SQL. Buksan ang isa, palitan ang mga ticker o petsa, at patakbuhin ito mismo sa Strasmore terminal.