Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-08

วิธีสร้างคลังข้อมูลหุ้น 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 และได้ตัวเลขที่ไม่มีใครสามารถตรวจสอบซ้ำได้ในเดือนถัดไป หรือทางที่สองคือการเรียกใช้บริการจากผู้ให้บริการที่ต้องลงทะเบียน ซึ่งมีการจำกัดจำนวนแถวข้อมูลและผูกผลลัพธ์ทุกรายการไว้กับบัญชีผู้ใช้

ขนาดของข้อมูลเป็นสิ่งที่มักถูกประเมินต่ำเกินไป คลังข้อมูลของเราเก็บข้อมูลเทปการซื้อขายของสหรัฐฯ ที่ความละเอียดระดับนาที ซึ่งในสัปดาห์ปกติทั่วไปจะมีลักษณะดังนี้:

คำสั่งดึงข้อมูลข้อมูลการซื้อขายรายนาทีของสหรัฐฯ ตลอดหนึ่งสัปดาห์: จำนวนสัญลักษณ์และแท่งราคาต่อรอบการซื้อขาย 20-24 กรกฎาคม 2026
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
Run this yourself

ในวันที่ 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 ติดตั้งรุ่นปัจจุบัน ณ ช่วงต้นเดือนสิงหาคม 2026
  • asl --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:

คำสั่งดึงข้อมูลการวัดอัตราการคงอยู่: กลุ่มสัญลักษณ์ของสหรัฐฯ ที่เริ่มในเดือนมีนาคมและยังคงมีการซื้อขายจนถึงปลายเดือนกรกฎาคม 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
Run this yourself

จากจำนวน 8101 สัญลักษณ์ที่มีการซื้อขายในสัปดาห์นั้นของ 2016 มีเพียง 50.1% สัญลักษณ์ที่ยังคงปรากฏอยู่บนกระดานในช่วงปลายเดือนมิถุนายน 2026 และอีก 4040 สัญลักษณ์ที่หายไป กลุ่มตัวอย่าง 2025 มีค่าเท่ากับ 86.7% หากคุณใช้การคัดกรองหุ้นจากรายชื่อปัจจุบันย้อนกลับไปในช่วง 10 ปีที่ผ่านมา คุณจะพบว่าสัดส่วนของตลาดที่ถูกตัดออกจะเพิ่มขึ้นเรื่อยๆ ตามระยะเวลาที่ย้อนกลับไป

ข้อสันนิษฐานที่มักเข้าใจผิดคือบริษัทที่หายไปทั้งหมดเป็นเพียงหุ้นราคาต่ำ (penny stocks) แต่เมื่อจัดกลุ่มหุ้นในเดือนมีนาคม 2021 ตามมูลค่าการซื้อขายเฉลี่ยต่อวันในเดือนนั้น ผลลัพธ์กลับแสดงให้เห็นในทางตรงกันข้าม:

คำสั่งดึงข้อมูลสัญลักษณ์ที่หายไปจากตลาด: เปรียบเทียบสัญลักษณ์จากเดือนมีนาคม 2021 ตามปริมาณการซื้อขายรายวัน กับสถานะ ณ ปลายเดือนกรกฎาคม 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
),
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)
Run this yourself

กลุ่ม 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

#market-data#mcp#a-shares#open-source#ai-agents