Esempio n. 1
0
    def _download_ticker(self, date):
        if 'date' not in self.df.columns or len(
                self.df[self.df['date'].dt.day == date.day]) == 0:
            for index in {"KOSPI": "02", "KOSDAQ": "03"}.values():
                df = MKD20011().read(date, index)
                if len(df) == 0:
                    continue

                df = df.set_index('idx_nm')
                df['date'] = date
                df['ind_tp_cd'] = df['ind_tp_cd'].apply(
                    lambda x: "KOSPI" if x == "1" else "KOSDAQ")
                self.df = self.df.append(df)
Esempio n. 2
0
    def _get(self, date, market):
        try:
            cond = (self.df['date'] == date) & (self.df['ind_tp_cd'] == market)
            if len(self.df[cond]) == 0:
                raise KeyError
        except KeyError:
            index = {"KOSPI": "02", "KOSDAQ": "03"}.get(market, "KOSPI")
            df = MKD20011().read(date, index)
            if len(df) == 0:
                return df

            df = df.set_index('idx_nm')
            df['date'] = date
            df['ind_tp_cd'] = df['ind_tp_cd'].apply(lambda x: "KOSPI"
                                                    if x == "1" else "KOSDAQ")
            self.df = self.df.append(df)
Esempio n. 3
0
def get_index_status_by_group(date, market):
    """시장지수
    :param date: 조회 일자 (YYYYMMDD)
    :return    : 시장 지수 DataFrame
                                   기준시점    발표시점 기준지수 현재지수    시가총액
        코스피                   1983.01.04  1980.01.04   100.0   2486.35  1617634318
        코스피 벤치마크           2015.09.14  2010.01.04  1696.0   2506.92  1554948117
        코스피 비중제한 8% 지수   2017.12.18  2015.01.02  1000.0   1272.93  1559869409
        코스피 200               1994.06.15  1990.01.03   100.0    327.13  1407647304
        코스피 100               2000.03.02  2000.01.04  1000.0   2489.34  1277592989
        코스피 50                2000.03.02  2000.01.04  1000.0   2205.53  1102490712
    """
    market = {"KOSPI": "02", "KOSDAQ": "03"}.get(market, "02")
    df = MKD20011().fetch(date, market)
    df = df[[
        'idx_nm', 'annc_tm', 'bas_tm', 'bas_idx', 'prsnt_prc', 'idx_mktcap'
    ]]
    df.columns = ['지수명', '기준시점', '발표시점', '기준지수', '현재지수', '시가총액']
    df = df.set_index('지수명')
    df = df.replace(',', '', regex=True)
    df = df.replace('', 0)
    df = df.astype({"기준지수": float, "현재지수": float, "시가총액": int}, )
    return df
Esempio n. 4
0
    def func_wrapper(self, *args, **kwargs):
        if self.df.empty:
            # 02 : KOSPI / 03 : KOSDAQ
            for index in ["02", "03"]:
                # date is not supported
                df = MKD20011().fetch("", index)
                if len(df) == 0:
                    continue

                df = df[[
                    'idx_nm', 'bas_idx', 'ind_tp_cd', 'bas_tm', 'idx_clss',
                    'idx_ind_cd'
                ]]
                df.columns = ['지수명', '기준지수', '시장', '기준시점', '구분', '티커']
                # 다른 지수에 같은 티커가 존재함. 중복 문제를 피하기 위해 코스피 1xxx 코스닥 2xxx로
                # 내부에서 사용함
                df['티커'] = df['시장'] + df['티커']
                df['시장'] = df['시장'].apply(lambda x: "KOSPI"
                                          if x == "1" else "KOSDAQ")
                df['기준시점'] = pd.to_datetime(df['기준시점'])
                df = df.set_index('티커')
                self.df = self.df.append(df)

        return method(self, *args, **kwargs)