วิธีสร้างคลังข้อมูลหุ้น A-share สำหรับ AI Agents
ashare-lake ช่วยสร้างคลังข้อมูลหุ้น A-share ไว้ในเครื่องด้วยชุดข้อมูล 39 รายการ รองรับการสืบค้นข้อมูลย้อนหลังและข้อมูลหุ้นที่ถูกเพิกถอน พร้อมเซิร์ฟเวอร์ MCP สำหรับ AI agents
การสร้างคลังข้อมูลหุ้น A-share ไว้ใช้งานเอง
คลังข้อมูลหุ้น A-share ในระดับท้องถิ่น คือประวัติข้อมูลตลาดหุ้นจีนแผ่นดินใหญ่ที่จัดเก็บไว้ในดิสก์ของคุณเองในรูปแบบไฟล์ Parquet แบบคอลัมน์ ซึ่งสามารถอ่านได้ด้วย DuckDB หรือ Polars แทนที่จะต้องเรียกผ่านจุดเชื่อมต่อของผู้ให้บริการทีละหน้า ashare-lake เป็นโครงการโอเพนซอร์สที่สร้างคลังข้อมูลดังกล่าวขึ้นมา พร้อมด้วยงานประมวลผลรายวันที่คอยอัปเดตข้อมูลให้เป็นปัจจุบัน และเซิร์ฟเวอร์ Model Context Protocol ที่ช่วยให้ AI agent สามารถสืบค้นข้อมูลได้ ทางเลือกในการออกแบบสองประการที่ทำให้โครงการนี้ควรค่าแก่การกล่าวถึงคือ การเก็บรายชื่อหุ้นที่ถูกเพิกถอนไว้ และความสามารถในการอ่านข้อมูลปัจจัยพื้นฐาน ณ วันที่ย้อนหลังได้
เหตุผลที่ AI agent จำเป็นต้องมีคลังข้อมูล A-share ในระดับท้องถิ่น
Agent ที่ทำการวิจัยหุ้นจีนโดยไม่มีสำเนาข้อมูลในระดับท้องถิ่นมีทางเลือกอยู่สองทาง ทางแรกคือการดึงข้อมูลจากหน้าเว็บไซต์การเงิน ซึ่งทำให้เสียพื้นที่ context window ไปกับโค้ด HTML และได้ตัวเลขที่ไม่มีใครสามารถตรวจสอบซ้ำได้ในเดือนถัดไป หรือทางที่สองคือการเรียกใช้บริการจากผู้ให้บริการที่ต้องลงทะเบียน ซึ่งมีการจำกัดจำนวนแถวข้อมูลและผูกผลลัพธ์ทุกรายการไว้กับบัญชีผู้ใช้
ขนาดของข้อมูลเป็นสิ่งที่มักถูกประเมินต่ำเกินไป คลังข้อมูลของเราเก็บข้อมูลเทปการซื้อขายของสหรัฐฯ ที่ความละเอียดระดับนาที ซึ่งในสัปดาห์ปกติทั่วไปจะมีลักษณะดังนี้:
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%b %e') AS session_label,
uniqExact(ticker) AS tickers_count,
round(count() / 1000000, 2) AS minute_bars_millions
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-20')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-24')
GROUP BY session, session_label
ORDER BY sessionในวันที่ Jul 20 เทปการซื้อขายสร้างข้อมูล minute bars จำนวน 1.79 ล้านรายการจากสัญลักษณ์ 11737 ตัว และอีกสี่ช่วงการซื้อขายที่เหลือในตารางก็มีลักษณะเช่นเดียวกัน นี่คือหนึ่งตลาดระดับประเทศ หนึ่งสัปดาห์ และหนึ่งความละเอียด ข้อมูล daily bars ย้อนหลังสิบปี ข้อมูลปัจจัยพื้นฐาน ข้อมูลสมาชิกดัชนี และบันทึกกระแสเงินทุนของอีกตลาดหนึ่งก็มีรูปแบบเดียวกัน และการดึงข้อมูลผ่าน HTTP จะทำให้การประมวลผลของ agent สิ้นเปลืองทรัพยากรโดยเปล่าประโยชน์
การมีคลังข้อมูลในระดับท้องถิ่นช่วยเปลี่ยนแปลงสองสิ่งพร้อมกัน การอ่านข้อมูลจะกลายเป็นการสแกนไฟล์แทนการถูกจำกัดโควตา และคำสั่ง query ที่เขียนขึ้นในวันนี้จะให้ผลลัพธ์เป็นแถวข้อมูลเดิมในอีกหกเดือนข้างหน้า ซึ่งเป็นสิ่งที่จำเป็นสำหรับการตรวจสอบผลการทดสอบย้อนหลัง (backtest) บันทึกของเราในหัวข้อ ทักษะด้านข้อมูลตลาดสำหรับ AI agents และ SQL API สำหรับข้อมูลตลาด ได้นำเสนอข้อโต้แย้งในลักษณะเดียวกันสำหรับข้อมูลของสหรัฐฯ
การติดตั้งและกำหนดเวอร์ชัน
ใช้ Python 3.10 หรือใหม่กว่า โดยต้องกำหนดเวอร์ชันให้คงที่ เนื่องจากมีการออกรุ่นใหม่ถึงหกรุ่นในช่วงระหว่างวันที่ 27 กรกฎาคม ถึง 2 สิงหาคม 2026 การติดตั้งโดยไม่ระบุเวอร์ชันในสคริปต์ตั้งค่าของเอเจนต์จะทำให้เกิดความไม่แน่นอน โค้ดดังกล่าวอยู่ที่ rootSunc/ashare-lake ภายใต้สัญญาอนุญาต Apache 2.0
pip install ashare-lake==0.5.0ติดตั้งรุ่นปัจจุบัน ณ ช่วงต้นเดือนสิงหาคม 2026asl --versionแสดงรุ่นที่ติดตั้งasl config init --data-root /path/to/ashare-lakeเขียนไฟล์ตัวอย่าง TOML โดยระบุ root ข้อมูลของคุณลงไป ไม่จำเป็นต้อง checkout repository--configกำหนดเส้นทางไฟล์ผลลัพธ์ และ--forceเป็นการเขียนทับasl doctorดำเนินการตรวจสอบแบบออฟไลน์ก่อนที่จะมีการเคลื่อนย้ายข้อมูลใด ๆasl servers testตรวจสอบโฮสต์ข้อมูลราคาต้นทางasl sourcesตรวจสอบแต่ละแหล่งข้อมูล โดยมี--vantageเป็นcn,overseasหรือlocal
หยุดเพียงเท่านี้ คำสั่งถัดไปคือการทำ backfill ซึ่งไม่ใช่สิ่งที่ควรเรียกใช้งานในขณะที่กำลังอ่านคำแนะนำ
หน้าที่ของระบบ backfill
asl init ทำหน้าที่สร้างโครงสร้างไดเรกทอรีและเติมข้อมูลย้อนหลัง เอกสารของโครงการระบุว่าการรันข้อมูลเต็มรูปแบบต้องใช้เวลาหลายชั่วโมงและพื้นที่จัดเก็บข้อมูลหลาย GB อีกทั้งยังจำเป็นต้องมีการเชื่อมต่อแบบสดกับโฮสต์ข้อมูลราคาของ Tongdaxin ซึ่งเป็นสิ่งที่ asl servers test ตรวจสอบ ในขณะที่ asl init --profile quick จะครอบคลุมข้อมูลย้อนหลังเพียงสามปีล่าสุด โดยใช้เวลาเพียงไม่กี่นาที และยังคงเก็บชื่อหลักทรัพย์ทุกตัวที่มีการซื้อขายในช่วงเวลาดังกล่าว รวมถึงหลักทรัพย์ที่ออกจากตลาดไปแล้วด้วย ส่วน asl run daily เป็นงานที่ทำแบบเพิ่มข้อมูลในภายหลัง asl status --datasets จะรายงานความครอบคลุมและความสดใหม่ของข้อมูลในแต่ละชุด และ asl serve จะแสดงแดชบอร์ดแบบอ่านอย่างเดียวที่ 127.0.0.1:8787
ที่เก็บข้อมูลนี้ไม่ได้จัดส่งข้อมูลใด ๆ มาให้เลย ไฟล์ Parquet ทุกไฟล์จะถูกสร้างขึ้นบนเครื่องของคุณ โดยมีข้อมูลที่มาของข้อมูลในระดับแถว (row-level lineage) บันทึกไว้ในแต่ละแถวว่าแหล่งข้อมูลใดเป็นผู้ผลิตและถูกดึงข้อมูลมาเมื่อใด
ชุดข้อมูลทั้ง 39 รายการคืออะไร
ชุดข้อมูลเหล่านี้ถูกจัดเรียงเป็นชั้น เริ่มจากข้อมูลอ้างอิงออกไปจนถึงข้อมูลส่วนนอก ประกอบด้วยตารางที่ผ่านการคัดสรร 36 ตาราง และตารางที่ได้จากการคำนวณอีก 3 ตาราง
- ข้อมูลอ้างอิง: ตราสาร, ปฏิทินการซื้อขายครอบคลุมปี 2016 ถึง 2027, สถานะการซื้อขาย
- ข้อมูลตลาด: กราฟรายวัน, กราฟดัชนี, กราฟช่วง 1 นาทีและ 5 นาที, ข้อมูลการซื้อขายรายรายการ (trade ticks), กราฟสินค้าโภคภัณฑ์, ปัจจัยปรับปรุงราคา, เหตุการณ์การเพิกถอนหลักทรัพย์
- เหตุการณ์องค์กร: การดำเนินการของบริษัท, ดัชนีการประกาศข่าว, ตารางการเปิดเผยผลประกอบการ
- ปัจจัยพื้นฐานและการประเมินมูลค่า: รายการในงบการเงิน, ตัวชี้วัดมูลค่า, ฉันทามติจากนักวิเคราะห์
- กระแสเงินทุน: กระแสเงินกองทุน, การซื้อขายมาร์จิ้น, กระแสเงินทุนและยอดถือครองผ่านช่องทาง Northbound, ข้อมูลการเปิดเผยคำสั่งซื้อขายขนาดใหญ่ (dragon-tiger board), การทำรายการซื้อขายล็อตใหญ่ (block trades), ยอดถือครองของสถาบัน
- โครงสร้างและอุตสาหกรรม: สมาชิกในกลุ่มอุตสาหกรรม, องค์ประกอบของดัชนี, สมาชิกในกลุ่มธุรกิจ, ดัชนีอุตสาหกรรม
- ข้อมูลมหภาค: ตัวชี้วัดทางเศรษฐกิจมหภาค, ความกว้างของตลาด (market breadth), ปฏิทินเศรษฐกิจ
- ความเชื่อมั่นและการหมุนเวียน: คะแนนความเชื่อมั่น, อันดับความนิยม, กราฟรายกลุ่มอุตสาหกรรม, กระแสเงินทุนรายกลุ่มอุตสาหกรรม, หัวข้อข่าว, บริการข่าวสารด่วน
- ความเสี่ยงและการกำกับดูแล: ตารางการปลดล็อกหุ้น, เหตุการณ์ด้านกฎระเบียบ
ตำแหน่งที่ชุดข้อมูลนั้นตั้งอยู่บ่งบอกถึงสิ่งที่ผู้เขียนให้ความสำคัญ ปัจจัยปรับปรุงราคาและเหตุการณ์การเพิกถอนหลักทรัพย์ถูกจัดอยู่ในชั้นข้อมูลตลาดเคียงคู่กับกราฟรายวัน ไม่ได้ถูกแยกไปไว้ในภาคผนวก ซึ่งการจัดวางเช่นนี้คือส่วนที่มีมูลค่ามากที่สุดของโครงการสำหรับผู้ที่ต้องการทดสอบแนวคิดกับข้อมูลย้อนหลัง
วิธีที่ฐานข้อมูลท้องถิ่นจัดการกับอคติจากการอยู่รอด (Survivorship Bias)
อคติจากการอยู่รอด (Survivorship bias) เกิดขึ้นเมื่อขอบเขตการศึกษาถูกจำกัดอยู่เพียงรายชื่อบริษัทที่ยังคงจดทะเบียนอยู่ในปัจจุบัน บริษัททั้งหมดที่ควบรวมกิจการ เปลี่ยนสถานะเป็นบริษัทนอกตลาด หรือถูกเพิกถอนหุ้นออกไปจะหายไปอย่างเงียบเชียบ และบริษัทที่หายไปเหล่านั้นมักไม่ใช่บริษัทที่ประสบความสำเร็จ
คลังข้อมูลของเราสามารถประเมินช่องว่างนี้สำหรับตลาดสหรัฐฯ ได้ โดยใช้หลักการคำนวณเดียวกันแต่เปลี่ยนบริบท ในแต่ละปี ให้เลือกทุกสัญลักษณ์ (symbol) ที่มีการบันทึกราคาแบบรายนาทีในช่วงสัปดาห์ที่สองของเดือนมีนาคม จากนั้นตรวจสอบว่าสัญลักษณ์ใดบ้างที่ยังคงมีการซื้อขายในช่วงสองสัปดาห์สุดท้ายของเดือนมิถุนายน 2026:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH on_tape_now AS (
SELECT ticker
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-20')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
GROUP BY ticker
),
cohort AS (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS cohort_year,
ticker
FROM global_markets.delayed_stocks_minute_aggs
WHERE toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2025
AND toMonth(toTimeZone(window_start, 'America/New_York')) = 3
AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 14
GROUP BY cohort_year, ticker
)
SELECT c.cohort_year AS year,
count() AS names_on_tape_count,
countIf(n.ticker != '') AS still_trading_count,
count() - countIf(n.ticker != '') AS gone_count,
round(100 * countIf(n.ticker != '') / count(), 1) AS still_trading_pct
FROM cohort AS c
LEFT JOIN on_tape_now AS n ON c.ticker = n.ticker
GROUP BY year
ORDER BY yearจากจำนวน 8101 สัญลักษณ์ที่มีการซื้อขายในสัปดาห์นั้นของ 2016 มีเพียง 50.1% สัญลักษณ์ที่ยังคงปรากฏอยู่บนกระดานในช่วงปลายเดือนมิถุนายน 2026 และอีก 4040 สัญลักษณ์ที่หายไป กลุ่มตัวอย่าง 2025 มีค่าเท่ากับ 86.7% หากคุณใช้การคัดกรองหุ้นจากรายชื่อปัจจุบันย้อนกลับไปในช่วง 10 ปีที่ผ่านมา คุณจะพบว่าสัดส่วนของตลาดที่ถูกตัดออกจะเพิ่มขึ้นเรื่อยๆ ตามระยะเวลาที่ย้อนกลับไป
ข้อสันนิษฐานที่มักเข้าใจผิดคือบริษัทที่หายไปทั้งหมดเป็นเพียงหุ้นราคาต่ำ (penny stocks) แต่เมื่อจัดกลุ่มหุ้นในเดือนมีนาคม 2021 ตามมูลค่าการซื้อขายเฉลี่ยต่อวันในเดือนนั้น ผลลัพธ์กลับแสดงให้เห็นในทางตรงกันข้าม:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH on_tape_now AS (
SELECT ticker
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-20')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
GROUP BY ticker
),
march_2021 AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume))
/ uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS avg_daily_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-03-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2021-03-31')
GROUP BY ticker
)
SELECT multiIf(d.avg_daily_dollar_volume >= 1000000000, '$1B or more',
d.avg_daily_dollar_volume >= 100000000, '$100M to $1B',
d.avg_daily_dollar_volume >= 10000000, '$10M to $100M',
d.avg_daily_dollar_volume >= 1000000, '$1M to $10M',
'under $1M') AS liquidity_bucket,
count() AS names_count,
countIf(n.ticker = '') AS gone_count,
round(100 * countIf(n.ticker = '') / count(), 1) AS gone_pct
FROM march_2021 AS d
LEFT JOIN on_tape_now AS n ON d.ticker = n.ticker
GROUP BY liquidity_bucket
ORDER BY min(d.avg_daily_dollar_volume)กลุ่ม under $1M สูญเสียสัดส่วนไปมากที่สุด คือ 57.5% จากจำนวน 3968 สัญลักษณ์ กลุ่มที่มีการซื้อขายหนาแน่นที่สุดก็ไม่ได้รับการยกเว้น โดย 3.4% จากจำนวน 89 สัญลักษณ์ที่มีการซื้อขาย $1B or more ต่อวันในเดือนมีนาคม 2021 ได้หายไปในช่วงปลายเดือนมิถุนายน 2026 การควบรวมกิจการ การเปลี่ยนสถานะเป็นบริษัทนอกตลาด การล้มละลาย และการถูกถอดออกจากดัชนี ล้วนจบลงด้วยรูปแบบเดียวกันในตารางราคา คือแถวข้อมูลสิ้นสุดลง
ashare-lake ถือว่าเรื่องนี้เป็นปัญหาสำคัญระดับต้น ชุดข้อมูลเครื่องมือทางการเงินจะเก็บรักษาสัญลักษณ์ที่ถูกเพิกถอนไว้แทนที่จะกรองให้เหลือเพียงหุ้นที่ยังซื้อขายอยู่ โดยมีตาราง delisting_events บันทึกสาเหตุการหายไปของแต่ละชื่อ และ universe="all_a" ใน Python API จะช่วยดึงข้อมูลภาพรวมในอดีตที่รวมหุ้นเหล่านั้นไว้ด้วย เอกสารของโครงการระบุว่ามีความแตกต่างประมาณสองเท่าระหว่างการทำ backtest ที่ใช้เฉพาะหุ้นที่ยังอยู่ กับการทำ backtest ที่รวมหุ้นที่ถูกเพิกถอนในช่วงปี 2016 ถึง 2021 ซึ่งเป็นภาพสะท้อนของกับดักในบันทึกเรื่อง อคติจากการมองเห็นอนาคตในการทำ backtesting ของเรา นั่นคือการใช้จักรวาลข้อมูลที่รับรู้ถึงอนาคตโดยไม่รู้ตัว
การอ่านข้อมูล ณ จุดเวลาใดเวลาหนึ่ง (Point-in-time)
load("financial_statement_items", as_of="2018-04-30") จะส่งคืนข้อมูลเวอร์ชันล่าสุดของแต่ละรายการที่ประกาศ ณ วันที่นั้นหรือก่อนหน้านั้น ไม่ใช่ตัวเลขที่มีการปรับปรุงใหม่ในภายหลัง ข้อมูลราคา (bars) จะมีอาร์กิวเมนต์ adjust กำกับไว้ ได้แก่ hfq สำหรับการปรับย้อนหลัง qfq สำหรับการปรับค่าให้เป็นมาตรฐานภายในช่วงเวลาที่สืบค้น หรือราคาดิบ ปัจจัย (factor) ที่สร้างขึ้นจากตัวเลขที่ตลาดยังไม่ได้ประกาศออกมานั้นไม่สามารถวัดผลอะไรได้เลย ซึ่งเป็นสิ่งแรกที่ต้องตรวจสอบในทุกขั้นตอนของ การสร้างอัลฟ่าแฟกเตอร์ด้วย LLM
การลงทะเบียนเป็น MCP server
Model Context Protocol คือวิธีการที่เอเจนต์ใช้ในการเลือกเครื่องมือ โดย asl mcp จะสื่อสารผ่าน stdio และไคลเอนต์จะเป็นผู้เรียกใช้งานกระบวนการดังกล่าว:
claude mcp add ashare-lake -- asl mcp --config /abs/path/to/ashare-lake.toml- ไคลเอนต์ MCP อื่น ๆ จะใช้ข้อมูลสองส่วนเหมือนกัน ได้แก่
aslในฐานะคำสั่ง และmcp --configรวมกับพาธแบบสัมบูรณ์ (absolute path) ในฐานะอาร์กิวเมนต์ โดยพาธจะต้องเป็นแบบสัมบูรณ์เนื่องจากไคลเอนต์อาจเริ่มกระบวนการจากไดเรกทอรีใดก็ได้
เครื่องมือทั้งหกรายการจะปรากฏขึ้นโดยจัดกลุ่มตามคำถามแทนที่จะเป็นชุดข้อมูล ได้แก่ describe_lake สำหรับตรวจสอบว่ามีข้อมูลอะไรบ้างและจะอ่านอย่างไร, resolve_symbol สำหรับแปลงชื่อเป็นรหัส (รวมถึงชื่อที่ถูกเพิกถอน), query_bars, query_fundamentals พร้อมอาร์กิวเมนต์ as_of, query_dataset สำหรับข้อมูลอื่น ๆ ทั้งหมด และ run_sql สำหรับการใช้คำสั่ง DuckDB SELECT แบบอ่านอย่างเดียวเพียงคำสั่งเดียวข้ามชุดข้อมูลต่าง ๆ ทั้งนี้ แฟล็ก --live จะช่วยให้เซิร์ฟเวอร์สามารถตอบกลับการค้นหารหัสสัญลักษณ์และข้อมูลราคาปิดรายวันแบบไม่ปรับค่า (unadjusted daily bars) จากต้นทางได้โดยไม่ต้องเขียนข้อมูลลงใน lake
ข้อจำกัดที่ควรทราบก่อนเริ่มใช้งาน
- เฉพาะหุ้น A-shares เท่านั้น ไม่รวมหุ้นฮ่องกง หุ้นจดทะเบียนในสหรัฐฯ หรือสินทรัพย์อื่นใดนอกจีนแผ่นดินใหญ่
- เป็นโครงการส่วนบุคคล การจัดการปัญหา (Issues) และคำขอรวมโค้ด (Pull requests) จะดำเนินการตามความสามารถที่ดีที่สุด โดยเอกสารระบุไว้อย่างชัดเจนว่าไม่มีการรับประกันความพร้อมใช้งาน เนื่องจากเว็บไซต์ต้นทางมีการเปลี่ยนแปลงอยู่เสมอ และ IP อาจถูกบล็อก ซึ่งจะทำให้การดึงข้อมูลหยุดชะงักจนกว่าจะมีผู้แก้ไข
- สัญญาอนุญาต Apache 2.0 ครอบคลุมเฉพาะตัวโค้ด ไม่รวมถึงข้อมูล แหล่งข้อมูลต้นทางแต่ละแห่งมีข้อกำหนดของตนเอง และผู้ดูแลโครงการไม่ได้มอบสิทธิ์ในการแจกจ่ายซ้ำหรือขายไฟล์ Parquet ที่คุณสร้างขึ้น โปรดอ่านข้อกำหนดของแหล่งข้อมูลก่อนนำไปใช้ในเชิงพาณิชย์
- ไม่จำเป็นต้องใช้บัญชีหรือ Token สำหรับแหล่งข้อมูลที่ระบบอ่าน ซึ่งเป็นทั้งจุดเด่นและจุดอ่อนในด้านความเสถียร
- รองรับ Windows ตั้งแต่เวอร์ชัน 0.3.0 และปรับขั้นต่ำของ Python เป็น 3.10 ในเวอร์ชัน 0.3.1
ที่มาของข้อมูลโครงการนี้
ข้อมูลเวอร์ชัน 0.5.0 วันที่ออกเผยแพร่ทั้งหกครั้ง และข้อกำหนดขั้นต่ำของ Python มาจากประวัติการเผยแพร่บน PyPI และ CHANGELOG ของโครงการ ณ วันที่ 4 สิงหาคม 2026 ส่วนรายการชุดข้อมูล พฤติกรรมการเพิกถอนหุ้นและข้อมูล ณ จุดเวลาใดเวลาหนึ่ง (point-in-time) แฟล็กของ CLI รายการเครื่องมือ MCP ตลอดจนข้อความทางกฎหมายและแหล่งข้อมูล มาจากเอกสารใน Repository ได้แก่ docs/datasets/catalog.md, docs/reference/cli.md, docs/reference/mcp.md และ docs/legal-and-data-sources.md ซอฟต์แวร์มีการพัฒนาเร็วกว่าบทความ โปรดตรวจสอบเอกสารสำหรับเวอร์ชันที่คุณติดตั้ง แผงข้อมูล survivorship ทั้งสองชุดวัดผลจากสัญลักษณ์หุ้นในสหรัฐฯ ที่อยู่ในคลังข้อมูลของเราเอง ไม่ใช่หุ้นจีน และมีไว้เพื่อแสดงกลไกการทำงานเท่านั้น ไม่ใช่การวัดผลตลาด A-share ทั้งระบบ
คำถามที่พบบ่อย
คุณจำเป็นต้องใช้ API key เพื่อสร้างคลังข้อมูล A-share ในเครื่องหรือไม่?
ไม่จำเป็นสำหรับเครื่องมือนี้ แหล่งข้อมูลต้นทางที่ระบบอ่านไม่ต้องมีการลงทะเบียนหรือใช้โทเค็น และตัวคลังข้อมูลเองก็จัดเก็บอยู่บนเครื่องของคุณ ทั้งนี้ แต่ละแหล่งข้อมูลมีข้อกำหนดการใช้งานของตนเอง ซึ่งเป็นสิ่งที่ต้องพิจารณาก่อนนำไปใช้ในเชิงพาณิชย์
การทำ backfill ข้อมูลด้วย ashare-lake ใช้เวลานานเท่าใด?
เอกสารระบุว่าการทำ backfill ประวัติข้อมูลทั้งหมดใช้เวลาหลายชั่วโมงและใช้พื้นที่ดิสก์หลาย GB โดยจำเป็นต้องมีการเชื่อมต่อกับโฮสต์ข้อมูลราคาต้นทางตลอดเวลา ส่วน asl init --profile quick ครอบคลุมข้อมูลย้อนหลังสามปีล่าสุดโดยใช้เวลาเพียงไม่กี่นาที และยังคงรวมถึงชื่อหุ้นที่เพิกถอนออกจากตลาดไปแล้วด้วย
คลังข้อมูล A-share ในเครื่องรวมหุ้นที่ถูกเพิกถอนไปแล้วหรือไม่?
รวมอยู่ด้วย สัญลักษณ์หุ้นที่ถูกเพิกถอนจะยังคงอยู่ในชุดข้อมูลเครื่องมือทางการเงิน โดยตาราง delisting_events จะบันทึกรายละเอียดการสิ้นสุดสถานะของแต่ละชื่อหุ้น และ universe="all_a" จะสร้างภาพรวมข้อมูลย้อนหลังที่รวมหุ้นเหล่านี้ไว้ด้วย การวัดผลในตลาดสหรัฐฯ ของเราข้างต้นแสดงให้เห็นถึงขนาดของข้อมูลที่หายไปหากพิจารณาเฉพาะหุ้นที่ยังคงซื้อขายอยู่เท่านั้น
AI agent สามารถสอบถามข้อมูลจาก ashare-lake โดยตรงได้หรือไม่?
ได้ asl mcp เปิดใช้งานเครื่องมือหกประเภทผ่านโปรโตคอล Model Context Protocol ซึ่งหนึ่งในนั้นคือเครื่องมือ SQL แบบอ่านได้อย่างเดียว ทำให้ agent สามารถสอบถามข้อมูลจากไฟล์ Parquet ในเครื่องได้โดยตรงแทนการดึงข้อมูลจากเว็บ คุณสามารถลงทะเบียนเครื่องมือนี้ได้ด้วย claude mcp add ashare-lake -- asl mcp --config /abs/path/to/ashare-lake.toml
ashare-lake เป็นเครื่องมือทดแทน AkShare หรือ Baostock หรือไม่?
ไม่ใช่ เครื่องมือนี้ทำงานอยู่เหนือไลบรารีเหล่านั้น ไลบรารีดังกล่าวทำหน้าที่ดึงข้อมูลจากต้นทาง ส่วนโปรเจกต์นี้ทำหน้าที่จัดเก็บ จัดทำเวอร์ชัน และตรวจสอบความถูกต้องของข้อมูลที่ดึงมา เพื่อแปลงเป็นไฟล์ Parquet ที่ผ่านการคัดกรองแล้ว พร้อมด้วยข้อมูลที่มาของข้อมูลในระดับแถวและสัญญาข้อมูลหนึ่งฉบับต่อหนึ่งชุดข้อมูล
ตัวเลขทุกตัวข้างต้นเป็นผลลัพธ์จากคิวรีที่ถูกจัดเก็บและระบุเวอร์ชันไว้จากข้อมูลตลาดจริง คุณสามารถขยายพาเนลใดก็ได้เพื่ออ่านคำสั่ง SQL หรือรันการตรวจสอบ survivorship บนจักรวาลข้อมูลของคุณเองได้ที่เทอร์มินัล Strasmore