Library สำหรับประมวลข้อมูลตลาดหุ้นไทย Stock Exchange of Thailand https://www.set.or.th และการจัดการ Portfolio
พื้นฐานที่ต้องการ
$ conda install -c conda-forge matplotlib
จาก https://anaconda.org/conda-forge/matplotlib
การติดตั้ง
$ pip install starfishX หรือ $ pip install starfishX --upgrade
หรือ
$ pip3 install starfishX --upgrade
Quantitative
- sx.loadHistData(str|list,start="2018-01-01",end="2018-12-31") ``end ถ้าไม่ใส่คือวันที่ล่าสุด``
- df,k = sx.MonthlyReturn([str],"2016-01-01")
- sx.linregressIndicator(basket,periodDay) ``int periodDay`` จำนวนวันล่าสุดที่จะใช้ใน Linear least-squares regression
- sx.getNVDRVolume ดึงข้อมูลปริมาณการซื้อขายของ NVDR
ข้อมูลงบการเงินและข้อมูลตลาด
- sx.commonsizeBS(str)
- sx.commonsizeIS(str)
- sx.getFinanceRatio(str|list)
``str,list`` ส่งค่าเป็น str จะ return ค่าย้อนหลังได้หลายปี หากส่งค่าเป็น array list จะ return แบบเปรียบเทียบ
- sx.spiderCompare([str1,str2])
``ใช้คู่กับ sx.getFinanceRatio และ list ความยาว 2 เท่านั้น``
- sx.getIncomeStatement(str)
- sx.getIncomeStatementCompare(list)
- sx.getBalanceSheet(str)
- sx.getBalanceSheetCompare(list)
- sx.getMemberOfIndex("set50")
``SET50,SET100,sSET,SETCLMV,SETHD,SETTHSI,SETWB``
- sx.listStockInSector("kbank")
``สุ่มอะไรก็ได้ในกลุ่มอุตสาหกรรมนั้นๆ``
- sx.getFundamentalInSector("kbank")
``สุ่มอะไรก็ได้ในกลุ่มอุตสาหกรรมนั้นๆ``
- sx.findCASH("aot")
- sx.listShareholders(str|list,csv="file.csv")
``csv สำหรับบันทึกข้อมูลเป็น csv``
- sx.listSecurities()
- sx.findMarketCap(str|list)
- sx.DuPontROE(str,int,firstLine=False)
``str Symbol ของหุ้นรายตัว``
``int Year เป็นปีพ.ศ. เช่น 2562 หรือ 2561``
``firstLine True`` คือ SALE ใช้บรรทัดแรก แต่ถ้าเป็น False SALE จะใช้รายได้รวมทั้งหมด ถ้าไม่ใส่ปกติจะเป็น False
- sx.InterestBearingDebt(str) ``str Symbol ของหุ้นรายตัว`` ใช้หาหนี้ที่มีคาดว่ามีภาระดอกเบี้ย
- sx.DA(str) ``str Symbol `` ใช้หาค่าเสื่อมราคาและค่าตัดจำหน่าย
- sx.morningstarGetfn(str,Indicates=sx.MStar) ดึงค่าปัจจัยพื้นฐานจาก morningstar
``str Symbol ของหุ้นรายตัว``
``sx.MStar`` คือ ตัวคัดกรองที่ต้องการ เช่น ปันผลใช้ sx.MStar.Dividends , รายได้ใช้ sx.MStar.Revenue เป็นต้น
จาก Cr.http://financials.morningstar.com
- sx.marketview(indexMarket,start=year)
``str year ใช้ปีค.ศ. เช่น 2010-01-01 YYYY-MM-DD``
``indexMarket Class เช่น sx.indexMarket.SET50``
- rp = sx.marketViewForeignTrade(indexMarket,start="2016-01-01")
``indexMarket ของต่างชาติซื้อขายมีเพียง SET และ mai เท่านั้น`` ``str year ใช้ปีค.ศ. เช่น 2010-01-01 YYYY-MM-DD``
- sx.AnomalyDetectionVolume(DataSet,contamination=0.01,viewplot=True)
``DataSet เป็น DataFrame ของปริมาณการซื้อขาย`` ``contamination ส่วนของสิ่งผิดปกติใน DataSet ``
ประเมินมูลค่าหุ้น
- sx.getEVEBITDA(symbol,year) ``int Year เป็นปีพ.ศ. เช่น 2562 หรือ 2561 ``
- sx.analyseEVEBITDA(basket,yearstart,yearend) ``วิเคราะห์คุณภาพ EV/EBITDA``
- sx.DividendDiscountModel(symbol,year,k)
``int Year เป็นปีพ.ศ. เช่น 2562 หรือ 2561 ``
``k อัตราผลตอบแทนที่คาดหวัง``
- sx.thaibma(year,bondtype=sx.BondType.ThaiGovernmentBond10Year)
``strFormat ใช้ค.ศ. เช่น 2019-06-10 YYYY-MM-DD``
Cr.http://www.thaibma.or.th
- sx.thaibma_series(year,bondtype=sx.BondType.ThaiGovernmentBond10Year)
- sx.beta(str) ``str Symbol ``
- sx.EarningYieldGap(indexMarket,bondtype,start=year) ``str year ใช้ปีค.ศ. เช่น 2010-01-01 YYYY-MM-DD``
Optimization
- sx.MarkowitzProcess(df,alias=symbols,random=5000)
ดึงวันหยุดของตลาด (วันหยุดตามประเพณีของสถาบันการเงิน)
- df = sx.getHolidayMarket('2021') ``int Year เป็นปีค.ศ. เช่น 2010-01-01 YYYY-MM-DD ``
สถิติข้อมูล IPO ของหุ้น ราคา IPO /ข้อมูล ณ วันแรกที่ซื้อขาย / บริษัทที่ปรึกษาทางการเงิน
- df = sx.ipoStat(start,end) ``int start,end เป็นปีค.ศ. เช่น 2020 ``
ดึงราคา Warrant หรือใบสําคัญแสดงสิทธิ symbol : string เช่น mint-w7,jmart-w4
- df = sx.getWarrant('mint-w7')
ดึงราคา Derivative Warrants หรือใบสำคัญแสดงสิทธิอนุพันธ์ symbol : string เช่น 'INTU01C2201A'
- df = sx.getDW('INTU01C2201A')
คำนวณค่า Greek ของ Warrant ที่เราต้องการ
- ``float asset_price : ราคาสินค้าอ้างอิง ``
``float asset_volatility : ความผันผวนของราคาสินค้าอ้างอิง ``
``float strike_price : ราคาใช้สิทธิ ``
``float time_to_expiration : วันหมดอายุ (จำนวนวัน/365) ``
``float risk_free_rate : อัตราผลตอบแทนที่ไม่มีความเสี่ยง ``
callOption = EuropeanCall(asset_price=4.94, asset_volatility=0.80,strike_price=2,
time_to_expiration=2.901, risk_free_rate=0.015)
คืนค่าเป็น Option Price,Delta,Gamma,Vega,Theta และ Rho
Cr.เอกสารประกอบจาก
1.https://medium.com/swlh/black-scholes-algorithmic-delta-hedging-c2cdd42ce175
2.https://aaronschlegel.me/measure-sensitivity-derivatives-greeks-python.html
ตัวอย่าง Data Type และอื่นๆ
- list เช่น ["aot","ptt"]
- str เช่น "aot"
- sx.checkServices() เป็นการตรวจสอบการทำงานของ Server โดยภาพรวมว่า function ยังทำงานโดยปกติไหม
ตัวอย่างการใช้งาน
import starfishX as sx
print(sx.__version__)
sx.getBalanceSheet("aot")
ตัวอย่างการใช้งาน
import starfishX as sx
symbol = ["aot","ptt"]
df = sx.loadHistData(symbol,start="2018-01-01")
ตัวอย่างการใช้งาน
import starfishX as sx
symbols = ["ptt","cpf","mint","aav"]
df = sx.loadHistData(symbols,start="2018-01-01")
sx.MarkowitzProcess(df,alias=symbols,random=5000)
ค้นหาหุ้นตามแนวทางของ Peter Lynch โดยใช้เนื้อหาจากหนังสือ “เหนือกว่าวอลสตรีท One Up On Wall Street” สร้างเป็น Package เสริมโดยใช้ฟังก์ชั่นพื้นฐานจาก starfishX
import starfishX.peterlynch as pl
- อัตราการเติบโตของกำไรเป็นอย่างไร
- P/E อุตสาหกรรม และ P/E บริษัทที่คล้ายกัน
- P/E ต่ออัตราการเติบโตของกำไร
- P/E ย้อนหลัง 10 ปี
- ตัวอย่างเช่น df = pl.getPEHistory('aot') ``str symbol``
- นักวิเคราะห์สนใจหุ้นเราไหม
- บริษัทมีข่าวการซื้อหุ้นคืนบ้างหรือเปล่า
- เปอร์เซ็นต์การถือหุ้นของสถาบัน
- มีบุคคลภายในกำลังซื้อหุ้นของบริษัทบ้างไหม ตรวจสอบรายงาน 59-2 และรายงาน 246-2
- โครงสร้างหนี้เป็นอย่างไร
- มีงบดุลที่แข็งแกร่งขนาดไหน
- เงินสดต่อหุ้นเป็นยังไงบ้าง
- อัตราการปันผลสม่ำเสมอหรือเปล่า
- อัตรา Payout เป็นอย่างไรบ้าง
- กระแสเงินสดอิสระ Free Cash Flow เป็นยังไง
- หาบริษัทที่ยอดเยี่ยมในอุตสาหกรรมที่ยอดแย่
- สัญญานหนึ่งของการเพื่องฟู
- หุ้นทรัพย์สินมาก ประยุกต์ใช้เทคนิค Sum Of The Part
- การคัดกรอง หุ้นโตช้า ,หุ้นแข็งแกร่ง ,หุ้นโตเร็ว ตามอัตราการเติบโต
Historical Volatility
import starfishX.volatility as vol
from starfishX.volatility.vol import TypeVol as tv
df = sx.loadHistData("JMART",OHLC=True,start="2020-01-01")
N = 30 #sma
vol.historicalVolatility(df,N,tv.hvCloseToClose)
vol.historicalVolatility(df,N,tv.hvParkinson)
starfishX.volatility ตอนนี้ก็จะมี 6 ฟังก์ชัน
- 1.Close To Close
- 2.Parkinson (High-Low)
- 3.Garman-Klass (Open-High-Low-Close)
- 4.Rogers-Satchell (Open-High-Low-Close + จัดการราคาที่ไม่เปลี่ยนแปลงได้)
- 5.GARMAN-KLASS YANG-ZHANG EXTENSION (Open-High-Low-Close + จัดการราคาที่มีการเปิดกระโดดได้)
- 6.Yang-Zhang (Open-High-Low-Close + จัดการราคาที่ไม่เปลี่ยนแปลงได้ + จัดการราคาที่มีการเปิดกระโดดได้)
ติดต่อฉัน แจ้ง BUG แจ้ง Error ได้ที่
Facebook : https://www.facebook.com/Superstarman-1464755373546185/
Email : tapattan@จีเมล์ดอทคอม
Raw data
{
"_id": null,
"home_page": "https://github.com/tapattan/starfishX",
"name": "starfishX",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "starfishx,finance,\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e38\u0e19,\u0e2b\u0e38\u0e49\u0e19,peterlynch",
"author": "nattapat attiratanasunthron",
"author_email": "tapattan@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/fa/88/8070d24e79fdd0583209cd5cd7e2375fe8fac1269bc09ca313574912df04/starfishX-0.155555.tar.gz",
"platform": null,
"description": "Library \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e25\u0e32\u0e14\u0e2b\u0e38\u0e49\u0e19\u0e44\u0e17\u0e22 Stock Exchange of Thailand https://www.set.or.th \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Portfolio\n\n\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\n\n $ conda install -c conda-forge matplotlib\n\n\u0e08\u0e32\u0e01 https://anaconda.org/conda-forge/matplotlib\n\n\n\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\n\n $ pip install starfishX \u0e2b\u0e23\u0e37\u0e2d $ pip install starfishX --upgrade\n\n\u0e2b\u0e23\u0e37\u0e2d\n\n $ pip3 install starfishX --upgrade\n\nQuantitative \n- sx.loadHistData(str|list,start=\"2018-01-01\",end=\"2018-12-31\") ``end \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e04\u0e37\u0e2d\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14``\n- df,k = sx.MonthlyReturn([str],\"2016-01-01\")\n- sx.linregressIndicator(basket,periodDay) ``int periodDay`` \u0e08\u0e33\u0e19\u0e27\u0e19\u0e27\u0e31\u0e19\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e43\u0e19 Linear least-squares regression\n- sx.getNVDRVolume \u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e02\u0e32\u0e22\u0e02\u0e2d\u0e07 NVDR\n\n\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e07\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e07\u0e34\u0e19\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e25\u0e32\u0e14\n- sx.commonsizeBS(str)\n- sx.commonsizeIS(str)\n- sx.getFinanceRatio(str|list) \n ``str,list`` \u0e2a\u0e48\u0e07\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 str \u0e08\u0e30 return \u0e04\u0e48\u0e32\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e32\u0e22\u0e1b\u0e35 \u0e2b\u0e32\u0e01\u0e2a\u0e48\u0e07\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 array list \u0e08\u0e30 return \u0e41\u0e1a\u0e1a\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\n \n- sx.spiderCompare([str1,str2]) \n ``\u0e43\u0e0a\u0e49\u0e04\u0e39\u0e48\u0e01\u0e31\u0e1a sx.getFinanceRatio \u0e41\u0e25\u0e30 list \u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27 2 \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19``\n \n- sx.getIncomeStatement(str)\n- sx.getIncomeStatementCompare(list)\n- sx.getBalanceSheet(str)\n- sx.getBalanceSheetCompare(list)\n- sx.getMemberOfIndex(\"set50\") \n ``SET50,SET100,sSET,SETCLMV,SETHD,SETTHSI,SETWB``\n \n- sx.listStockInSector(\"kbank\") \n ``\u0e2a\u0e38\u0e48\u0e21\u0e2d\u0e30\u0e44\u0e23\u0e01\u0e47\u0e44\u0e14\u0e49\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e2d\u0e38\u0e15\u0e2a\u0e32\u0e2b\u0e01\u0e23\u0e23\u0e21\u0e19\u0e31\u0e49\u0e19\u0e46``\n \n- sx.getFundamentalInSector(\"kbank\") \n ``\u0e2a\u0e38\u0e48\u0e21\u0e2d\u0e30\u0e44\u0e23\u0e01\u0e47\u0e44\u0e14\u0e49\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e2d\u0e38\u0e15\u0e2a\u0e32\u0e2b\u0e01\u0e23\u0e23\u0e21\u0e19\u0e31\u0e49\u0e19\u0e46``\n- sx.findCASH(\"aot\")\n- sx.listShareholders(str|list,csv=\"file.csv\") \n ``csv \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e47\u0e19 csv``\n- sx.listSecurities()\n- sx.findMarketCap(str|list)\n- sx.DuPontROE(str,int,firstLine=False)\n ``str Symbol \u0e02\u0e2d\u0e07\u0e2b\u0e38\u0e49\u0e19\u0e23\u0e32\u0e22\u0e15\u0e31\u0e27`` \n ``int Year \u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e1e.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2562 \u0e2b\u0e23\u0e37\u0e2d 2561``\n ``firstLine True`` \u0e04\u0e37\u0e2d SALE \u0e43\u0e0a\u0e49\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e41\u0e23\u0e01 \u0e41\u0e15\u0e48\u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19 False SALE \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e23\u0e32\u0e22\u0e44\u0e14\u0e49\u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e1b\u0e01\u0e15\u0e34\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19 False\n\n- sx.InterestBearingDebt(str) ``str Symbol \u0e02\u0e2d\u0e07\u0e2b\u0e38\u0e49\u0e19\u0e23\u0e32\u0e22\u0e15\u0e31\u0e27`` \u0e43\u0e0a\u0e49\u0e2b\u0e32\u0e2b\u0e19\u0e35\u0e49\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e32\u0e14\u0e27\u0e48\u0e32\u0e21\u0e35\u0e20\u0e32\u0e23\u0e30\u0e14\u0e2d\u0e01\u0e40\u0e1a\u0e35\u0e49\u0e22\n- sx.DA(str) ``str Symbol `` \u0e43\u0e0a\u0e49\u0e2b\u0e32\u0e04\u0e48\u0e32\u0e40\u0e2a\u0e37\u0e48\u0e2d\u0e21\u0e23\u0e32\u0e04\u0e32\u0e41\u0e25\u0e30\u0e04\u0e48\u0e32\u0e15\u0e31\u0e14\u0e08\u0e33\u0e2b\u0e19\u0e48\u0e32\u0e22\n\n- sx.morningstarGetfn(str,Indicates=sx.MStar) \u0e14\u0e36\u0e07\u0e04\u0e48\u0e32\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e08\u0e32\u0e01 morningstar \n ``str Symbol \u0e02\u0e2d\u0e07\u0e2b\u0e38\u0e49\u0e19\u0e23\u0e32\u0e22\u0e15\u0e31\u0e27``\n ``sx.MStar`` \u0e04\u0e37\u0e2d \u0e15\u0e31\u0e27\u0e04\u0e31\u0e14\u0e01\u0e23\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 \u0e40\u0e0a\u0e48\u0e19 \u0e1b\u0e31\u0e19\u0e1c\u0e25\u0e43\u0e0a\u0e49 sx.MStar.Dividends , \u0e23\u0e32\u0e22\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49 sx.MStar.Revenue \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19\n \u0e08\u0e32\u0e01 Cr.http://financials.morningstar.com\n\n- sx.marketview(indexMarket,start=year) \n ``str year \u0e43\u0e0a\u0e49\u0e1b\u0e35\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2010-01-01 YYYY-MM-DD``\n ``indexMarket Class \u0e40\u0e0a\u0e48\u0e19 sx.indexMarket.SET50``\n\n- rp = sx.marketViewForeignTrade(indexMarket,start=\"2016-01-01\") \n ``indexMarket \u0e02\u0e2d\u0e07\u0e15\u0e48\u0e32\u0e07\u0e0a\u0e32\u0e15\u0e34\u0e0b\u0e37\u0e49\u0e2d\u0e02\u0e32\u0e22\u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07 SET \u0e41\u0e25\u0e30 mai \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19`` ``str year \u0e43\u0e0a\u0e49\u0e1b\u0e35\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2010-01-01 YYYY-MM-DD``\n\n- sx.AnomalyDetectionVolume(DataSet,contamination=0.01,viewplot=True) \n ``DataSet \u0e40\u0e1b\u0e47\u0e19 DataFrame \u0e02\u0e2d\u0e07\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e02\u0e32\u0e22`` ``contamination \u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e2a\u0e34\u0e48\u0e07\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34\u0e43\u0e19 DataSet ``\n\n\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e21\u0e39\u0e25\u0e04\u0e48\u0e32\u0e2b\u0e38\u0e49\u0e19\n- sx.getEVEBITDA(symbol,year) ``int Year \u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e1e.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2562 \u0e2b\u0e23\u0e37\u0e2d 2561 ``\n- sx.analyseEVEBITDA(basket,yearstart,yearend) ``\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e EV/EBITDA``\n- sx.DividendDiscountModel(symbol,year,k) \n ``int Year \u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e1e.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2562 \u0e2b\u0e23\u0e37\u0e2d 2561 ``\n ``k \u0e2d\u0e31\u0e15\u0e23\u0e32\u0e1c\u0e25\u0e15\u0e2d\u0e1a\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e2b\u0e27\u0e31\u0e07``\n\n- sx.thaibma(year,bondtype=sx.BondType.ThaiGovernmentBond10Year) \n``strFormat \u0e43\u0e0a\u0e49\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2019-06-10 YYYY-MM-DD``\nCr.http://www.thaibma.or.th\n\n- sx.thaibma_series(year,bondtype=sx.BondType.ThaiGovernmentBond10Year) \n\n- sx.beta(str) ``str Symbol ``\n\n- sx.EarningYieldGap(indexMarket,bondtype,start=year) ``str year \u0e43\u0e0a\u0e49\u0e1b\u0e35\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2010-01-01 YYYY-MM-DD``\n\nOptimization\n- sx.MarkowitzProcess(df,alias=symbols,random=5000)\n\n\u0e14\u0e36\u0e07\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e15\u0e25\u0e32\u0e14 (\u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e40\u0e1e\u0e13\u0e35\u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e1a\u0e31\u0e19\u0e01\u0e32\u0e23\u0e40\u0e07\u0e34\u0e19)\n- df = sx.getHolidayMarket('2021') ``int Year \u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2010-01-01 YYYY-MM-DD ``\n\n\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 IPO \u0e02\u0e2d\u0e07\u0e2b\u0e38\u0e49\u0e19 \u0e23\u0e32\u0e04\u0e32 IPO /\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e13 \u0e27\u0e31\u0e19\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e0b\u0e37\u0e49\u0e2d\u0e02\u0e32\u0e22 / \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e36\u0e01\u0e29\u0e32\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e07\u0e34\u0e19\n- df = sx.ipoStat(start,end) ``int start,end \u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e35\u0e04.\u0e28. \u0e40\u0e0a\u0e48\u0e19 2020 ``\n\n\u0e14\u0e36\u0e07\u0e23\u0e32\u0e04\u0e32 Warrant \u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e1a\u0e2a\u0e4d\u0e32\u0e04\u0e31\u0e0d\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e34\u0e17\u0e18\u0e34 symbol : string \u0e40\u0e0a\u0e48\u0e19 mint-w7,jmart-w4\n- df = sx.getWarrant('mint-w7')\n\n\u0e14\u0e36\u0e07\u0e23\u0e32\u0e04\u0e32 Derivative Warrants \u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e1a\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e2d\u0e19\u0e38\u0e1e\u0e31\u0e19\u0e18\u0e4c symbol : string \u0e40\u0e0a\u0e48\u0e19 'INTU01C2201A'\n- df = sx.getDW('INTU01C2201A') \n\n\u0e04\u0e33\u0e19\u0e27\u0e13\u0e04\u0e48\u0e32 Greek \u0e02\u0e2d\u0e07 Warrant \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\n- ``float asset_price : \u0e23\u0e32\u0e04\u0e32\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 `` \n ``float asset_volatility : \u0e04\u0e27\u0e32\u0e21\u0e1c\u0e31\u0e19\u0e1c\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e23\u0e32\u0e04\u0e32\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 `` \n ``float strike_price : \u0e23\u0e32\u0e04\u0e32\u0e43\u0e0a\u0e49\u0e2a\u0e34\u0e17\u0e18\u0e34 `` \n ``float time_to_expiration : \u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 (\u0e08\u0e33\u0e19\u0e27\u0e19\u0e27\u0e31\u0e19/365) ``\n ``float risk_free_rate : \u0e2d\u0e31\u0e15\u0e23\u0e32\u0e1c\u0e25\u0e15\u0e2d\u0e1a\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07 ``\n\n callOption = EuropeanCall(asset_price=4.94, asset_volatility=0.80,strike_price=2,\n time_to_expiration=2.901, risk_free_rate=0.015)\n\n \u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 Option Price,Delta,Gamma,Vega,Theta \u0e41\u0e25\u0e30 Rho\n\n Cr.\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e08\u0e32\u0e01\n 1.https://medium.com/swlh/black-scholes-algorithmic-delta-hedging-c2cdd42ce175 \n 2.https://aaronschlegel.me/measure-sensitivity-derivatives-greeks-python.html \n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07 Data Type \u0e41\u0e25\u0e30\u0e2d\u0e37\u0e48\u0e19\u0e46\n- list \u0e40\u0e0a\u0e48\u0e19 [\"aot\",\"ptt\"]\n- str \u0e40\u0e0a\u0e48\u0e19 \"aot\" \n- sx.checkServices() \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 Server \u0e42\u0e14\u0e22\u0e20\u0e32\u0e1e\u0e23\u0e27\u0e21\u0e27\u0e48\u0e32 function \u0e22\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e1b\u0e01\u0e15\u0e34\u0e44\u0e2b\u0e21\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n\n import starfishX as sx\n\n print(sx.__version__)\n\n sx.getBalanceSheet(\"aot\")\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n\n import starfishX as sx\n\n symbol = [\"aot\",\"ptt\"]\n\n df = sx.loadHistData(symbol,start=\"2018-01-01\")\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n\n import starfishX as sx\n\n symbols = [\"ptt\",\"cpf\",\"mint\",\"aav\"]\n\n df = sx.loadHistData(symbols,start=\"2018-01-01\")\n\n sx.MarkowitzProcess(df,alias=symbols,random=5000)\n\n\n\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2b\u0e38\u0e49\u0e19\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e02\u0e2d\u0e07 Peter Lynch \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d \u201c\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e27\u0e2d\u0e25\u0e2a\u0e15\u0e23\u0e35\u0e17 One Up On Wall Street\u201d \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19 Package \u0e40\u0e2a\u0e23\u0e34\u0e21\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e48\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e08\u0e32\u0e01 starfishX\n\n import starfishX.peterlynch as pl \n\n- \u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e40\u0e15\u0e34\u0e1a\u0e42\u0e15\u0e02\u0e2d\u0e07\u0e01\u0e33\u0e44\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23\n- P/E \u0e2d\u0e38\u0e15\u0e2a\u0e32\u0e2b\u0e01\u0e23\u0e23\u0e21 \u0e41\u0e25\u0e30 P/E \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\u0e17\u0e35\u0e48\u0e04\u0e25\u0e49\u0e32\u0e22\u0e01\u0e31\u0e19\n- P/E \u0e15\u0e48\u0e2d\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e40\u0e15\u0e34\u0e1a\u0e42\u0e15\u0e02\u0e2d\u0e07\u0e01\u0e33\u0e44\u0e23\n- P/E \u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07 10 \u0e1b\u0e35\n - \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19 df = pl.getPEHistory('aot') ``str symbol``\n- \u0e19\u0e31\u0e01\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e2a\u0e19\u0e43\u0e08\u0e2b\u0e38\u0e49\u0e19\u0e40\u0e23\u0e32\u0e44\u0e2b\u0e21\n- \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\u0e21\u0e35\u0e02\u0e48\u0e32\u0e27\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e2b\u0e38\u0e49\u0e19\u0e04\u0e37\u0e19\u0e1a\u0e49\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1b\u0e25\u0e48\u0e32\n- \u0e40\u0e1b\u0e2d\u0e23\u0e4c\u0e40\u0e0b\u0e47\u0e19\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e16\u0e37\u0e2d\u0e2b\u0e38\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e1a\u0e31\u0e19\n- \u0e21\u0e35\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e20\u0e32\u0e22\u0e43\u0e19\u0e01\u0e33\u0e25\u0e31\u0e07\u0e0b\u0e37\u0e49\u0e2d\u0e2b\u0e38\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\u0e1a\u0e49\u0e32\u0e07\u0e44\u0e2b\u0e21 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19 59-2 \u0e41\u0e25\u0e30\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19 246-2\n- \u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23\n- \u0e21\u0e35\u0e07\u0e1a\u0e14\u0e38\u0e25\u0e17\u0e35\u0e48\u0e41\u0e02\u0e47\u0e07\u0e41\u0e01\u0e23\u0e48\u0e07\u0e02\u0e19\u0e32\u0e14\u0e44\u0e2b\u0e19\n- \u0e40\u0e07\u0e34\u0e19\u0e2a\u0e14\u0e15\u0e48\u0e2d\u0e2b\u0e38\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e22\u0e31\u0e07\u0e44\u0e07\u0e1a\u0e49\u0e32\u0e07\n- \u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e1b\u0e31\u0e19\u0e1c\u0e25\u0e2a\u0e21\u0e48\u0e33\u0e40\u0e2a\u0e21\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1b\u0e25\u0e48\u0e32\n- \u0e2d\u0e31\u0e15\u0e23\u0e32 Payout \u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07\n- \u0e01\u0e23\u0e30\u0e41\u0e2a\u0e40\u0e07\u0e34\u0e19\u0e2a\u0e14\u0e2d\u0e34\u0e2a\u0e23\u0e30 Free Cash Flow \u0e40\u0e1b\u0e47\u0e19\u0e22\u0e31\u0e07\u0e44\u0e07\n- \u0e2b\u0e32\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17\u0e17\u0e35\u0e48\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e43\u0e19\u0e2d\u0e38\u0e15\u0e2a\u0e32\u0e2b\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e22\u0e2d\u0e14\u0e41\u0e22\u0e48\n- \u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e07\u0e1f\u0e39\n- \u0e2b\u0e38\u0e49\u0e19\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e4c\u0e2a\u0e34\u0e19\u0e21\u0e32\u0e01 \u0e1b\u0e23\u0e30\u0e22\u0e38\u0e01\u0e15\u0e4c\u0e43\u0e0a\u0e49\u0e40\u0e17\u0e04\u0e19\u0e34\u0e04 Sum Of The Part\n- \u0e01\u0e32\u0e23\u0e04\u0e31\u0e14\u0e01\u0e23\u0e2d\u0e07 \u0e2b\u0e38\u0e49\u0e19\u0e42\u0e15\u0e0a\u0e49\u0e32 ,\u0e2b\u0e38\u0e49\u0e19\u0e41\u0e02\u0e47\u0e07\u0e41\u0e01\u0e23\u0e48\u0e07 ,\u0e2b\u0e38\u0e49\u0e19\u0e42\u0e15\u0e40\u0e23\u0e47\u0e27 \u0e15\u0e32\u0e21\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e40\u0e15\u0e34\u0e1a\u0e42\u0e15\n\nHistorical Volatility\n\n import starfishX.volatility as vol\n\n from starfishX.volatility.vol import TypeVol as tv\n\n df = sx.loadHistData(\"JMART\",OHLC=True,start=\"2020-01-01\") \n\n N = 30 #sma \n\n vol.historicalVolatility(df,N,tv.hvCloseToClose)\n \n vol.historicalVolatility(df,N,tv.hvParkinson)\n\nstarfishX.volatility \u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e01\u0e47\u0e08\u0e30\u0e21\u0e35 6 \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\n- 1.Close To Close\n- 2.Parkinson (High-Low)\n- 3.Garman-Klass (Open-High-Low-Close)\n- 4.Rogers-Satchell (Open-High-Low-Close + \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49)\n- 5.GARMAN-KLASS YANG-ZHANG EXTENSION (Open-High-Low-Close + \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e01\u0e23\u0e30\u0e42\u0e14\u0e14\u0e44\u0e14\u0e49)\n- 6.Yang-Zhang (Open-High-Low-Close + \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49 + \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e01\u0e23\u0e30\u0e42\u0e14\u0e14\u0e44\u0e14\u0e49)\n\n\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e09\u0e31\u0e19 \u0e41\u0e08\u0e49\u0e07 BUG \u0e41\u0e08\u0e49\u0e07 Error \u0e44\u0e14\u0e49\u0e17\u0e35\u0e48\n\n Facebook : https://www.facebook.com/Superstarman-1464755373546185/\n\n Email : tapattan@\u0e08\u0e35\u0e40\u0e21\u0e25\u0e4c\u0e14\u0e2d\u0e17\u0e04\u0e2d\u0e21\n\n",
"bugtrack_url": null,
"license": "",
"summary": "Get data of stock exchange thailand (SET)",
"version": "0.155555",
"split_keywords": [
"starfishx",
"finance",
"\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e38\u0e19",
"\u0e2b\u0e38\u0e49\u0e19",
"peterlynch"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3f1cae31f3c7e9e174b249faa94b09c005e16c705081ee34d8fff6a412cc1c83",
"md5": "7cccbe9e6516cf75baf68f81e9156706",
"sha256": "502b2964005320afefaf150dcaf88ce2c4244a489f1fa8dd06177ccf61fc868d"
},
"downloads": -1,
"filename": "starfishX-0.155555-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7cccbe9e6516cf75baf68f81e9156706",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 119611,
"upload_time": "2023-03-11T04:02:55",
"upload_time_iso_8601": "2023-03-11T04:02:55.261805Z",
"url": "https://files.pythonhosted.org/packages/3f/1c/ae31f3c7e9e174b249faa94b09c005e16c705081ee34d8fff6a412cc1c83/starfishX-0.155555-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa888070d24e79fdd0583209cd5cd7e2375fe8fac1269bc09ca313574912df04",
"md5": "d22788112fc798b0b66f67fd0bed233a",
"sha256": "dae9099dfed9a944ec5bb0f930299b5e9cb39988bd069a947a49b4c263135a5d"
},
"downloads": -1,
"filename": "starfishX-0.155555.tar.gz",
"has_sig": false,
"md5_digest": "d22788112fc798b0b66f67fd0bed233a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 94689,
"upload_time": "2023-03-11T04:03:02",
"upload_time_iso_8601": "2023-03-11T04:03:02.465673Z",
"url": "https://files.pythonhosted.org/packages/fa/88/8070d24e79fdd0583209cd5cd7e2375fe8fac1269bc09ca313574912df04/starfishX-0.155555.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-11 04:03:02",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "tapattan",
"github_project": "starfishX",
"lcname": "starfishx"
}