{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import pandas as pd\n",
"import zipfile\n",
"import requests\n",
"import io\n",
"from datetime import datetime,timedelta, date\n",
"import datetime "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def getLinkDownload(text):\n",
" if text.find('/Download/BalanceposEfek') != -1:\n",
" return 1\n",
" else:\n",
" return 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Description\n",
"Kepemilikan saham ada yang dimiliki lokal (Local) atau asing (Foreign). Keduanya dibagi menjadi beberapa kelompok yaitu\n",
"\n",
"- IS – Insurance (perusahaan asuransi)\n",
"- CP – Corporate (perusahaan)\n",
"- PF – Pension Fund (Dana Pensiun)\n",
"- IB – Institutional Banking (Bank)\n",
"- ID – Individual (Investor individu)\n",
"- MF – Mutual Fund (Perusahaan Reksadana)\n",
"- SC – Securities (Perusahaan Efek)\n",
"- FD – Foundation (Yayasan)\n",
"- OT – Others (Lainnya)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Find Pattern\n",
"Kita akan menggunakan fasilitas download via file zip untuk mendapatkan data kepemilikan saham di website KSEI."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"URL = \"https://www.ksei.co.id/archive_download/holding_composition\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"page = requests.get(URL)\n",
"soup = BeautifulSoup(page.content, 'html.parser')\n",
"ahref = soup.find_all(\"a\",href=True) #mendapatkan semua tag a href "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"ahref_extract = [k.get(\"href\") for k in ahref ] # extract url di dalam href"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"link_download = [k for k in ahref_extract if getLinkDownload(k)==1] #mengambil tag a href yang mengandung link donwload"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['/Download/BalanceposEfek20210930.zip',\n",
" '/Download/BalanceposEfek20210831.zip',\n",
" '/Download/BalanceposEfek20210730.zip',\n",
" '/Download/BalanceposEfek20210630.zip',\n",
" '/Download/BalanceposEfek20210531.zip',\n",
" '/Download/BalanceposEfek20210430.zip',\n",
" '/Download/BalanceposEfek20210331.zip',\n",
" '/Download/BalanceposEfek20210226.zip',\n",
" '/Download/BalanceposEfek20210129.zip']"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"link_download"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"main_url = 'https://www.ksei.co.id'\n",
"full_url = [main_url + k for k in link_download ]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['https://www.ksei.co.id/Download/BalanceposEfek20210930.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210831.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210730.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210630.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210531.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210430.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210331.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210226.zip',\n",
" 'https://www.ksei.co.id/Download/BalanceposEfek20210129.zip']"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_url"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Import Data\n",
"Setelah pattern berhasil didapatkan, maka selanjutnya melakukan download dan import data"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"ls_kepemilikan = []\n",
"for k in full_url:\n",
" r = requests.get(k) #request\n",
" z = zipfile.ZipFile(io.BytesIO(r.content)) #download dalam bentuk zip\n",
" filename = z.filelist[0].filename #mendapatkan nama file utk digunakan sebagai parameter input data\n",
" z.extractall() #extract file zip\n",
" df = pd.read_csv(filename,sep='|') #read data csv\n",
" ls_kepemilikan.append(df)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"df_kepemilikan = pd.concat(ls_kepemilikan)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# kolom Total menunjukkan total local, kolom Total.1 menunjukkan total foreign\n",
"df_kepemilikan.rename(columns={\"Total\":\"Total Local\",\n",
" \"Total.1\":\"Total Foreign\"},inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Date | \n",
" Code | \n",
" Type | \n",
" Sec. Num | \n",
" Price | \n",
" Local IS | \n",
" Local CP | \n",
" Local PF | \n",
" Local IB | \n",
" Local ID | \n",
" ... | \n",
" Foreign IS | \n",
" Foreign CP | \n",
" Foreign PF | \n",
" Foreign IB | \n",
" Foreign ID | \n",
" Foreign MF | \n",
" Foreign SC | \n",
" Foreign FD | \n",
" Foreign OT | \n",
" Total Foreign | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 30-SEP-2021 | \n",
" AALI | \n",
" EQUITY | \n",
" 1924688333 | \n",
" 9775 | \n",
" 98046648.0 | \n",
" 1.282314e+07 | \n",
" 24024315 | \n",
" 49700 | \n",
" 112262713 | \n",
" ... | \n",
" 1722373 | \n",
" 4502836 | \n",
" 7364706 | \n",
" 17082815 | \n",
" 1966864 | \n",
" 32411811 | \n",
" 26161535 | \n",
" 208822 | \n",
" 5760536 | \n",
" 97182298 | \n",
"
\n",
" \n",
" 1 | \n",
" 30-SEP-2021 | \n",
" ABBA | \n",
" EQUITY | \n",
" 2755125000 | \n",
" 535 | \n",
" 42084400.0 | \n",
" 1.724088e+09 | \n",
" 1390500 | \n",
" 0 | \n",
" 485142947 | \n",
" ... | \n",
" 0 | \n",
" 20400 | \n",
" 0 | \n",
" 37158500 | \n",
" 3684300 | \n",
" 0 | \n",
" 1900 | \n",
" 0 | \n",
" 0 | \n",
" 40865100 | \n",
"
\n",
" \n",
" 2 | \n",
" 30-SEP-2021 | \n",
" ABDA | \n",
" EQUITY | \n",
" 620806680 | \n",
" 6950 | \n",
" 21885.0 | \n",
" 4.754088e+07 | \n",
" 0 | \n",
" 98 | \n",
" 47918272 | \n",
" ... | \n",
" 0 | \n",
" 426136555 | \n",
" 0 | \n",
" 97403500 | \n",
" 400 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 62 | \n",
" 523540517 | \n",
"
\n",
" \n",
" 3 | \n",
" 30-SEP-2021 | \n",
" ABMM | \n",
" EQUITY | \n",
" 2753165000 | \n",
" 1200 | \n",
" 2277000.0 | \n",
" 7.030500e+06 | \n",
" 1600 | \n",
" 0 | \n",
" 66518400 | \n",
" ... | \n",
" 0 | \n",
" 57406700 | \n",
" 0 | \n",
" 7628100 | \n",
" 411600 | \n",
" 10351700 | \n",
" 0 | \n",
" 0 | \n",
" 452514400 | \n",
" 528312500 | \n",
"
\n",
" \n",
" 4 | \n",
" 30-SEP-2021 | \n",
" ACES | \n",
" EQUITY | \n",
" 17150000000 | \n",
" 1270 | \n",
" 278775522.0 | \n",
" 1.039961e+08 | \n",
" 19573511 | \n",
" 0 | \n",
" 318630511 | \n",
" ... | \n",
" 20220800 | \n",
" 602545467 | \n",
" 1243693406 | \n",
" 464664725 | \n",
" 955700 | \n",
" 2218346946 | \n",
" 176680654 | \n",
" 917900 | \n",
" 1136360191 | \n",
" 5864385789 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 25 columns
\n",
"
"
],
"text/plain": [
" Date Code Type Sec. Num Price Local IS Local CP \\\n",
"0 30-SEP-2021 AALI EQUITY 1924688333 9775 98046648.0 1.282314e+07 \n",
"1 30-SEP-2021 ABBA EQUITY 2755125000 535 42084400.0 1.724088e+09 \n",
"2 30-SEP-2021 ABDA EQUITY 620806680 6950 21885.0 4.754088e+07 \n",
"3 30-SEP-2021 ABMM EQUITY 2753165000 1200 2277000.0 7.030500e+06 \n",
"4 30-SEP-2021 ACES EQUITY 17150000000 1270 278775522.0 1.039961e+08 \n",
"\n",
" Local PF Local IB Local ID ... Foreign IS Foreign CP Foreign PF \\\n",
"0 24024315 49700 112262713 ... 1722373 4502836 7364706 \n",
"1 1390500 0 485142947 ... 0 20400 0 \n",
"2 0 98 47918272 ... 0 426136555 0 \n",
"3 1600 0 66518400 ... 0 57406700 0 \n",
"4 19573511 0 318630511 ... 20220800 602545467 1243693406 \n",
"\n",
" Foreign IB Foreign ID Foreign MF Foreign SC Foreign FD Foreign OT \\\n",
"0 17082815 1966864 32411811 26161535 208822 5760536 \n",
"1 37158500 3684300 0 1900 0 0 \n",
"2 97403500 400 0 0 0 62 \n",
"3 7628100 411600 10351700 0 0 452514400 \n",
"4 464664725 955700 2218346946 176680654 917900 1136360191 \n",
"\n",
" Total Foreign \n",
"0 97182298 \n",
"1 40865100 \n",
"2 523540517 \n",
"3 528312500 \n",
"4 5864385789 \n",
"\n",
"[5 rows x 25 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_kepemilikan.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Cleaning Date Format"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"datelist = list(set(df_kepemilikan['Date']))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"fixed_date = []\n",
"for k in datelist:\n",
" day = int(k.split('-')[0])\n",
" month = int(datetime.datetime.strptime(str(k.split('-')[1]), \"%b\").month)\n",
" year = int(k.split('-')[2])\n",
" date = datetime.date(year, month, day)\n",
" fixed_date.append([k,date])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"df_fixed_date = pd.DataFrame(fixed_date)\n",
"df_fixed_date.columns = ['Date','Date_Format']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"df = pd.merge(df_kepemilikan,df_fixed_date,on='Date',how='inner')\n",
"df['Date'] = df['Date_Format']\n",
"df.drop('Date_Format',axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Date | \n",
" Code | \n",
" Type | \n",
" Sec. Num | \n",
" Price | \n",
" Local IS | \n",
" Local CP | \n",
" Local PF | \n",
" Local IB | \n",
" Local ID | \n",
" ... | \n",
" Foreign IS | \n",
" Foreign CP | \n",
" Foreign PF | \n",
" Foreign IB | \n",
" Foreign ID | \n",
" Foreign MF | \n",
" Foreign SC | \n",
" Foreign FD | \n",
" Foreign OT | \n",
" Total Foreign | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 2021-09-30 | \n",
" AALI | \n",
" EQUITY | \n",
" 1924688333 | \n",
" 9775 | \n",
" 98046648.0 | \n",
" 1.282314e+07 | \n",
" 24024315 | \n",
" 49700 | \n",
" 112262713 | \n",
" ... | \n",
" 1722373 | \n",
" 4502836 | \n",
" 7364706 | \n",
" 17082815 | \n",
" 1966864 | \n",
" 32411811 | \n",
" 26161535 | \n",
" 208822 | \n",
" 5760536 | \n",
" 97182298 | \n",
"
\n",
" \n",
" 1 | \n",
" 2021-09-30 | \n",
" ABBA | \n",
" EQUITY | \n",
" 2755125000 | \n",
" 535 | \n",
" 42084400.0 | \n",
" 1.724088e+09 | \n",
" 1390500 | \n",
" 0 | \n",
" 485142947 | \n",
" ... | \n",
" 0 | \n",
" 20400 | \n",
" 0 | \n",
" 37158500 | \n",
" 3684300 | \n",
" 0 | \n",
" 1900 | \n",
" 0 | \n",
" 0 | \n",
" 40865100 | \n",
"
\n",
" \n",
" 2 | \n",
" 2021-09-30 | \n",
" ABDA | \n",
" EQUITY | \n",
" 620806680 | \n",
" 6950 | \n",
" 21885.0 | \n",
" 4.754088e+07 | \n",
" 0 | \n",
" 98 | \n",
" 47918272 | \n",
" ... | \n",
" 0 | \n",
" 426136555 | \n",
" 0 | \n",
" 97403500 | \n",
" 400 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 62 | \n",
" 523540517 | \n",
"
\n",
" \n",
" 3 | \n",
" 2021-09-30 | \n",
" ABMM | \n",
" EQUITY | \n",
" 2753165000 | \n",
" 1200 | \n",
" 2277000.0 | \n",
" 7.030500e+06 | \n",
" 1600 | \n",
" 0 | \n",
" 66518400 | \n",
" ... | \n",
" 0 | \n",
" 57406700 | \n",
" 0 | \n",
" 7628100 | \n",
" 411600 | \n",
" 10351700 | \n",
" 0 | \n",
" 0 | \n",
" 452514400 | \n",
" 528312500 | \n",
"
\n",
" \n",
" 4 | \n",
" 2021-09-30 | \n",
" ACES | \n",
" EQUITY | \n",
" 17150000000 | \n",
" 1270 | \n",
" 278775522.0 | \n",
" 1.039961e+08 | \n",
" 19573511 | \n",
" 0 | \n",
" 318630511 | \n",
" ... | \n",
" 20220800 | \n",
" 602545467 | \n",
" 1243693406 | \n",
" 464664725 | \n",
" 955700 | \n",
" 2218346946 | \n",
" 176680654 | \n",
" 917900 | \n",
" 1136360191 | \n",
" 5864385789 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 25 columns
\n",
"
"
],
"text/plain": [
" Date Code Type Sec. Num Price Local IS Local CP \\\n",
"0 2021-09-30 AALI EQUITY 1924688333 9775 98046648.0 1.282314e+07 \n",
"1 2021-09-30 ABBA EQUITY 2755125000 535 42084400.0 1.724088e+09 \n",
"2 2021-09-30 ABDA EQUITY 620806680 6950 21885.0 4.754088e+07 \n",
"3 2021-09-30 ABMM EQUITY 2753165000 1200 2277000.0 7.030500e+06 \n",
"4 2021-09-30 ACES EQUITY 17150000000 1270 278775522.0 1.039961e+08 \n",
"\n",
" Local PF Local IB Local ID ... Foreign IS Foreign CP Foreign PF \\\n",
"0 24024315 49700 112262713 ... 1722373 4502836 7364706 \n",
"1 1390500 0 485142947 ... 0 20400 0 \n",
"2 0 98 47918272 ... 0 426136555 0 \n",
"3 1600 0 66518400 ... 0 57406700 0 \n",
"4 19573511 0 318630511 ... 20220800 602545467 1243693406 \n",
"\n",
" Foreign IB Foreign ID Foreign MF Foreign SC Foreign FD Foreign OT \\\n",
"0 17082815 1966864 32411811 26161535 208822 5760536 \n",
"1 37158500 3684300 0 1900 0 0 \n",
"2 97403500 400 0 0 0 62 \n",
"3 7628100 411600 10351700 0 0 452514400 \n",
"4 464664725 955700 2218346946 176680654 917900 1136360191 \n",
"\n",
" Total Foreign \n",
"0 97182298 \n",
"1 40865100 \n",
"2 523540517 \n",
"3 528312500 \n",
"4 5864385789 \n",
"\n",
"[5 rows x 25 columns]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4. Summary\n",
"Pada tahapan ini kita sudah mulai melakukan ekslorasi data sesuai yang kita inginkan"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4.1 Proporsi Lokal vs Asing\n",
"Kita akan menacari berapa persentase asing dan lokal untuk masing masing emiten selama beberapa bulan"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"df['Total All'] = df['Total Local'] + df['Total Foreign']"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"df['persentase_lokal'] = 100*df['Total Local']/df['Total All']\n",
"df['persentase_asing'] = 100*df['Total Foreign']/df['Total All']"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"df1 = df[['Date','Type','Code','Price','persentase_lokal','persentase_asing']]\n",
"df1 = df1[df1.Type=='EQUITY']"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"desired_emiten = ['ACES','ADRO','ANTM','ASII','BRIS','CPIN','ICBP',\n",
" 'INDF','JSMR','KAEF','KLBF','TLKM','UNVR','WIKA',\n",
" 'BBCA','BBNI','BMRI','BUKA','EMTK']"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"df_filter1 = df1[df1.Code.isin(desired_emiten)].sort_values('persentase_asing',ascending=False)\n",
"df_filter1.sort_values('Date',ascending=True,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Date | \n",
" Type | \n",
" Code | \n",
" Price | \n",
" persentase_lokal | \n",
" persentase_asing | \n",
"
\n",
" \n",
" \n",
" \n",
" 18117 | \n",
" 2021-01-29 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3110 | \n",
" 29.663063 | \n",
" 70.336937 | \n",
"
\n",
" \n",
" 15933 | \n",
" 2021-02-26 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3490 | \n",
" 28.820007 | \n",
" 71.179993 | \n",
"
\n",
" \n",
" 13747 | \n",
" 2021-03-31 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3420 | \n",
" 28.128730 | \n",
" 71.871270 | \n",
"
\n",
" \n",
" 11565 | \n",
" 2021-04-30 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3200 | \n",
" 28.176963 | \n",
" 71.823037 | \n",
"
\n",
" \n",
" 9402 | \n",
" 2021-05-31 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3440 | \n",
" 27.915379 | \n",
" 72.084621 | \n",
"
\n",
" \n",
" 7246 | \n",
" 2021-06-30 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3150 | \n",
" 27.244481 | \n",
" 72.755519 | \n",
"
\n",
" \n",
" 5076 | \n",
" 2021-07-30 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3240 | \n",
" 27.140362 | \n",
" 72.859638 | \n",
"
\n",
" \n",
" 2911 | \n",
" 2021-08-31 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3400 | \n",
" 26.457086 | \n",
" 73.542914 | \n",
"
\n",
" \n",
" 719 | \n",
" 2021-09-30 | \n",
" EQUITY | \n",
" TLKM | \n",
" 3690 | \n",
" 25.585615 | \n",
" 74.414385 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Type Code Price persentase_lokal persentase_asing\n",
"18117 2021-01-29 EQUITY TLKM 3110 29.663063 70.336937\n",
"15933 2021-02-26 EQUITY TLKM 3490 28.820007 71.179993\n",
"13747 2021-03-31 EQUITY TLKM 3420 28.128730 71.871270\n",
"11565 2021-04-30 EQUITY TLKM 3200 28.176963 71.823037\n",
"9402 2021-05-31 EQUITY TLKM 3440 27.915379 72.084621\n",
"7246 2021-06-30 EQUITY TLKM 3150 27.244481 72.755519\n",
"5076 2021-07-30 EQUITY TLKM 3240 27.140362 72.859638\n",
"2911 2021-08-31 EQUITY TLKM 3400 26.457086 73.542914\n",
"719 2021-09-30 EQUITY TLKM 3690 25.585615 74.414385"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_filter1[df_filter1.Code=='TLKM']"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Date | \n",
" Type | \n",
" Code | \n",
" Price | \n",
" persentase_lokal | \n",
" persentase_asing | \n",
"
\n",
" \n",
" \n",
" \n",
" 4372 | \n",
" 2021-07-30 | \n",
" EQUITY | \n",
" ACES | \n",
" 1320 | \n",
" 12.912900 | \n",
" 87.087100 | \n",
"
\n",
" \n",
" 2205 | \n",
" 2021-08-31 | \n",
" EQUITY | \n",
" ACES | \n",
" 1390 | \n",
" 13.281219 | \n",
" 86.718781 | \n",
"
\n",
" \n",
" 17608 | \n",
" 2021-01-29 | \n",
" EQUITY | \n",
" CPIN | \n",
" 5750 | \n",
" 13.359545 | \n",
" 86.640455 | \n",
"
\n",
" \n",
" 15423 | \n",
" 2021-02-26 | \n",
" EQUITY | \n",
" CPIN | \n",
" 6150 | \n",
" 13.748108 | \n",
" 86.251892 | \n",
"
\n",
" \n",
" 187 | \n",
" 2021-09-30 | \n",
" EQUITY | \n",
" CPIN | \n",
" 6425 | \n",
" 14.298519 | \n",
" 85.701481 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Type Code Price persentase_lokal persentase_asing\n",
"4372 2021-07-30 EQUITY ACES 1320 12.912900 87.087100\n",
"2205 2021-08-31 EQUITY ACES 1390 13.281219 86.718781\n",
"17608 2021-01-29 EQUITY CPIN 5750 13.359545 86.640455\n",
"15423 2021-02-26 EQUITY CPIN 6150 13.748108 86.251892\n",
"187 2021-09-30 EQUITY CPIN 6425 14.298519 85.701481"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_filter1.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Store Data"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"df.to_csv('DataKepemilikanSaham.csv',index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Refference\n",
"1. https://www.ksei.co.id/archive_download/holding_composition\n",
"2. https://www.ksei.co.id/Download/Panduan_Data_Statik_Investor.pdf\n",
"3. https://www.programiz.com/python-programming/datetime/strftime"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}