diff --git a/secret b/secret index bb3a6fdb8..fcd6edc86 160000 --- a/secret +++ b/secret @@ -1 +1 @@ -Subproject commit bb3a6fdb8fc8d733de001ec3b073d719c3ce2b2f +Subproject commit fcd6edc866f4dd1baf7489f553636cdbdb15c4bb diff --git a/src/main/java/codesquad/fineants/domain/kis/config/KisConfig.java b/src/main/java/codesquad/fineants/domain/kis/config/KisConfig.java index 64d1d4b5a..8e34842cc 100644 --- a/src/main/java/codesquad/fineants/domain/kis/config/KisConfig.java +++ b/src/main/java/codesquad/fineants/domain/kis/config/KisConfig.java @@ -1,13 +1,9 @@ package codesquad.fineants.domain.kis.config; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.client.WebClient; -import codesquad.fineants.domain.kis.properties.OauthKisProperties; - -@EnableConfigurationProperties(value = OauthKisProperties.class) @Configuration public class KisConfig { diff --git a/src/main/java/codesquad/fineants/domain/member/domain/entity/Member.java b/src/main/java/codesquad/fineants/domain/member/domain/entity/Member.java index aafcf80f0..cec1e791e 100644 --- a/src/main/java/codesquad/fineants/domain/member/domain/entity/Member.java +++ b/src/main/java/codesquad/fineants/domain/member/domain/entity/Member.java @@ -22,6 +22,7 @@ import jakarta.persistence.OneToMany; import jakarta.persistence.OneToOne; import lombok.AccessLevel; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; @@ -30,6 +31,7 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @ToString(exclude = {"notificationPreference", "roles"}) +@EqualsAndHashCode(of = {"email", "nickname", "provider"}, callSuper = false) public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/codesquad/fineants/domain/member/domain/entity/Role.java b/src/main/java/codesquad/fineants/domain/member/domain/entity/Role.java index eeea61b51..ab7eba00c 100644 --- a/src/main/java/codesquad/fineants/domain/member/domain/entity/Role.java +++ b/src/main/java/codesquad/fineants/domain/member/domain/entity/Role.java @@ -10,6 +10,7 @@ import jakarta.persistence.Table; import lombok.AccessLevel; import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; @@ -18,6 +19,7 @@ @Table(name = "ROLE") @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PRIVATE) +@EqualsAndHashCode(of = {"roleName", "roleDescription"}) @ToString @Getter public class Role { diff --git a/src/main/java/codesquad/fineants/domain/member/repository/MemberRepository.java b/src/main/java/codesquad/fineants/domain/member/repository/MemberRepository.java index 17b5588a2..70219af6b 100644 --- a/src/main/java/codesquad/fineants/domain/member/repository/MemberRepository.java +++ b/src/main/java/codesquad/fineants/domain/member/repository/MemberRepository.java @@ -10,7 +10,8 @@ import codesquad.fineants.domain.member.domain.entity.Member; public interface MemberRepository extends JpaRepository { - Optional findMemberByEmailAndProvider(String email, String provider); + @Query("select distinct m from Member m join fetch m.roles where m.email = :email and m.provider = :provider") + Optional findMemberByEmailAndProvider(@Param("email") String email, @Param("provider") String provider); @Query("select m from Member m where m.nickname = :nickname and m.id != :memberId") Optional findMemberByNicknameAndNotMemberId(@Param("nickname") String nickname, diff --git a/src/main/java/codesquad/fineants/domain/stock/domain/entity/Market.java b/src/main/java/codesquad/fineants/domain/stock/domain/entity/Market.java index 087e61f7c..b76446bfa 100644 --- a/src/main/java/codesquad/fineants/domain/stock/domain/entity/Market.java +++ b/src/main/java/codesquad/fineants/domain/stock/domain/entity/Market.java @@ -3,11 +3,17 @@ import java.util.Arrays; public enum Market { - KOSPI, KOSDAQ, KONEX, KOSDAQ_GLOBAL, NONE; + KOSPI("KOSPI"), KOSDAQ("KOSDAQ"), KONEX("KONEX"), KOSDAQ_GLOBAL("KOSDAQ GLOBAL"), NONE("NONE"); + + private final String name; + + Market(String name) { + this.name = name; + } public static Market ofMarket(String dbData) { return Arrays.stream(values()) - .filter(market -> market.name().equals(dbData)) + .filter(market -> market.name.equals(dbData)) .findAny() .orElse(NONE); } diff --git a/src/main/java/codesquad/fineants/domain/stock/domain/entity/Stock.java b/src/main/java/codesquad/fineants/domain/stock/domain/entity/Stock.java index 149ecf501..ae1485741 100644 --- a/src/main/java/codesquad/fineants/domain/stock/domain/entity/Stock.java +++ b/src/main/java/codesquad/fineants/domain/stock/domain/entity/Stock.java @@ -2,6 +2,7 @@ import java.time.LocalDate; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -65,13 +66,20 @@ public static Stock of(String tickerSymbol, String companyName, String companyNa } public static Stock parse(String[] data) { - String stockCode = data[0]; - String tickerSymbol = data[1]; - String companyName = data[2]; - String companyNameEng = data[3]; - Market market = Market.ofMarket(data[4]); - String sector = data[5]; - return new Stock(tickerSymbol, companyName, companyNameEng, stockCode, sector, market); + try { + String stockCode = data[0]; + String tickerSymbol = data[1]; + String companyName = data[2]; + String companyNameEng = data[3]; + Market market = Market.ofMarket(data[4]); + String sector = "none"; + if (data.length >= 6) { + sector = data[5]; + } + return new Stock(tickerSymbol, companyName, companyNameEng, stockCode, sector, market); + } catch (ArrayIndexOutOfBoundsException e) { + throw new ArrayIndexOutOfBoundsException("out of index, data:" + Arrays.toString(data)); + } } public void addStockDividend(StockDividend stockDividend) { diff --git a/src/main/java/codesquad/fineants/domain/stock/service/StockCsvReader.java b/src/main/java/codesquad/fineants/domain/stock/service/StockCsvReader.java index c40467460..871e5a39c 100644 --- a/src/main/java/codesquad/fineants/domain/stock/service/StockCsvReader.java +++ b/src/main/java/codesquad/fineants/domain/stock/service/StockCsvReader.java @@ -1,30 +1,48 @@ package codesquad.fineants.domain.stock.service; import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVRecord; +import org.apache.logging.log4j.util.Strings; +import org.jetbrains.annotations.NotNull; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Component; -import codesquad.fineants.domain.stock.domain.dto.response.StockDataResponse; +import codesquad.fineants.domain.common.money.Money; +import codesquad.fineants.domain.dividend.domain.entity.StockDividend; import codesquad.fineants.domain.stock.domain.dto.response.StockSectorResponse; +import codesquad.fineants.domain.stock.domain.entity.Market; +import codesquad.fineants.domain.stock.domain.entity.Stock; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; @Component +@RequiredArgsConstructor +@Slf4j public class StockCsvReader { - public Set readStockCsv() { + public Set readStockCsv() { Resource resource = new ClassPathResource("stocks.csv"); - Set result = new HashSet<>(); + Set result = new HashSet<>(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()))) { Iterable records = CSVFormat.DEFAULT .withHeader("stockCode", "tickerSymbol", "companyName", "companyNameEng", "market", "sector") @@ -32,14 +50,15 @@ public Set readStockCsv() { .parse(reader); for (CSVRecord record : records) { - StockDataResponse.StockInfo stockInfo = StockDataResponse.StockInfo.of( - record.get("stockCode"), + Stock stock = Stock.of( record.get("tickerSymbol"), record.get("companyName"), record.get("companyNameEng"), - record.get("market") + record.get("stockCode"), + record.get("sector"), + Market.ofMarket(record.get("market")) ); - result.add(stockInfo); + result.add(stock); } } catch (IOException e) { return Collections.emptySet(); @@ -110,4 +129,46 @@ public Map readKosdaqCsv() { } return result; } + + public List readDividendCsv(List stocks) { + ClassLoader classLoader = getClass().getClassLoader(); + File file = new File(Objects.requireNonNull(classLoader.getResource("dividends.csv")).getFile()); + + List result = new ArrayList<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + Iterable records = CSVFormat.DEFAULT + .withHeader("id", "dividend", "recordDate", "paymentDate", "stockCode") + .withSkipHeaderRecord() + .parse(reader); + + Map stockMap = stocks.stream() + .collect(Collectors.toMap(Stock::getStockCode, stock -> stock)); + for (CSVRecord record : records) { + Stock stock = stockMap.get(record.get("stockCode")); + if (stock == null) { + continue; + } + StockDividend stockDividend = StockDividend.create( + Long.valueOf(record.get("id")), + Money.won(record.get("dividend")), + basicIso(record.get("recordDate")).orElse(null), + basicIso(record.get("paymentDate")).orElse(null), + stock + ); + result.add(stockDividend); + } + } catch (IOException e) { + log.error(e.getMessage()); + return Collections.emptyList(); + } + return result; + } + + @NotNull + private Optional basicIso(String localDateString) { + if (Strings.isBlank(localDateString)) { + return Optional.empty(); + } + return Optional.of(LocalDate.parse(localDateString, DateTimeFormatter.BASIC_ISO_DATE)); + } } diff --git a/src/main/java/codesquad/fineants/domain/stock/service/StockService.java b/src/main/java/codesquad/fineants/domain/stock/service/StockService.java index e6b825f09..5b9c0d546 100644 --- a/src/main/java/codesquad/fineants/domain/stock/service/StockService.java +++ b/src/main/java/codesquad/fineants/domain/stock/service/StockService.java @@ -58,7 +58,7 @@ public StockResponse getDetailedStock(String tickerSymbol) { return StockResponse.of(stock, currentPriceRepository, closingPriceRepository); } - @Scheduled(cron = "0 0 8 * * ?") // 매일 오전 8시 (초, 분, 시간) + @Scheduled(cron = "${cron.expression.reload-stocks:0 0 8 * * ?}") // 매일 오전 8시 (초, 분, 시간) @Transactional public void scheduledReloadStocks() { reloadStocks(); diff --git a/src/main/java/codesquad/fineants/global/config/SpringConfig.java b/src/main/java/codesquad/fineants/global/config/SpringConfig.java index 7ef17be5c..7b1a4c6cd 100644 --- a/src/main/java/codesquad/fineants/global/config/SpringConfig.java +++ b/src/main/java/codesquad/fineants/global/config/SpringConfig.java @@ -4,10 +4,16 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; +import codesquad.fineants.domain.kis.properties.OauthKisProperties; import codesquad.fineants.domain.portfolio.properties.PortfolioProperties; +import codesquad.fineants.global.init.properties.AdminProperties; +import codesquad.fineants.global.init.properties.ManagerProperties; +import codesquad.fineants.global.init.properties.RoleProperties; +import codesquad.fineants.global.init.properties.UserProperties; @EnableAspectJAutoProxy -@EnableConfigurationProperties(value = PortfolioProperties.class) +@EnableConfigurationProperties(value = {PortfolioProperties.class, AdminProperties.class, ManagerProperties.class, + OauthKisProperties.class, RoleProperties.class, UserProperties.class}) @Configuration public class SpringConfig { } diff --git a/src/main/java/codesquad/fineants/global/init/SetupDataLoader.java b/src/main/java/codesquad/fineants/global/init/SetupDataLoader.java index 973aca7b0..68af57a6d 100644 --- a/src/main/java/codesquad/fineants/global/init/SetupDataLoader.java +++ b/src/main/java/codesquad/fineants/global/init/SetupDataLoader.java @@ -1,23 +1,23 @@ package codesquad.fineants.global.init; -import java.util.HashSet; +import java.util.List; import java.util.Set; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.logging.log4j.util.Strings; import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Profile; -import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import codesquad.fineants.domain.dividend.service.StockDividendService; +import codesquad.fineants.domain.dividend.repository.StockDividendRepository; import codesquad.fineants.domain.exchangerate.domain.entity.ExchangeRate; import codesquad.fineants.domain.exchangerate.repository.ExchangeRateRepository; +import codesquad.fineants.domain.exchangerate.service.ExchangeRateService; import codesquad.fineants.domain.kis.service.KisService; import codesquad.fineants.domain.member.domain.entity.Member; import codesquad.fineants.domain.member.domain.entity.MemberRole; @@ -26,147 +26,159 @@ import codesquad.fineants.domain.member.repository.RoleRepository; import codesquad.fineants.domain.notificationpreference.domain.entity.NotificationPreference; import codesquad.fineants.domain.notificationpreference.repository.NotificationPreferenceRepository; +import codesquad.fineants.domain.stock.repository.StockRepository; import codesquad.fineants.global.errors.errorcode.MemberErrorCode; import codesquad.fineants.global.errors.errorcode.RoleErrorCode; import codesquad.fineants.global.errors.exception.FineAntsException; +import codesquad.fineants.global.init.properties.AdminProperties; +import codesquad.fineants.global.init.properties.ManagerProperties; +import codesquad.fineants.global.init.properties.RoleProperties; +import codesquad.fineants.global.init.properties.UserProperties; import codesquad.fineants.global.security.oauth.dto.MemberAuthentication; +import codesquad.fineants.infra.s3.service.AmazonS3DividendService; +import codesquad.fineants.infra.s3.service.AmazonS3StockService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -@Profile(value = {"local", "dev", "release", "production"}) @Component @RequiredArgsConstructor @Slf4j -public class SetupDataLoader implements ApplicationListener { - - private boolean alreadySetup = false; +public class SetupDataLoader { private final KisService kisService; - private final StockDividendService stockDividendService; private final RoleRepository roleRepository; private final MemberRepository memberRepository; private final NotificationPreferenceRepository notificationPreferenceRepository; private final PasswordEncoder passwordEncoder; private final ExchangeRateRepository exchangeRateRepository; - @Value("${member.admin.password}") - private String password; + private final ExchangeRateService exchangeRateService; + private final AdminProperties adminProperties; + private final ManagerProperties managerProperties; + private final UserProperties userProperties; + private final RoleProperties roleProperties; + private final AmazonS3StockService amazonS3StockService; + private final StockRepository stockRepository; + private final StockDividendRepository stockDividendRepository; + private final AmazonS3DividendService amazonS3DividendService; - @Override @Transactional - public void onApplicationEvent(@NotNull ContextRefreshedEvent event) { - if (alreadySetup) { - return; - } + public void setupResources() { setupSecurityResources(); setupMemberResources(); setAdminAuthentication(); setupExchangeRateResources(); + setupStockResources(); + setupStockDividendResources(); log.info("애플리케이션 시작시 종목 현재가 및 종가 초기화 시작"); kisService.refreshCurrentPrice(); kisService.refreshClosingPrice(); log.info("애플리케이션 시작시 종목 현재가 및 종가 초기화 종료"); - alreadySetup = true; } - private void setAdminAuthentication() { - Member admin = memberRepository.findMemberByEmailAndProvider("admin@admin.com", "local") - .orElseThrow(() -> new FineAntsException(MemberErrorCode.NOT_FOUND_MEMBER)); - MemberAuthentication memberAuthentication = MemberAuthentication.from(admin); - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( - memberAuthentication, - Strings.EMPTY, - memberAuthentication.getSimpleGrantedAuthority() - ); - SecurityContextHolder.getContext().setAuthentication(authenticationToken); + private void setupSecurityResources() { + roleProperties.getRolePropertyList().forEach(this::saveRoleIfNotFound); } - @Transactional - public void setupSecurityResources() { - createRoleIfNotFound("ROLE_ADMIN", "관리자"); - createRoleIfNotFound("ROLE_MANAGER", "매니저"); - createRoleIfNotFound("ROLE_USER", "회원"); + private void saveRoleIfNotFound(RoleProperties.RoleProperty roleProperty) { + roleRepository.save(findOrCreateRole(roleProperty)); } - @Transactional - public void setupMemberResources() { + @NotNull + private Role findOrCreateRole(RoleProperties.RoleProperty roleProperty) { + return roleRepository.findRoleByRoleName(roleProperty.getRoleName()) + .orElseGet(roleProperty::toRoleEntity); + } + + private void setupMemberResources() { Role userRole = roleRepository.findRoleByRoleName("ROLE_USER") - .orElseThrow(() -> new FineAntsException(RoleErrorCode.NOT_EXIST_ROLE)); + .orElseThrow(supplierNotFoundRoleException()); Role managerRole = roleRepository.findRoleByRoleName("ROLE_MANAGER") - .orElseThrow(() -> new FineAntsException(RoleErrorCode.NOT_EXIST_ROLE)); + .orElseThrow(supplierNotFoundRoleException()); Role adminRole = roleRepository.findRoleByRoleName("ROLE_ADMIN") - .orElseThrow(() -> new FineAntsException(RoleErrorCode.NOT_EXIST_ROLE)); + .orElseThrow(supplierNotFoundRoleException()); - createMemberIfNotFound("dragonbead95@naver.com", "일개미1111", "nemo1234@", + createMemberIfNotFound( + userProperties.getEmail(), + userProperties.getNickname(), + userProperties.getPassword(), Set.of(userRole)); - createOauthMemberIfNotFound("dragonbead95@naver.com", "일개미1112", "naver", - Set.of(userRole)); - createMemberIfNotFound("admin@admin.com", "admin", password, Set.of(adminRole)); - createMemberIfNotFound("manager@manager.com", "manager", password, Set.of(managerRole)); + createMemberIfNotFound( + adminProperties.getEmail(), + adminProperties.getNickname(), + adminProperties.getPassword(), + Set.of(adminRole)); + createMemberIfNotFound( + managerProperties.getEmail(), + managerProperties.getNickname(), + managerProperties.getPassword(), + Set.of(managerRole)); } - @Transactional - public void setupExchangeRateResources() { - ExchangeRate exchangeRate = createExchangeRateIfNotFound("KRW"); - log.info("환율 생성 : {}", exchangeRate); + @NotNull + private static Supplier supplierNotFoundRoleException() { + return () -> new FineAntsException(RoleErrorCode.NOT_EXIST_ROLE); } - private ExchangeRate createExchangeRateIfNotFound(String code) { - ExchangeRate exchangeRate = exchangeRateRepository.findByCode(code) - .orElseGet(() -> ExchangeRate.base(code)); - return exchangeRateRepository.save(exchangeRate); + private void createMemberIfNotFound(String email, String nickname, String password, + Set roleSet) { + Member member = memberRepository.save(findOrCreateNewMember(email, nickname, password, roleSet)); + initializeNotificationPreferenceIfNotExists(member); } - @Transactional - public void createRoleIfNotFound(String roleName, String roleDesc) { - Role role = roleRepository.findRoleByRoleName(roleName) - .orElseGet(() -> Role.create(roleName, roleDesc)); - roleRepository.save(role); + private Member findOrCreateNewMember(String email, String nickname, String password, Set roleSet) { + return memberRepository.findMemberByEmailAndProvider(email, "local") + .orElseGet(supplierNewMember(email, nickname, password, roleSet)); } - @Transactional - public void createMemberIfNotFound(String email, String nickname, String password, - Set roleSet) { - Member member = memberRepository.findMemberByEmailAndProvider(email, "local") - .orElse(null); - - if (member == null) { - member = Member.localMember(email, nickname, passwordEncoder.encode(password)); - Set memberRoleSet = new HashSet<>(); - for (Role r : roleSet) { - MemberRole memberRole = MemberRole.create(member, r); - memberRoleSet.add(memberRole); - } - member.setMemberRoleSet(memberRoleSet); - } - Member saveMember = memberRepository.save(member); - NotificationPreference preference = member.getNotificationPreference(); - if (preference == null) { - NotificationPreference newPreference = NotificationPreference.allActive(saveMember); - saveMember.setNotificationPreference(newPreference); + private void initializeNotificationPreferenceIfNotExists(Member member) { + if (member.getNotificationPreference() == null) { + NotificationPreference newPreference = NotificationPreference.allActive(member); + member.setNotificationPreference(newPreference); notificationPreferenceRepository.save(newPreference); } } - @Transactional - public void createOauthMemberIfNotFound(String email, String nickname, String provider, Set roleSet) { - Member member = memberRepository.findMemberByEmailAndProvider(email, provider) - .orElse(null); - - if (member == null) { - member = Member.oauthMember(email, nickname, provider, null); - Set memberRoleSet = new HashSet<>(); - for (Role r : roleSet) { - MemberRole memberRole = MemberRole.create(member, r); - memberRoleSet.add(memberRole); - } - member.setMemberRoleSet(memberRoleSet); - } - Member saveMember = memberRepository.save(member); - NotificationPreference preference = member.getNotificationPreference(); - if (preference == null) { - NotificationPreference newPreference = NotificationPreference.allActive(saveMember); - saveMember.setNotificationPreference(newPreference); - notificationPreferenceRepository.save(newPreference); - } + @NotNull + private Supplier supplierNewMember(String email, String nickname, String password, Set roleSet) { + return () -> { + Member newMember = Member.localMember(email, nickname, passwordEncoder.encode(password)); + Set memberRoles = roleSet.stream() + .map(r -> MemberRole.create(newMember, r)) + .collect(Collectors.toUnmodifiableSet()); + newMember.setMemberRoleSet(memberRoles); + return newMember; + }; + } + + private void setAdminAuthentication() { + Member admin = memberRepository.findMemberByEmailAndProvider(adminProperties.getEmail(), "local") + .orElseThrow(() -> new FineAntsException(MemberErrorCode.NOT_FOUND_MEMBER)); + MemberAuthentication memberAuthentication = MemberAuthentication.from(admin); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( + memberAuthentication, + Strings.EMPTY, + memberAuthentication.getSimpleGrantedAuthority() + ); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + } + + private void setupExchangeRateResources() { + List rates = Stream.of(ExchangeRate.base("KRW"), ExchangeRate.zero("USD", false)) + .map(this::saveExchangeRateIfNotFound) + .toList(); + log.info("create the exchange rates : {}", rates); + exchangeRateService.updateExchangeRates(); + } + + private ExchangeRate saveExchangeRateIfNotFound(ExchangeRate exchangeRate) { + return exchangeRateRepository.save(exchangeRate); + } + + private void setupStockResources() { + stockRepository.saveAll(amazonS3StockService.fetchStocks()); + } + + private void setupStockDividendResources() { + stockDividendRepository.saveAll(amazonS3DividendService.fetchDividends()); } } diff --git a/src/main/java/codesquad/fineants/global/init/SetupDataLoaderListener.java b/src/main/java/codesquad/fineants/global/init/SetupDataLoaderListener.java new file mode 100644 index 000000000..fb862c776 --- /dev/null +++ b/src/main/java/codesquad/fineants/global/init/SetupDataLoaderListener.java @@ -0,0 +1,30 @@ +package codesquad.fineants.global.init; + +import org.jetbrains.annotations.NotNull; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Profile; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import lombok.RequiredArgsConstructor; + +@Profile(value = {"local", "dev", "release", "production"}) +@Component +@RequiredArgsConstructor +public class SetupDataLoaderListener implements ApplicationListener { + + private boolean alreadySetup = false; + private final SetupDataLoader setupDataLoader; + + @Transactional + @Override + public void onApplicationEvent(@NotNull ContextRefreshedEvent event) { + if (alreadySetup) { + return; + } + setupDataLoader.setupResources(); + alreadySetup = true; + } + +} diff --git a/src/main/java/codesquad/fineants/global/init/properties/AdminProperties.java b/src/main/java/codesquad/fineants/global/init/properties/AdminProperties.java new file mode 100644 index 000000000..87bd502b7 --- /dev/null +++ b/src/main/java/codesquad/fineants/global/init/properties/AdminProperties.java @@ -0,0 +1,21 @@ +package codesquad.fineants.global.init.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.ConstructorBinding; + +import lombok.Getter; + +@Getter +@ConfigurationProperties(prefix = "member.admin") +public class AdminProperties { + private final String email; + private final String nickname; + private final String password; + + @ConstructorBinding + public AdminProperties(String email, String nickname, String password) { + this.email = email; + this.nickname = nickname; + this.password = password; + } +} diff --git a/src/main/java/codesquad/fineants/global/init/properties/ManagerProperties.java b/src/main/java/codesquad/fineants/global/init/properties/ManagerProperties.java new file mode 100644 index 000000000..5427c9834 --- /dev/null +++ b/src/main/java/codesquad/fineants/global/init/properties/ManagerProperties.java @@ -0,0 +1,21 @@ +package codesquad.fineants.global.init.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.ConstructorBinding; + +import lombok.Getter; + +@Getter +@ConfigurationProperties(value = "member.manager") +public class ManagerProperties { + private final String email; + private final String nickname; + private final String password; + + @ConstructorBinding + public ManagerProperties(String email, String nickname, String password) { + this.email = email; + this.nickname = nickname; + this.password = password; + } +} diff --git a/src/main/java/codesquad/fineants/global/init/properties/RoleProperties.java b/src/main/java/codesquad/fineants/global/init/properties/RoleProperties.java new file mode 100644 index 000000000..85fee2978 --- /dev/null +++ b/src/main/java/codesquad/fineants/global/init/properties/RoleProperties.java @@ -0,0 +1,37 @@ +package codesquad.fineants.global.init.properties; + +import java.util.List; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.ConstructorBinding; + +import codesquad.fineants.domain.member.domain.entity.Role; +import lombok.Getter; + +@Getter +@ConfigurationProperties(prefix = "role") +public class RoleProperties { + + private final List rolePropertyList; + + @ConstructorBinding + public RoleProperties(RoleProperty admin, RoleProperty manager, RoleProperty user) { + this.rolePropertyList = List.of(admin, manager, user); + } + + @Getter + public static class RoleProperty { + private final String roleName; + private final String roleDesc; + + @ConstructorBinding + public RoleProperty(String roleName, String roleDesc) { + this.roleName = roleName; + this.roleDesc = roleDesc; + } + + public Role toRoleEntity() { + return Role.create(roleName, roleDesc); + } + } +} diff --git a/src/main/java/codesquad/fineants/global/init/properties/UserProperties.java b/src/main/java/codesquad/fineants/global/init/properties/UserProperties.java new file mode 100644 index 000000000..6e2994f53 --- /dev/null +++ b/src/main/java/codesquad/fineants/global/init/properties/UserProperties.java @@ -0,0 +1,21 @@ +package codesquad.fineants.global.init.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.ConstructorBinding; + +import lombok.Getter; + +@Getter +@ConfigurationProperties(value = "member.user") +public class UserProperties { + private final String email; + private final String nickname; + private final String password; + + @ConstructorBinding + public UserProperties(String email, String nickname, String password) { + this.email = email; + this.nickname = nickname; + this.password = password; + } +} diff --git a/src/main/java/codesquad/fineants/global/security/oauth/dto/MemberAuthentication.java b/src/main/java/codesquad/fineants/global/security/oauth/dto/MemberAuthentication.java index 62452cd04..617275bc1 100644 --- a/src/main/java/codesquad/fineants/global/security/oauth/dto/MemberAuthentication.java +++ b/src/main/java/codesquad/fineants/global/security/oauth/dto/MemberAuthentication.java @@ -10,11 +10,13 @@ import codesquad.fineants.domain.member.domain.entity.Role; import lombok.AccessLevel; import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) +@EqualsAndHashCode(of = {"email", "nickname", "provider"}) @ToString public class MemberAuthentication { private Long id; @@ -42,14 +44,10 @@ public static MemberAuthentication from(Member member) { .collect(Collectors.toSet()) ); } - - public static MemberAuthentication admin() { - return new MemberAuthentication(null, null, null, null, null, Set.of("ROLE_ADMIN")); - } - + public Set getSimpleGrantedAuthority() { return roleSet.stream() .map(SimpleGrantedAuthority::new) - .collect(Collectors.toSet()); + .collect(Collectors.toUnmodifiableSet()); } } diff --git a/src/main/java/codesquad/fineants/infra/s3/service/AmazonS3StockService.java b/src/main/java/codesquad/fineants/infra/s3/service/AmazonS3StockService.java index de309879d..740965aba 100644 --- a/src/main/java/codesquad/fineants/infra/s3/service/AmazonS3StockService.java +++ b/src/main/java/codesquad/fineants/infra/s3/service/AmazonS3StockService.java @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.regex.Pattern; import java.util.stream.Collectors; import org.apache.logging.log4j.util.Strings; @@ -33,7 +34,9 @@ @Slf4j public class AmazonS3StockService { - public static final String CSV_SEPARATOR = ":"; + public static final String CSV_SEPARATOR = ","; + // 정규식 패턴: 큰따옴표로 묶인 텍스트 또는 쉼표로 구분된 텍스트를 매칭 + public static final Pattern CSV_SEPARATOR_PATTERN = Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"); private final AmazonS3 amazonS3; @Value("${aws.s3.bucket}") @@ -51,7 +54,7 @@ private List parseStocks(S3Object s3Object) { try (BufferedReader br = new BufferedReader(new InputStreamReader(s3Object.getObjectContent(), UTF_8))) { return br.lines() .skip(1) // skip title - .map(line -> line.split(CSV_SEPARATOR)) + .map(CSV_SEPARATOR_PATTERN::split) .map(Stock::parse) .distinct() .toList(); diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 8f88f8431..a9e1c9da6 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -26,3 +26,6 @@ spring: logging: level: codesquad: debug +cron: + expression: + reload-stocks: '0 0 8 * * ?' diff --git a/src/main/resources/application-production.yml b/src/main/resources/application-production.yml index b98d32ef5..01459432a 100644 --- a/src/main/resources/application-production.yml +++ b/src/main/resources/application-production.yml @@ -22,3 +22,6 @@ logging: codesquad: info server: port: 443 +cron: + expression: + reload-stocks: '0 0 8 * * ?' diff --git a/src/main/resources/application-release.yml b/src/main/resources/application-release.yml index 732e74d24..95f86ddb7 100644 --- a/src/main/resources/application-release.yml +++ b/src/main/resources/application-release.yml @@ -22,3 +22,6 @@ logging: codesquad: debug server: port: 444 +cron: + expression: + reload-stocks: '0 0 7 * * ?' diff --git a/src/main/resources/db/mysql/data.sql b/src/main/resources/db/mysql/data.sql deleted file mode 100644 index a3b60e982..000000000 --- a/src/main/resources/db/mysql/data.sql +++ /dev/null @@ -1,71 +0,0 @@ -LOAD DATA LOCAL INFILE 'src/main/resources/stocks.csv' - INTO TABLE stock - FIELDS TERMINATED BY ',' - IGNORE 1 ROWS - (@stockCode, @tickerSymbol, @companyName, @companyNameEng, @market, @sector) - set stock_code = @stockCode, - ticker_symbol = @tickerSymbol, - company_name = @companyName, - company_name_eng = @companyNameEng, - market = @market, - sector = @sector, - create_at = now(); - -# INSERT INTO member(create_at, email, nickname, profile_url, password, provider) -# VALUES (now(), 'dragonbead95@naver.com', '네모네모', -# 'http://k.kakaocdn.net/dn/dpk9l1/btqmGhA2lKL/Oz0wDuJn1YV2DIn92f6DVK/img_640x640.jpg', -# '$2a$10$Uy0yFi68XP6M.52aRoCQQe6FtnmitlW2mGSO4WdiOU6kzueMBtWda', -# 'local'); -# -# INSERT INTO fineAnts.portfolio (id, budget, maximum_loss, name, securities_firm, target_gain, target_gain_is_active, -# maximum_loss_is_active, member_id, create_at) -# VALUES (1, 1000000, 900000, '내꿈은 워렌버핏', '토스증권', 1500000, true, true, 1, now()); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (1, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '005930'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (2, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000020'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (3, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000040'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (4, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000050'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (5, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000070'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (6, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000080'); -# -# INSERT INTO fineAnts.portfolio_holding (id, create_at, modified_at, portfolio_id, ticker_symbol) -# VALUES (7, '2023-10-26 15:25:39.409612', '2023-10-26 15:25:39.409612', 1, '000087'); -# -# INSERT INTO fineAnts.purchase_history (id, create_at, modified_at, memo, num_shares, purchase_date, -# purchase_price_per_share, portfolio_holding_id) -# VALUES (1, '2023-10-26 15:26:11.219793', '2023-10-26 15:26:11.219793', null, 3, '2023-10-23 13:00:00.000000', 50000, 1); -# -# INSERT INTO fineAnts.stock_target_price(id, create_at, is_active, member_id, ticker_symbol) -# VALUES (1, '2023-10-26 15:26:11.219793', true, 1, '005930'); -# -# INSERT INTO fineAnts.target_price_notification(id, create_at, target_price, stock_target_price_id) -# VALUES (1, '2023-10-26 15:26:11.219793', 60000, 1); -# -# INSERT INTO fineAnts.notification(id, create_at, title, is_read, type, reference_id, dtype, link, stock_name, -# target_price, target_price_notification_id, -# member_id) -# VALUES (1, '2024-01-22 10:10:10.0', '종목 지정가', true, 'STOCK_TARGET_PRICE', '005930', 'S', '/stock/005930', '삼성전자보통주', -# 60000, 1, 1); -# -# INSERT INTO fineAnts.notification(id, create_at, title, is_read, type, reference_id, dtype, link, name, member_id) -# VALUES (2, '2024-01-23 10:10:10.0', '포트폴리오', false, 'PORTFOLIO_TARGET_GAIN', '1', 'P', '/portfolio/1', '내꿈은 워렌버핏', 1); -# -# INSERT INTO fineAnts.notification_preference(id, create_at, browser_notify, max_loss_notify, target_gain_notify, -# target_price_notify, member_id) -# VALUES (1, now(), true, true, true, true, 1); -# -# INSERT INTO fineAnts.fcm_token(id, create_at, latest_activation_time, token, member_id) -# VALUES (1, now(), now(), -# 'fseQVesDo4SFuAXYDB1MtJ:APA91bE5-XAkf0w38l8Xoxl8HLs5uPNH2x_e3IsoDuhgGQ69asnmLN8AHP3_eSXhqs0hQ_-MyuSjMN-10s5QB5SdbTAwQQVpDpOea8_Y6CIXPuMa6i-RVlrY6ndfpVmNAMCjqg6FzERA', -# 1); diff --git a/src/main/resources/db/mysql/init-schema-release.sql b/src/main/resources/db/mysql/init-schema-release.sql deleted file mode 100644 index faec7e932..000000000 --- a/src/main/resources/db/mysql/init-schema-release.sql +++ /dev/null @@ -1,247 +0,0 @@ -create table if not exists fineAnts_release.exchange_rate -( - base bit not null, - rate double not null, - create_at datetime(6) null, - modified_at datetime(6) null, - code varchar(255) not null - primary key -); - -create table if not exists fineAnts_release.member -( - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - email varchar(255) null, - nickname varchar(255) not null, - password varchar(255) null, - profile_url varchar(255) null, - provider varchar(255) null, - constraint UK_hh9kg6jti4n1eoiertn2k6qsc - unique (nickname) -); - -create table if not exists fineAnts_release.fcm_token -( - create_at datetime(6) null, - id bigint auto_increment - primary key, - latest_activation_time datetime(6) null, - member_id bigint null, - modified_at datetime(6) null, - token varchar(255) null, - constraint token_member_id_unique - unique (token, member_id), - constraint FKf1rbjf8lle4r2in6ovkcgl0w8 - foreign key (member_id) references fineAnts_release.member (id) -); - -create table if not exists fineAnts_release.notification -( - is_read bit null, - target_price decimal(38, 2) null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - member_id bigint null, - modified_at datetime(6) null, - target_price_notification_id bigint null, - dtype varchar(31) not null, - link varchar(255) null, - name varchar(255) null, - reference_id varchar(255) null, - stock_name varchar(255) null, - title varchar(255) null, - type enum ('PORTFOLIO_MAX_LOSS', 'PORTFOLIO_TARGET_GAIN', 'STOCK_TARGET_PRICE') null, - constraint FK1xep8o2ge7if6diclyyx53v4q - foreign key (member_id) references fineAnts_release.member (id) -); - -create table if not exists fineAnts_release.notification_preference -( - browser_notify bit not null, - max_loss_notify bit not null, - target_gain_notify bit not null, - target_price_notify bit not null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - member_id bigint null, - modified_at datetime(6) null, - constraint UK_sug53kin1ir6qq9790uudjs03 - unique (member_id), - constraint FKpn714rk5pvp6wjlwd77sngm08 - foreign key (member_id) references fineAnts_release.member (id) -); - -create table if not exists fineAnts_release.portfolio -( - budget decimal(19) not null, - maximum_loss decimal(19) not null, - maximum_loss_is_active bit null, - target_gain decimal(19) not null, - target_gain_is_active bit null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - member_id bigint null, - modified_at datetime(6) null, - name varchar(255) null, - securities_firm varchar(255) null, - constraint UKniiw35vyoiwnxtfhs8im0v2a9 - unique (name, member_id), - constraint FKhkjiiwx38ctlby4yt4y82tua7 - foreign key (member_id) references fineAnts_release.member (id) -); - -create table if not exists fineAnts_release.portfolio_gain_history -( - cash decimal(19) not null, - current_valuation decimal(19) not null, - daily_gain decimal(19) not null, - total_gain decimal(19) not null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - portfolio_id bigint null, - constraint FKdea3l34fqo27x2xrfdt75otys - foreign key (portfolio_id) references fineAnts_release.portfolio (id) -); - -create table if not exists fineAnts_release.role -( - role_id bigint auto_increment - primary key, - role_description varchar(255) null, - role_name varchar(255) not null -); - -create table if not exists fineAnts_release.member_role -( - member_id bigint null, - member_role_id bigint auto_increment - primary key, - role_role_id bigint null, - constraint FK34g7epqlcxqloewku3aoqhhmg - foreign key (member_id) references fineAnts_release.member (id), - constraint FK8ro2tn5n8wkfy1nyjdqxocwpo - foreign key (role_role_id) references fineAnts_release.role (role_id) -); - -create table if not exists fineAnts_release.stock -( - create_at datetime(6) null, - modified_at datetime(6) null, - company_name varchar(255) null, - company_name_eng varchar(255) null, - market varchar(255) null, - sector varchar(255) null, - stock_code varchar(255) null, - ticker_symbol varchar(255) not null - primary key -); - -create table if not exists fineAnts_release.portfolio_holding -( - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - portfolio_id bigint null, - ticker_symbol varchar(255) null, - constraint FK3ixur6cv3eqixv9kc01tihm4i - foreign key (ticker_symbol) references fineAnts_release.stock (ticker_symbol), - constraint FK99yckortu2r0bxjltxfvabcbo - foreign key (portfolio_id) references fineAnts_release.portfolio (id) -); - -create table if not exists fineAnts_release.purchase_history -( - num_shares decimal(38) null, - purchase_price_per_share decimal(19) not null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - portfolio_holding_id bigint null, - purchase_date datetime(6) null, - memo varchar(255) null, - constraint FKtmqhjq2ng9k66gw9s3qbnx0op - foreign key (portfolio_holding_id) references fineAnts_release.portfolio_holding (id) -); - -create table if not exists fineAnts_release.stock_dividend -( - dividend decimal(19) not null, - ex_dividend_date date not null, - payment_date date null, - record_date date not null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - ticker_symbol varchar(255) null, - constraint UKs7kxldvrap8rcpi7emyaq28y7 - unique (ticker_symbol, record_date), - constraint FK6tww3epiobccxnj5rgjdu4ab0 - foreign key (ticker_symbol) references fineAnts_release.stock (ticker_symbol) -); - -create table if not exists fineAnts_release.stock_target_price -( - is_active bit null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - member_id bigint null, - modified_at datetime(6) null, - ticker_symbol varchar(255) null, - constraint UKhwlfu5x3iqpei19soxhmjcfs3 - unique (member_id, ticker_symbol), - constraint FK2r0grp1n205hnw3ysp179f5l3 - foreign key (member_id) references fineAnts_release.member (id), - constraint FKcup8hchscft8jniri3wkk72kx - foreign key (ticker_symbol) references fineAnts_release.stock (ticker_symbol) -); - -create table if not exists fineAnts_release.target_price_notification -( - target_price decimal(19) not null, - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - stock_target_price_id bigint null, - constraint FKnds69ucw684g4c2a09g0fa5bq - foreign key (stock_target_price_id) references fineAnts_release.stock_target_price (id) -); - -create table if not exists fineAnts_release.watch_list -( - create_at datetime(6) null, - id bigint auto_increment - primary key, - member_id bigint null, - modified_at datetime(6) null, - name varchar(255) null, - constraint FK913gb7s3b8il5emg0489jhibc - foreign key (member_id) references fineAnts_release.member (id) -); - -create table if not exists fineAnts_release.watch_stock -( - create_at datetime(6) null, - id bigint auto_increment - primary key, - modified_at datetime(6) null, - watch_list_id bigint null, - ticker_symbol varchar(255) null, - constraint FK3eu9b3aw8tnk1lyao7vielolj - foreign key (watch_list_id) references fineAnts_release.watch_list (id), - constraint FKk1yabpeilnrrys4og9yid2cw1 - foreign key (ticker_symbol) references fineAnts_release.stock (ticker_symbol) -); - diff --git a/src/main/resources/db/mysql/init-schema.sql b/src/main/resources/db/mysql/init-schema.sql deleted file mode 100644 index 54c932e9e..000000000 --- a/src/main/resources/db/mysql/init-schema.sql +++ /dev/null @@ -1,241 +0,0 @@ -create table if not exists fineAnts.hibernate_sequence -( - next_val bigint null -); - -create table if not exists fineAnts.member -( - id bigint auto_increment - primary key, - create_at datetime null, - modified_at datetime null, - email varchar(255) null, - nickname varchar(255) not null unique, - password varchar(255) null, - profile_url varchar(255) null, - provider varchar(255) null -); - -create table if not exists fineAnts.portfolio -( - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - budget bigint null, - maximum_loss bigint null, - maximum_loss_is_active bit null, - name varchar(255) null, - securities_firm varchar(255) null, - target_gain bigint null, - target_gain_is_active bit null, - member_id bigint null, - constraint FKhkjiiwx38ctlby4yt4y82tua7 - foreign key (member_id) references fineAnts.member (id) -); - -create table if not exists fineAnts.portfolio_gain_history -( - id bigint auto_increment - primary key, - create_at datetime null, - modified_at datetime null, - cash bigint null, - current_valuation bigint null, - daily_gain bigint null, - total_gain bigint null, - portfolio_id bigint null, - constraint FKdea3l34fqo27x2xrfdt75otys - foreign key (portfolio_id) references fineAnts.portfolio (id) -); - -create table if not exists fineAnts.stock -( - ticker_symbol varchar(255) not null - primary key, - create_at datetime null, - modified_at datetime null, - company_name varchar(255) null, - company_name_eng varchar(255) null, - market varchar(255) null, - sector varchar(255) null, - stock_code varchar(255) null -); - -create table if not exists fineAnts.portfolio_holding -( - id bigint auto_increment - primary key, - create_at datetime null, - modified_at datetime null, - portfolio_id bigint null, - ticker_symbol varchar(255) null, - constraint FK3ixur6cv3eqixv9kc01tihm4i - foreign key (ticker_symbol) references fineAnts.stock (ticker_symbol), - constraint FK99yckortu2r0bxjltxfvabcbo - foreign key (portfolio_id) references fineAnts.portfolio (id) -); - -create table if not exists fineAnts.purchase_history -( - id bigint auto_increment - primary key, - create_at datetime null, - modified_at datetime null, - memo varchar(255) null, - num_shares bigint null, - purchase_date datetime null, - purchase_price_per_share double null, - portfolio_holding_id bigint null, - constraint FKtmqhjq2ng9k66gw9s3qbnx0op - foreign key (portfolio_holding_id) references fineAnts.portfolio_holding (id) -); - -create table if not exists fineAnts.stock_dividend -( - id bigint auto_increment - primary key, - create_at datetime null, - modified_at datetime null, - dividend bigint null, - ex_dividend_date date not null, - payment_date date null, - record_date date not null, - ticker_symbol varchar(255) null, - constraint UK9arb4d9tfcndvi89oppsv3wsa - unique (ticker_symbol, record_date), - constraint FK6tww3epiobccxnj5rgjdu4ab0 - foreign key (ticker_symbol) references fineAnts.stock (ticker_symbol) -); - -create table if not exists fineAnts.watch_list -( - id bigint not null - primary key, - create_at datetime null, - modified_at datetime null, - name varchar(255) null, - member_id bigint null, - constraint FK913gb7s3b8il5emg0489jhibc - foreign key (member_id) references fineAnts.member (id) -); - -create table if not exists fineAnts.watch_stock -( - id bigint not null - primary key, - create_at datetime null, - modified_at datetime null, - ticker_symbol varchar(255) null, - watch_list_id bigint null, - constraint FK3eu9b3aw8tnk1lyao7vielolj - foreign key (watch_list_id) references fineAnts.watch_list (id), - constraint FKk1yabpeilnrrys4og9yid2cw1 - foreign key (ticker_symbol) references fineAnts.stock (ticker_symbol) -); - - -create table if not exists fineAnts.fcm_token -( - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - latest_activation_time datetime(6) null, - token varchar(255) null, - member_id bigint null, - constraint token_member_id_unique - unique (token, member_id), - constraint FKf1rbjf8lle4r2in6ovkcgl0w8 - foreign key (member_id) references fineAnts.member (id) -); - -create table if not exists fineAnts.notification_preference -( - id bigint NOT NULL primary key, - create_at datetime(6) DEFAULT NULL, - modified_at datetime(6) DEFAULT NULL, - browser_notify bit(1) NOT NULL, - max_loss_notify bit(1) NOT NULL, - target_gain_notify bit(1) NOT NULL, - target_price_notify bit(1) NOT NULL, - member_id bigint DEFAULT NULL, - CONSTRAINT FKpn714rk5pvp6wjlwd77sngm08 FOREIGN KEY (member_id) REFERENCES fineAnts.member (id) -); - - - -create table if not exists fineAnts.stock_target_price -( - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - is_active bit null, - member_id bigint null, - ticker_symbol varchar(255) null, - constraint UKhwlfu5x3iqpei19soxhmjcfs3 - unique (member_id, ticker_symbol), - constraint FK2r0grp1n205hnw3ysp179f5l3 - foreign key (member_id) references fineAnts.member (id), - constraint FKcup8hchscft8jniri3wkk72kx - foreign key (ticker_symbol) references fineAnts.stock (ticker_symbol) -); - -create table if not exists fineAnts.target_price_notification -( - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - target_price bigint null, - stock_target_price_id bigint null, - constraint FKnds69ucw684g4c2a09g0fa5bq - foreign key (stock_target_price_id) references fineAnts.stock_target_price (id) -); - -create table fineAnts.notification -( - dtype varchar(31) not null, - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - is_read bit null, - link varchar(255) null, - reference_id varchar(255) null, - title varchar(255) null, - type varchar(255) null, - name varchar(255) null, - stock_name varchar(255) null, - target_price bigint null, - target_price_notification_id bigint null, - member_id bigint null, - constraint FK1xep8o2ge7if6diclyyx53v4q - foreign key (member_id) references fineAnts.member (id) -); - -create table if not exists fineAnts.notification_preference -( - id bigint auto_increment - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - browser_notify bit not null, - max_loss_notify bit not null, - target_gain_notify bit not null, - target_price_notify bit not null, - member_id bigint null, - constraint FKpn714rk5pvp6wjlwd77sngm08 - foreign key (member_id) references fineAnts.member (id) -); - -create table if not exists fineAnts.exchange_rate -( - code varchar(255) not null - primary key, - create_at datetime(6) null, - modified_at datetime(6) null, - base bit not null, - rate double not null -); diff --git a/src/main/resources/dividends.csv b/src/main/resources/dividends.csv deleted file mode 100644 index 134774188..000000000 --- a/src/main/resources/dividends.csv +++ /dev/null @@ -1,3274 +0,0 @@ -배정기준일,현금배당지급일,종목코드,종목명,주당배당금 -20240630,,002840,미원상사,0 -20240630,,268280,미원스페셜티케미칼(신설),0 -20240630,,134380,미원화학,0 -20240405,20240426,031210,서울보증보험,2983 -20240405,20240426,001040,씨제이,3000 -20240405,20240426,001045,씨제이1우,3050 -20240405,20240426,00104K,씨제이4우,3000 -20240404,20240426,011210,현대위아,850 -20240403,20240424,082640,동양생명보험,400 -20240403,20240422,031440,신세계푸드,750 -20240403,20240426,010470,오리콤,270 -20240403,20240425,049800,우진플라임,50 -20240403,20240419,139480,이마트,2000 -20240403,20240426,122310,제노레이,160 -20240403,20240426,024880,케이피에프,150 -20240403,20240424,003690,코리안리재보험,540 -20240403,20240424,009520,포스코엠텍,35 -20240403,20240419,010100,한국무브넥스,100 -20240403,20240419,005010,휴스틸,250 -20240402,20240426,000150,두산,2000 -20240402,20240426,000155,두산1우,2050 -20240402,20240426,000157,두산2우,2000 -20240402,20240419,131970,두산테스나,160 -20240402,20240419,13197K,두산테스나2우,160 -20240402,20240423,051500,씨제이프레시웨이,450 -20240402,20240426,078020,이베스트투자증권,150 -20240402,20240426,07802K,이베스트투자증권1우,0 -20240402,20240426,07802L,이베스트투자증권2우,0 -20240402,20240425,052960,태양3C,25 -20240402,20240425,052965,태양3C1우,0 -20240402,20240418,039130,하나투어,5000 -20240401,20240426,034730,SK,3500 -20240401,20240426,03473K,SK1우,3550 -20240401,20240423,001740,SK네트웍스,200 -20240401,20240423,001745,SK네트웍스1우,225 -20240401,20240418,006040,동원산업,1100 -20240401,20240418,014820,동원시스템즈,600 -20240401,20240418,014825,동원시스템즈1우,650 -20240401,20240418,049770,동원에프앤비,800 -20240401,20240425,009900,명신산업,100 -20240401,20240422,206640,바디텍메드,200 -20240401,20240424,000120,씨제이대한통운,500 -20240401,20240429,078520,에이블씨엔씨,157 -20240401,20240418,009970,영원무역홀딩스,2370 -20240401,20240426,214320,이노션,950 -20240401,20240425,307950,현대오토에버,1430 -20240401,20240419,200670,휴메딕스,275 -20240401,20240419,243070,휴온스,330 -20240401,20240419,084110,휴온스글로벌,275 -20240331,,175330,JB금융지주,0 -20240331,,105560,KB금융지주,0 -20240331,,017670,SK텔레콤,0 -20240331,,008870,금비,0 -20240331,20240412,008060,대덕,400 -20240331,20240412,00806K,대덕1우,405 -20240331,20240412,353200,대덕전자,300 -20240331,20240412,35320K,대덕전자 1우,305 -20240331,,033920,무학,0 -20240331,20240415,377740,바이오노트,200 -20240331,,318410,비비씨,0 -20240331,,005930,삼성전자,0 -20240331,,005935,삼성전자1우,0 -20240331,,225190,삼양옵틱스,0 -20240331,,055550,신한금융지주회사,0 -20240331,20240425,264660,씨앤지하이테크,400 -20240331,,097950,씨제이제일제당,0 -20240331,,097955,씨제이제일제당1우,0 -20240331,,096530,씨젠,0 -20240331,,122900,아이마켓코리아,0 -20240331,,000660,에스케이하이닉스,0 -20240331,,267250,에이치디현대,0 -20240331,20240422,083310,엘오티베큠,200 -20240331,20240419,015360,예스코홀딩스,1000 -20240331,20240412,122990,와이솔,250 -20240331,,316140,우리금융지주,0 -20240331,,381970,케이카,250 -20240331,,030200,케이티,0 -20240331,20240422,047050,포스코인터내셔널,1000 -20240331,,005490,포스코홀딩스,0 -20240331,,086790,하나금융지주,0 -20240331,,009240,한샘,0 -20240331,20240419,213500,한솔제지,300 -20240331,20240419,21350K,한솔제지1우,350 -20240331,20240419,004710,한솔테크닉스,100 -20240331,20240419,004150,한솔홀딩스,100 -20240331,20240419,086280,현대글로비스,6300 -20240331,,005380,현대자동차,0 -20240331,,005385,현대자동차1우,0 -20240331,,005387,현대자동차2우,0 -20240331,,005389,현대자동차3우,0 -20240331,,094280,효성ITX,0 -20240331,,094285,효성ITX1우,0 -20240329,20240419,005940,NH투자증권,800 -20240329,20240419,005945,NH투자증권1우,850 -20240329,20240419,030610,교보증권,250 -20240329,20240416,405920,나라셀라,80 -20240329,20240423,241560,두산밥캣,800 -20240329,20240419,016610,디비금융투자,200 -20240329,20240419,005830,디비손해보험,5300 -20240329,20240423,006800,미래에셋증권,150 -20240329,20240423,006805,미래에셋증권1우,165 -20240329,20240423,00680K,미래에셋증권2우,150 -20240329,20240417,001270,부국증권,1500 -20240329,20240417,001275,부국증권1우,1550 -20240329,20240416,004690,삼천리,3000 -20240329,20240422,060980,에이치엘홀딩스,2000 -20240329,20240415,417200,엘에스머트리얼즈,22 -20240329,20240422,001200,유진투자증권,60 -20240329,20240415,006220,제주은행,100 -20240329,20240425,024110,중소기업은행,984 -20240329,20240422,204610,티쓰리엔터테인먼트,60 -20240329,20240419,277880,티에스아이,0 -20240329,20240419,27788N,티에스아이4우,505 -20240329,20240415,022100,포스코디엑스,100 -20240329,20240424,058430,포스코스틸리온,1615 -20240329,20240424,003670,포스코퓨처엠,250 -20240329,20240419,009180,한솔로지스틱스,100 -20240329,20240418,088350,한화생명보험,150 -20240329,20240415,000370,한화손해보험,200 -20240329,20240415,00037K,한화손해보험 1우,350 -20240329,20240426,004020,현대제철,1000 -20240329,20240419,001500,현대차증권,400 -20240329,20240419,00150K,현대차증권 1우,418 -20240329,20240419,001450,현대해상화재보험,2063 -20240328,20240419,010420,한솔PNS,25 -20240327,20240418,029780,삼성카드,2500 -20240327,20240419,000810,삼성화재해상보험,16000 -20240327,20240419,000815,삼성화재해상보험1우,16005 -20240327,20240418,123890,한국자산신탁,220 -20240326,20240416,003540,대신증권,1200 -20240326,20240416,003545,대신증권1우,1250 -20240326,20240416,003547,대신증권2우,1200 -20240326,20240419,012510,더존비즈온,217 -20240326,20240419,01251K,더존비즈온2우,4861 -20240326,20240419,000720,현대건설,600 -20240326,20240419,000725,현대건설1우,650 -20240325,20240419,012330,현대모비스,3500 -20240325,20240419,012335,현대모비스1우,3550 -20240322,20240409,030210,다올투자증권,150 -20240322,20240409,03021K,다올투자증권3우,356.9 -20240322,20240409,03021L,다올투자증권4우,295.3 -20240321,20240418,006840,에이케이홀딩스,200 -20240321,20240408,014680,한솔케미칼,2100 -20240320,20240415,000270,기아,5600 -20240315,20240411,012690,모나리자,50 -20240311,20240412,028100,동아지질,500 -20240311,20240416,267790,배럴,50 -20240311,20240416,26779L,배럴 2우,112 -20240307,20240329,042700,한미반도체,420 -20240306,20240327,004310,현대약품,35 -20240301,20240430,084870,티비에이치글로벌,50 -20240301,20240419,002900,티와이엠,110 -20240229,20240405,138930,BNK금융지주,410 -20240229,20240412,139130,DGB금융지주,550 -20240229,20240409,175330,JB금융지주,735 -20240229,20240411,105560,KB금융지주,1530 -20240229,20240405,282690,동아타이어공업(신설),1000 -20240229,20240405,007340,디엔오토모티브,2500 -20240229,20240412,148150,세경하이테크,100 -20240229,20240412,14815K,세경하이테크1우,180.8533333334 -20240229,20240424,097950,씨제이제일제당,2500 -20240229,20240424,097955,씨제이제일제당1우,2550 -20240229,20240415,246250,에스엘에스바이오,50 -20240229,20240416,092870,엑시콘,100 -20240229,20240409,316140,우리금융지주,640 -20240229,20240425,035720,카카오,61 -20240229,20240412,002380,케이씨씨,7000 -20240229,20240426,344820,케이씨씨글라스,1400 -20240229,20240419,271830,팸텍,30 -20240229,20240419,005490,포스코홀딩스,2500 -20240229,20240419,005380,현대자동차,8400 -20240229,20240419,005385,현대자동차1우,8450 -20240229,20240419,005387,현대자동차2우,8500 -20240229,20240419,005389,현대자동차3우,8450 -20240228,20240425,337930,브랜드엑스코퍼레이션,40 -20240228,20240409,086790,하나금융지주,1600 -20240223,20240405,055550,신한금융지주회사,525 -20240131,,448730,삼성에프엔위탁관리부동산투자회사,72 -20240131,,432320,케이비스타위탁관리부동산투자회사,188 -20240115,20240418,192440,슈피겐코리아,696 -20240115,20240415,293480,하나제약,510 -20231231,,317120,(주)라닉스,0 -20231231,,204270,(주)제이앤티씨,0 -20231231,,250030,(주)진코스텍,0 -20231231,20240422,318010,(주)팜스빌,100 -20231231,,331660,(주)한국미라클피플사,0 -20231231,20240419,001460,BYC,3000 -20231231,20240419,001465,BYC1우,3050 -20231231,,011150,CJ씨푸드,0 -20231231,,011155,CJ씨푸드1우,0 -20231231,,058820,CMG제약,0 -20231231,20240426,000990,DB 하이텍,580 -20231231,20240426,000995,DB 하이텍1우,630 -20231231,,000997,DB 하이텍2우,0 -20231231,20240415,004840,DRB동일,100 -20231231,20240415,017940,E1,4450 -20231231,,050120,ES큐브,0 -20231231,20240424,089470,HDC현대EP,140 -20231231,20240429,143500,KBS미디어,0 -20231231,20240426,024120,KB오토시스,150 -20231231,,044180,KD,0 -20231231,20240423,060720,KH바텍,400 -20231231,20240412,001940,KISCO홀딩스,900 -20231231,20240417,071430,KIS정보통신,0 -20231231,20240408,025000,KPX케미칼,2500 -20231231,20240411,092230,KPX홀딩스,2750 -20231231,20240419,093050,LF,700 -20231231,20240409,003550,LG,3100 -20231231,20240409,003555,LG1우,3150 -20231231,20240405,051900,LG생활건강,3500 -20231231,20240405,051905,LG생활건강1우,3550 -20231231,20240419,032640,LG유플러스,400 -20231231,20240419,011070,LG이노텍,2610 -20231231,20240425,066570,LG전자,800 -20231231,20240425,066575,LG전자1우,850 -20231231,20240423,051910,LG화학,3500 -20231231,20240423,051915,LG화학1우,3550 -20231231,20240412,006260,LS,1600 -20231231,,000680,LS네트웍스,0 -20231231,,000685,LS네트웍스1우,0 -20231231,20240416,108320,LX세미콘,1800 -20231231,20240412,001120,LX인터내셔널,1200 -20231231,20240412,108670,LX하우시스,1700 -20231231,20240412,108675,LX하우시스1우,1750 -20231231,20240419,023150,MH에탄올,250 -20231231,20240426,034310,NICE홀딩스,451 -20231231,20240412,456040,OCI,2000 -20231231,20240412,010060,OCI홀딩스,3300 -20231231,20240426,010950,S-OIL,1500 -20231231,20240426,010955,S-OIL1우,1525 -20231231,,002360,SH에너지화학,0 -20231231,,002365,SH에너지화학1우,0 -20231231,,011790,SKC,0 -20231231,20240419,018670,SK가스,6000 -20231231,,326030,SK바이오팜,0 -20231231,,402340,SK스퀘어,0 -20231231,20240426,003340,SK에코플랜트,0 -20231231,20240426,00334N,SK에코플랜트 8우,31533 -20231231,20240426,00334P,SK에코플랜트 9우,0 -20231231,,096770,SK이노베이션,0 -20231231,,096775,SK이노베이션1우,0 -20231231,20240424,001510,SK증권,2 -20231231,20240424,001515,SK증권1우,7 -20231231,20240425,285130,SK케미칼,250 -20231231,20240425,28513K,SK케미칼 1우,300 -20231231,20240425,017670,SK텔레콤,1050 -20231231,,465770,STX 그린로지스,0 -20231231,,077970,STX엔진,0 -20231231,,077975,STX엔진1우,0 -20231231,,07797L,STX엔진2우,0 -20231231,20240412,048770,TPC메카트로닉스,25 -20231231,20240418,122870,YG엔터테인먼트,300 -20231231,20240419,051390,YW,200 -20231231,20240412,079940,가비아,80 -20231231,20240417,078890,가온그룹,30 -20231231,,000500,가온전선,0 -20231231,,399720,가온칩스,0 -20231231,,296520,가이아코퍼레이션,0 -20231231,20240426,000860,강남제비스코,500 -20231231,,217730,강스템바이오텍,0 -20231231,,21773Q,강스템바이오텍6우,0 -20231231,20240426,035250,강원랜드,930 -20231231,,114190,강원에너지,0 -20231231,,011420,갤럭시아 에스엠,0 -20231231,20240424,094480,갤럭시아머니트리,45 -20231231,20240401,039240,경남스틸,120 -20231231,20240412,002100,경농,250 -20231231,20240404,009450,경동나비엔,550 -20231231,20240419,267290,경동도시가스(신설),875 -20231231,20240426,012320,경동인베스트,750 -20231231,20240418,011040,경동제약,400 -20231231,20240411,000050,경방,125 -20231231,20240423,214390,경보제약,50 -20231231,20240409,012610,경인양행,50 -20231231,20240404,009140,경인전자,350 -20231231,20240415,024910,경창산업,50 -20231231,20240418,013580,계룡건설산업,400 -20231231,20240416,012200,계양전기,25 -20231231,20240416,012205,계양전기1우,30 -20231231,20240419,081630,고려비엔피,0 -20231231,20240405,002140,고려산업,25 -20231231,,198440,고려시멘트,0 -20231231,20240315,049720,고려신용정보,200 -20231231,20240409,010130,고려아연,5000 -20231231,20240422,002240,고려제강,350 -20231231,20240405,014570,고려제약,150 -20231231,,348150,고바이오랩,0 -20231231,,34815R,고바이오랩 7우,0 -20231231,,34815S,고바이오랩 8우,0 -20231231,20240417,950190,고스트스튜디오 KDR,716.5704 -20231231,20240412,098460,고영테크놀러지,140 -20231231,,035290,골드앤에스,0 -20231231,20240409,123900,골든블루,120 -20231231,20240411,215000,골프존,4500 -20231231,20240412,121440,골프존뉴딘홀딩스,167 -20231231,20240412,366030,공구우먼,120 -20231231,20240408,076340,관악산업,100 -20231231,20240425,009290,광동제약,100 -20231231,,014200,광림,0 -20231231,20240412,017040,광명전기,10 -20231231,,029480,광무,0 -20231231,20240408,017900,광전자,50 -20231231,20240423,037710,광주신세계,2200 -20231231,,421800,교보12호기업인수목적,0 -20231231,,440790,교보13호기업인수목적,0 -20231231,,456490,교보14호기업인수목적,0 -20231231,,465320,교보15호기업인수목적,0 -20231231,20240424,339770,교촌에프앤비,300 -20231231,20240412,053270,구영테크,50 -20231231,20240326,007690,국도화학,1200 -20231231,,005320,국동,0 -20231231,,00532K,국동 1우,0 -20231231,,00532L,국동 2우,0 -20231231,20240419,066620,국보디자인,400 -20231231,20240405,043650,국순당,105 -20231231,20240401,006050,국영지앤엠,10 -20231231,20240412,060480,국일신동,50 -20231231,20240417,041760,국일인토트,0 -20231231,20240425,307750,국전약품,10 -20231231,,002720,국제약품,0 -20231231,,243870,굿센,0 -20231231,,24387K,굿센1우,0 -20231231,20240416,035080,그래디언트,200 -20231231,20240426,114090,그랜드코리아레저,353 -20231231,20240405,204020,그리티,100 -20231231,,402490,그린리소스,0 -20231231,,114450,그린생명과학,0 -20231231,20240409,083420,그린케미칼,150 -20231231,,186230,그린플러스,0 -20231231,,18623N,그린플러스4우,0 -20231231,20240423,014530,극동유화,200 -20231231,20240426,006250,극동전선,0 -20231231,20240426,083450,글로벌스탠다드테크놀로지,500 -20231231,,204620,글로벌텍스프리,0 -20231231,,019660,글로본,0 -20231231,20240405,014280,금강공업,120 -20231231,20240405,014285,금강공업1우,130 -20231231,20240412,053260,금강철강,130 -20231231,,001570,금양,0 -20231231,20240412,282720,금양그린파워,300 -20231231,20240419,011780,금호석유화학,2900 -20231231,20240419,011785,금호석유화학1우,2950 -20231231,,073240,금호타이어,0 -20231231,20240412,036190,금화피에스시,1300 -20231231,,049080,기가레인,0 -20231231,20240417,420770,기가비스,800 -20231231,,035460,기산텔레콤,0 -20231231,,456700,길교이앤씨,0 -20231231,20240426,013700,까뮤이앤씨,15 -20231231,,308100,까스텔바작,0 -20231231,,004540,깨끗한나라,0 -20231231,,004545,깨끗한나라1우,0 -20231231,,407400,꿈비,0 -20231231,,286750,나노브릭,0 -20231231,20240412,121600,나노신소재,250 -20231231,20240412,12160M,나노신소재 3우,2186.05 -20231231,20240412,12160N,나노신소재4우,5 -20231231,,039860,나노엔텍,0 -20231231,,091970,나노캠텍,0 -20231231,,417010,나노팀,0 -20231231,20240403,040970,나눔기술,0 -20231231,20240429,244880,나눔테크,50 -20231231,20240409,358400,나디아퍼시픽,0 -20231231,,288490,나라소프트,0 -20231231,20240412,051490,나라엠앤디,70 -20231231,,137080,나래나노텍,0 -20231231,,190510,나무가,0 -20231231,,242040,나무기술,0 -20231231,20240424,089600,나스미디어,700 -20231231,20240412,293580,나우아이비캐피탈,18 -20231231,,257990,나우코스,0 -20231231,,138610,나이벡,0 -20231231,20240411,130580,나이스디앤비,182 -20231231,20240423,036800,나이스정보통신,730 -20231231,20240417,030190,나이스평가정보,410 -20231231,,267320,나인테크,0 -20231231,,26732L,나인테크 2우,0 -20231231,20240401,043960,낙스넷,0 -20231231,,001260,남광토건,0 -20231231,20240426,003920,남양유업,1000 -20231231,20240426,003925,남양유업1우,1050 -20231231,20240418,025860,남해화학,60 -20231231,20240416,111710,남화산업,200 -20231231,20240423,091590,남화토건,50 -20231231,20240318,079180,내일신문,0 -20231231,,168330,내츄럴엔도텍,0 -20231231,,094860,네오리진,0 -20231231,20240416,253590,네오셈,30 -20231231,,212560,네오오토,150 -20231231,20240418,095660,네오위즈,245 -20231231,,950220,네오이뮨텍 KDR,0 -20231231,20240403,085910,네오티스,200 -20231231,20240409,092730,네오팜,750 -20231231,,290660,네오펙트,0 -20231231,,306620,네온테크,0 -20231231,,30662L,네온테크2우,0 -20231231,20240417,035420,네이버,790 -20231231,,153460,네이블,0 -20231231,,007390,네이처셀,0 -20231231,,033640,네패스,0 -20231231,,330860,네패스아크,0 -20231231,20240426,005720,넥센,125 -20231231,20240426,005725,넥센1우,130 -20231231,20240426,002350,넥센타이어,115 -20231231,20240426,002355,넥센타이어1우,120 -20231231,20240418,038990,넥스콘테크놀러지,165000 -20231231,,089140,넥스턴바이오사이언스,0 -20231231,,137940,넥스트아이,0 -20231231,,160550,넥스트엔터테인먼트월드,0 -20231231,,396270,넥스트칩,0 -20231231,20240423,348210,넥스틴,500 -20231231,20240416,092790,넥스틸,700 -20231231,,225570,넥슨게임즈,0 -20231231,,217270,넵튠,0 -20231231,,251270,넷마블,0 -20231231,,317860,노드메이슨,0 -20231231,,104620,노랑풍선,0 -20231231,20240426,090350,노루페인트,325 -20231231,20240426,090355,노루페인트1우,330 -20231231,20240426,000320,노루홀딩스,500 -20231231,20240426,000325,노루홀딩스1우,505 -20231231,20240419,194700,노바렉스,200 -20231231,20240426,285490,노바텍,500 -20231231,,145170,노브랜드,0 -20231231,20240415,14517K,노브랜드1우,0 -20231231,,229500,노브메타파마,0 -20231231,,22950L,노브메타파마 2우,0 -20231231,,376930,노을,0 -20231231,20240405,006280,녹십자,1500 -20231231,20240405,234690,녹십자웰빙,100 -20231231,20240405,005250,녹십자홀딩스,300 -20231231,20240405,005255,녹십자홀딩스1우,305 -20231231,20240405,005257,녹십자홀딩스2우,300 -20231231,,065560,녹원씨엔아이,0 -20231231,20240422,004370,농심,5000 -20231231,20240426,072710,농심홀딩스,2500 -20231231,20240419,054050,농업회사법인농우바이오,200 -20231231,,069140,누리플랜,0 -20231231,20240425,040160,누리플렉스,50 -20231231,,332290,누보,0 -20231231,,348340,뉴로메카,0 -20231231,,123840,뉴온,0 -20231231,,270870,뉴트리,0 -20231231,20240423,349200,뉴트리원,0 -20231231,20240422,144960,뉴파워프라즈마,50 -20231231,,085670,뉴프렉스,0 -20231231,,340360,다보링크,250 -20231231,,154040,다산솔루에타,0 -20231231,20240329,058730,다스코,100 -20231231,20240415,023590,다우기술,700 -20231231,20240417,032190,다우데이타,250 -20231231,,323350,다원넥스뷰,0 -20231231,,068240,다원시스,0 -20231231,,145210,다이나믹디자인,0 -20231231,20240418,009280,다함이텍,0 -20231231,20240405,019680,대교,0 -20231231,20240405,019685,대교 1우,45 -20231231,20240412,006370,대구백화점,50 -20231231,20240412,006375,대구백화점1우,100 -20231231,20240426,000490,대동,100 -20231231,20240426,00049K,대동1우,100 -20231231,20240422,020400,대동금속,60 -20231231,20240418,008830,대동기어,40 -20231231,20240426,048470,대동스틸,30 -20231231,20240405,004780,대륙제관,110 -20231231,20240329,080610,대림,2000 -20231231,20240412,005750,대림비앤코,110 -20231231,20240419,017650,대림제지,100 -20231231,,007720,대명소노시즌,0 -20231231,,389260,대명에너지,0 -20231231,20240415,317850,대모엔지니어링,40 -20231231,20240419,078140,대봉엘에스,50 -20231231,20240419,001680,대상,800 -20231231,20240419,001685,대상1우,810 -20231231,20240419,084690,대상홀딩스,270 -20231231,20240419,084695,대상홀딩스1우,280 -20231231,20240423,036480,대성미생물연구소,75 -20231231,,128820,대성산업,0 -20231231,20240418,117580,대성에너지,250 -20231231,,027830,대성창업투자,0 -20231231,,104040,대성파인텍,0 -20231231,,129920,대성하이텍,0 -20231231,20240425,016710,대성홀딩스,250 -20231231,,438220,대신밸런스제13호기업인수목적,0 -20231231,,442310,대신밸런스제14호기업인수목적,0 -20231231,,457390,대신밸런스제15호기업인수목적,0 -20231231,,457630,대신밸런스제16호기업인수목적,0 -20231231,,471050,대신밸런스제17호기업인수목적,0 -20231231,,045390,대아티아이,0 -20231231,,108380,대양전기공업,0 -20231231,,006580,대양제지공업,0 -20231231,,014160,대영포장,0 -20231231,,047040,대우건설,0 -20231231,,009320,대우전자부품,0 -20231231,20240412,003090,대웅,100 -20231231,20240412,069620,대웅제약,600 -20231231,,007680,대원,0 -20231231,20240424,000430,대원강업,110 -20231231,20240423,048910,대원미디어,100 -20231231,20240403,005710,대원산업,175 -20231231,20240419,003220,대원제약,300 -20231231,,024890,대원화성,0 -20231231,,290380,대유,0 -20231231,,002880,대유에이텍,0 -20231231,20240412,048740,대전방송,100 -20231231,20240423,120240,대정화금,450 -20231231,20240418,003310,대주산업,42 -20231231,,114920,대주이엔티,0 -20231231,,078600,대주전자재료,0 -20231231,,012800,대창,0 -20231231,,012805,대창1우,0 -20231231,20240423,015230,대창단조,180 -20231231,,096350,대창솔루션,0 -20231231,20240426,140520,대창스틸,150 -20231231,20240412,131220,대한과학,60 -20231231,,010170,대한광통신,0 -20231231,20240415,054670,대한뉴팜,100 -20231231,,001070,대한방직,0 -20231231,20240418,023910,대한약품공업,750 -20231231,20240319,006650,대한유화,1000 -20231231,,001440,대한전선,0 -20231231,20240419,084010,대한제강,500 -20231231,20240401,001790,대한제당,115 -20231231,20240401,001795,대한제당1우,120 -20231231,,001797,대한제당2우,0 -20231231,20240415,001130,대한제분,2500 -20231231,20240419,003490,대한항공,750 -20231231,20240419,003495,대한항공1우,800 -20231231,,005880,대한해운,0 -20231231,20240425,003830,대한화섬,750 -20231231,20240403,016090,대현,100 -20231231,20240426,067080,대화제약,100 -20231231,20240415,298540,더네이쳐홀딩스,400 -20231231,20240415,29854K,더네이쳐홀딩스 1우,0 -20231231,,032860,더라미,0 -20231231,20240415,192080,더블유게임즈,1000 -20231231,,393890,더블유씨피,0 -20231231,,299170,더블유에스아이,0 -20231231,,089230,더이앤엠,0 -20231231,,302920,더콘텐츠온,0 -20231231,,30292K,더콘텐츠온1우,0 -20231231,,213420,덕산네오룩스,0 -20231231,,077360,덕산하이메탈,0 -20231231,20240419,004830,덕성,45 -20231231,20240419,004835,덕성1우,50 -20231231,20240412,090410,덕신이피씨,30 -20231231,20240415,024900,덕양산업,50 -20231231,,263600,덕우전자,0 -20231231,20240424,446530,덕인,100 -20231231,,194480,데브시스터즈,0 -20231231,,199150,데이터스트림즈,0 -20231231,,206560,덱스터스튜디오,0 -20231231,,261200,덴티스,0 -20231231,20240416,145720,덴티움,400 -20231231,20240411,067990,도이치모터스,370 -20231231,20240405,193030,도이치파이낸셜,0 -20231231,20240405,19303P,도이치파이낸셜 5우,30 -20231231,20240405,19303Q,도이치파이낸셜 6우,0 -20231231,20240405,19303M,도이치파이낸셜3우,0 -20231231,20240405,19303N,도이치파이낸셜4우,20 -20231231,20240405,19303R,도이치파이낸셜7우,0 -20231231,20240329,002150,도화엔지니어링,280 -20231231,20240405,006620,동구바이오제약,120 -20231231,,100130,동국S&C,0 -20231231,20240419,005160,동국산업,130 -20231231,20240408,460850,동국씨엠,100 -20231231,20240419,075970,동국알앤에스,80 -20231231,20240408,460860,동국제강,700 -20231231,20240419,086450,동국제약,180 -20231231,20240419,08645K,동국제약1우,519 -20231231,20240409,001230,동국홀딩스,600 -20231231,20240401,023450,동남합성,500 -20231231,20240412,222070,동명스틸,150 -20231231,20240425,004140,동방,20 -20231231,,099410,동방선기,0 -20231231,20240329,007590,동방아그로,300 -20231231,20240329,007595,동방아그로1우,305 -20231231,20240329,007597,동방아그로2우,0 -20231231,20240425,005960,동부건설,300 -20231231,20240425,005965,동부건설1우,350 -20231231,20240306,026960,동서,780 -20231231,,002210,동성제약,0 -20231231,20240424,102260,동성케미컬,200 -20231231,20240423,033500,동성화인텍,250 -20231231,20240423,025950,동신건설,150 -20231231,20240419,060970,동아닷컴,0 -20231231,20240418,000640,동아쏘시오홀딩스,1200 -20231231,20240419,170900,동아에스티,700 -20231231,20240416,088130,동아엘텍,150 -20231231,20240411,041930,동아화성,150 -20231231,20240419,001520,동양,40 -20231231,20240419,001525,동양1우,90 -20231231,20240419,001527,동양2우,150 -20231231,20240419,001529,동양3우,150 -20231231,20240419,00152A,동양4우,150 -20231231,,084670,동양고속,0 -20231231,20240405,060380,동양에스텍,50 -20231231,20240412,079960,동양이엔피,400 -20231231,20240408,060830,동양잉크,0 -20231231,,228340,동양파일,0 -20231231,20240425,092780,동양피스톤,100 -20231231,20240426,088910,동우팜투테이블,30 -20231231,20240416,094170,동운아나텍,70 -20231231,20240426,013120,동원개발,80 -20231231,,030720,동원수산,0 -20231231,20240426,111380,동인기연,560 -20231231,20240415,163560,동일고무벨트,150 -20231231,20240416,109860,동일금속,400 -20231231,20240423,032960,동일기연,35 -20231231,20240405,004890,동일산업,1000 -20231231,,023790,동일철강,0 -20231231,20240419,005290,동진쎄미켐,120 -20231231,,025900,동화기업,0 -20231231,20240425,000020,동화약품,180 -20231231,20240425,389930,두나무,2937 -20231231,20240425,38993L,두나무2우,2937 -20231231,,034020,두산에너빌리티,0 -20231231,,33626K,두산퓨얼셀1우선주,0 -20231231,,33626L,두산퓨얼셀2우선주(신형),0 -20231231,,336260,두산퓨얼셀보통주,0 -20231231,20240422,016740,두올,120 -20231231,20240419,013900,두원중공업,500 -20231231,,073190,듀오백,0 -20231231,,176750,듀켐바이오,0 -20231231,,030350,드래곤플라이,0 -20231231,,035430,드림라인,0 -20231231,20240425,03543L,드림라인 2우,0 -20231231,20240425,03543K,드림라인1우,0 -20231231,,203650,드림시큐리티,0 -20231231,,060570,드림어스컴퍼니,0 -20231231,,06057K,드림어스컴퍼니1우,0 -20231231,20240419,192650,드림텍,200 -20231231,,217620,디딤이앤에프,0 -20231231,,016670,디모아,0 -20231231,20240412,187870,디바이스이엔지,100 -20231231,,456440,디비금융제11호기업인수목적,0 -20231231,20240415,066670,디스플레이테크,50 -20231231,20240412,024090,디씨엠,150 -20231231,20240415,003160,디아이,100 -20231231,20240328,001530,디아이동일,250 -20231231,,092200,디아이씨,0 -20231231,20240419,110990,디아이티,180 -20231231,20240419,263690,디알젬,180 -20231231,20240412,214680,디알텍,0 -20231231,20240412,21468K,디알텍 1우,.1 -20231231,,263720,디앤씨미디어,0 -20231231,,376300,디어유,0 -20231231,,017860,디에스단석,0 -20231231,20240417,241520,디에스씨인베스트먼트,40 -20231231,20240426,155660,디에스알,60 -20231231,,069730,디에스알제강,60 -20231231,,109740,디에스케이,0 -20231231,,290120,디에이치오토리드,0 -20231231,,025440,디에이치오토웨어,0 -20231231,,196490,디에이테크놀로지,0 -20231231,,066900,디에이피,0 -20231231,,180400,디엑스앤브이엑스,0 -20231231,,127120,디엔에이링크,0 -20231231,20240415,092070,디엔에프,200 -20231231,20240419,000210,디엘,1000 -20231231,20240419,000215,디엘1우,1050 -20231231,20240412,001880,디엘건설,190 -20231231,20240412,00188K,디엘건설1우,1196 -20231231,20240419,375500,디엘이앤씨,500 -20231231,20240419,37550K,디엘이앤씨 1우,550 -20231231,20240419,37550L,디엘이앤씨2우,500 -20231231,20240425,068790,디엠에스,90 -20231231,20240412,013570,디와이,150 -20231231,20240409,310870,디와이씨,25 -20231231,20240412,210540,디와이파워,400 -20231231,,104460,디와이피엔에프,200 -20231231,,079810,디이엔티,0 -20231231,,113810,디젠스,0 -20231231,20240404,068930,디지털대성,200 -20231231,20240419,033130,디지틀조선일보,20 -20231231,,060900,디지피,0 -20231231,20240424,105740,디케이락,250 -20231231,20240412,263020,디케이앤디,50 -20231231,,290550,디케이티,0 -20231231,,187220,디티앤씨,0 -20231231,,383930,디티앤씨알오,0 -20231231,,131180,딜리,0 -20231231,,315640,딥노이드,0 -20231231,,31564K,딥노이드1우,0 -20231231,,223310,딥마인드플랫폼,0 -20231231,,042510,라온시큐어,0 -20231231,20240415,232680,라온테크,30 -20231231,,418420,라온텍,0 -20231231,,300120,라온피플(주),0 -20231231,20240412,171120,라이온켐텍,100 -20231231,,388790,라이콤,0 -20231231,,347700,라이프시맨틱스,0 -20231231,,214260,라파스,0 -20231231,,403360,라피치,0 -20231231,,200350,래몽래인,0 -20231231,,20035N,래몽래인 4우,0 -20231231,,171010,램테크놀러지,0 -20231231,,084650,랩지노믹스,0 -20231231,20240425,217500,러셀,30 -20231231,20240402,038390,레드캡투어,700 -20231231,,294140,레몬,0 -20231231,,443250,레뷰코퍼레이션,0 -20231231,,228670,레이,0 -20231231,,22867K,레이1우,0 -20231231,20240418,228850,레이언스,100 -20231231,,412350,레이저쎌,0 -20231231,,199550,레이저옵텍,0 -20231231,,281740,레이크머티리얼즈,0 -20231231,,277810,레인보우로보틱스,0 -20231231,20240404,215100,로보로보,14 -20231231,,238500,로보쓰리에이아이앤로보틱스,0 -20231231,,108490,로보티즈,0 -20231231,,10849L,로보티즈 2우,0 -20231231,,223220,로지스몬,0 -20231231,20240416,067730,로지시스,60 -20231231,20240401,071280,로체시스템즈,50 -20231231,,032350,롯데관광개발,0 -20231231,20240425,089860,롯데렌탈(주),1200 -20231231,,000400,롯데손해보험,0 -20231231,20240425,023530,롯데쇼핑,3800 -20231231,20240423,020150,롯데에너지머티리얼즈,200 -20231231,20240419,280360,롯데웰푸드,3000 -20231231,20240326,330590,롯데위탁관리부동산투자회사,95.62617871 -20231231,20240419,004000,롯데정밀화학,2000 -20231231,20240419,286940,롯데정보통신,1000 -20231231,20240426,004990,롯데지주,1500 -20231231,20240426,00499K,롯데지주1우,1550 -20231231,20240419,005300,롯데칠성음료,3400 -20231231,20240419,005305,롯데칠성음료1우,3405 -20231231,20240425,011170,롯데케미칼,3500 -20231231,,071840,롯데하이마트,300 -20231231,,038060,루멘스,0 -20231231,,162120,루켄테크놀러지스,0 -20231231,,253610,루트락,0 -20231231,20240424,058470,리노공업,3000 -20231231,,019570,리더스기술투자,0 -20231231,,016100,리더스코스메틱,0 -20231231,20240423,012700,리드코프,200 -20231231,20240415,080070,리드팜,20 -20231231,,302550,리메드,0 -20231231,,073570,리튬포어스,0 -20231231,,377450,리파인,0 -20231231,20240415,277070,린드먼아시아인베스트먼트,43 -20231231,20240426,042500,링네트,100 -20231231,,439090,마녀공장,0 -20231231,,027740,마니커,0 -20231231,,195500,마니커에프앤지,0 -20231231,,377480,마음에이아이,0 -20231231,,305090,마이크로디지탈,0 -20231231,,30509L,마이크로디지탈2우,0 -20231231,,448780,마이크로엔엑스,0 -20231231,,44878K,마이크로엔엑스 1우,0 -20231231,,44878L,마이크로엔엑스 2우,0 -20231231,,44878M,마이크로엔엑스 3우,0 -20231231,,44878N,마이크로엔엑스 4우,0 -20231231,20240418,098120,마이크로컨텍솔루션,80 -20231231,,424980,마이크로투나노,0 -20231231,20240425,038290,마크로젠,300 -20231231,20240425,044320,매경닷컴,250 -20231231,20240419,078060,매일방송,50 -20231231,20240416,267980,매일유업,1200 -20231231,20240416,005990,매일홀딩스,200 -20231231,20240416,093520,매커스,150 -20231231,,377030,맥스트,0 -20231231,20240229,088980,맥쿼리한국인프라투융자회사,390 -20231231,,179720,머니무브,0 -20231231,,100590,머큐리,0 -20231231,20240419,067280,멀티캠퍼스,1600 -20231231,20240412,072870,메가스터디,850 -20231231,20240411,215200,메가스터디교육,2000 -20231231,,133750,메가엠디,0 -20231231,20240426,102600,메가젠임플란트,0 -20231231,,446540,메가터치,0 -20231231,,200580,메디쎄이,0 -20231231,,20058M,메디쎄이3우,0 -20231231,20240418,041920,메디아나,25 -20231231,,014100,메디앙스,0 -20231231,,249680,메디오젠,0 -20231231,20240425,24968K,메디오젠1우,0 -20231231,20240425,24968L,메디오젠2우,0 -20231231,20240425,24968M,메디오젠3우,0 -20231231,,236340,메디젠휴먼케어,0 -20231231,,23634V,메디젠휴먼케어 10우,0 -20231231,,23634T,메디젠휴먼케어 9우,0 -20231231,,23634L,메디젠휴먼케어2우,0 -20231231,,23634M,메디젠휴먼케어3우,0 -20231231,,23634N,메디젠휴먼케어4우,0 -20231231,,23634P,메디젠휴먼케어5우,0 -20231231,,23634Q,메디젠휴먼케어6우,0 -20231231,,23634R,메디젠휴먼케어7우,0 -20231231,,23634S,메디젠휴먼케어8우,0 -20231231,,054180,메디콕스,0 -20231231,,086900,메디톡스,0 -20231231,,08690K,메디톡스 3우,0 -20231231,,08690L,메디톡스 4우,0 -20231231,,078160,메디포스트,0 -20231231,,07816K,메디포스트 1우,0 -20231231,,065650,메디프론디비티,0 -20231231,,06565K,메디프론디비티 1우,0 -20231231,20240405,138040,메리츠금융지주,2360 -20231231,20240419,408920,메쎄이상,50 -20231231,,140410,메지온,0 -20231231,,241770,메카로,0 -20231231,,090370,메타랩스,0 -20231231,20240415,059210,메타바이오메드,20 -20231231,20240419,005360,모나미,50 -20231231,,434480,모니터랩,0 -20231231,,43448K,모니터랩 1우,0 -20231231,,080420,모다이노칩,0 -20231231,20240409,417970,모델솔루션,40 -20231231,20240418,080160,모두투어네트워크,250 -20231231,,087260,모바일어플라이언스,0 -20231231,20240411,101330,모베이스,70 -20231231,,012860,모베이스전자,0 -20231231,,363260,모비데이즈,0 -20231231,,348030,모비릭스,0 -20231231,,250060,모비스,0 -20231231,,288980,모아데이타,0 -20231231,20240426,333050,모코엠시스,14 -20231231,20240408,009680,모토닉,450 -20231231,,118990,모트렉스,0 -20231231,,006920,모헨즈,0 -20231231,,320340,무궁화신탁,0 -20231231,20240418,32034L,무궁화신탁2우,0 -20231231,20240418,32034M,무궁화신탁3우,0 -20231231,20240418,32034N,무궁화신탁4우,0 -20231231,20240418,32034R,무궁화신탁7우,0 -20231231,20240418,32034S,무궁화신탁8우,0 -20231231,,038340,무궁화인포메이션테크놀로지,0 -20231231,20240405,001810,무림에스피,10 -20231231,20240405,009200,무림페이퍼,75 -20231231,20240405,009580,무림피앤피,100 -20231231,20240415,033920,무학,230 -20231231,20240405,008420,문배철강,50 -20231231,,279600,미디어젠,0 -20231231,,254490,미래반도체,0 -20231231,,218150,미래생명자원,0 -20231231,20240229,094800,미래에셋맵스아시아퍼시픽부동산공모1호투자회사,265 -20231231,,100790,미래에셋벤처투자,0 -20231231,,446190,미래에셋비전기업인수목적2호,0 -20231231,,208890,미래엔에듀파트너,0 -20231231,20240423,049950,미래컴퍼니,100 -20231231,20240415,308940,미성이앤씨,5000 -20231231,,207760,미스터블루,0 -20231231,20240409,002840,미원상사,1000 -20231231,20240404,268280,미원스페셜티케미칼(신설),1400 -20231231,20240412,107590,미원홀딩스,700 -20231231,20240329,134380,미원화학,2000 -20231231,,351020,미쥬,0 -20231231,20240424,003650,미창석유공업,2800 -20231231,,059090,미코,0 -20231231,20240426,402350,미코세라믹스,0 -20231231,,201490,미투온,0 -20231231,,418470,밀리의서재,0 -20231231,20240409,191390,바디프랜드,0 -20231231,,018700,바른손,0 -20231231,,035620,바른손이앤에이,0 -20231231,,354390,바스칸바이오제약,0 -20231231,,053030,바이넥스,0 -20231231,,301300,바이브컴퍼니,0 -20231231,,314930,바이오다인,0 -20231231,,208710,바이오로그디바이스,0 -20231231,,038460,바이오스마트,0 -20231231,20240415,298210,바이오스펙트럼,60 -20231231,,251120,바이오에프디엔씨,0 -20231231,20240415,199730,바이오인프라,600 -20231231,,266470,바이오인프라생명과학,0 -20231231,,26647L,바이오인프라생명과학 2우,0 -20231231,,26647M,바이오인프라생명과학 3우,0 -20231231,,26647N,바이오인프라생명과학 4우,0 -20231231,,26647K,바이오인프라생명과학1우,0 -20231231,,289170,바이오텐,0 -20231231,,28917K,바이오텐1우,0 -20231231,,28917L,바이오텐2우,0 -20231231,,086040,바이오톡스텍,0 -20231231,,086049,바이오톡스텍3우,0 -20231231,,199290,바이오프로테크,0 -20231231,,19929V,바이오프로테크 10우,0 -20231231,,19929W,바이오프로테크 11우,0 -20231231,,19929X,바이오프로테크 12우,0 -20231231,,19929Y,바이오프로테크 13우,0 -20231231,,19929T,바이오프로테크 9우,0 -20231231,,19929P,바이오프로테크5우,0 -20231231,,19929Q,바이오프로테크6우,0 -20231231,,19929R,바이오프로테크7우,0 -20231231,,19929S,바이오프로테크8우,0 -20231231,20240409,099430,바이오플러스,70 -20231231,20240409,09943N,바이오플러스 4우,70 -20231231,,032980,바이온,0 -20231231,,308080,바이젠셀,0 -20231231,20240418,043150,바텍,100 -20231231,,323990,박셀바이오,0 -20231231,20240423,001340,백광산업,60 -20231231,20240412,046310,백금티앤에이,80 -20231231,20240409,035150,백산,200 -20231231,,331520,밸로프,0 -20231231,,438700,버넥트,0 -20231231,,066410,버킷스튜디오,0 -20231231,,06641K,버킷스튜디오1우,0 -20231231,,06641L,버킷스튜디오2우,0 -20231231,,002410,범양건영,0 -20231231,,382900,범한퓨얼셀,0 -20231231,,206400,베노티앤알,0 -20231231,20240416,019010,베뉴지,30 -20231231,,299910,베스파,0 -20231231,20240422,443630,벨락,1050 -20231231,20240422,44363K,벨락1우,1050 -20231231,,424760,벨로크,0 -20231231,20240412,007210,벽산,60 -20231231,20240417,225530,보광산업,150 -20231231,20240422,250000,보라티알,250 -20231231,20240419,002760,보락,5 -20231231,20240424,003850,보령,100 -20231231,,006910,보성파워텍,0 -20231231,20240417,411160,보이스아이,0 -20231231,,000890,보해양조,0 -20231231,,000895,보해양조1우,0 -20231231,,226340,본느,0 -20231231,,206950,볼빅,0 -20231231,,20695X,볼빅 12우,0 -20231231,,20695V,볼빅10우,0 -20231231,,20695N,볼빅4우,0 -20231231,,20695S,볼빅8우,0 -20231231,,20695T,볼빅9우,0 -20231231,,003000,부광약품,0 -20231231,20240417,026940,부국철강,75 -20231231,,014470,부방,0 -20231231,20240426,011390,부산산업,250 -20231231,20240403,008470,부스타,60 -20231231,20240409,228350,불스원,0 -20231231,,338220,뷰노,0 -20231231,,33822L,뷰노 2우,0 -20231231,20240412,100120,뷰웍스,350 -20231231,,406820,뷰티스킨,0 -20231231,20240416,099390,브레인즈컴퍼니,60 -20231231,20240412,064480,브리지텍,150 -20231231,,28833Z,브릿지바이오 14우,0 -20231231,,288330,브릿지바이오테라퓨틱스,0 -20231231,,28833A,브릿지바이오테라퓨틱스 15우,0 -20231231,,28833B,브릿지바이오테라퓨틱스 16우,0 -20231231,,365900,브이씨,0 -20231231,20240422,251630,브이원텍,100 -20231231,,018290,브이티,0 -20231231,20240425,346150,브이피,1349 -20231231,,044480,블레이드엔터테인먼트,0 -20231231,20240417,056070,블루버드,710 -20231231,,439580,블루엠텍,0 -20231231,,033560,블루콤,0 -20231231,,191600,블루탑,0 -20231231,,369370,블리츠웨이,0 -20231231,,126340,비나텍,0 -20231231,,121800,비덴트,0 -20231231,,148140,비디아이,0 -20231231,,082800,비보존제약,0 -20231231,20240419,318410,비비씨,400 -20231231,,002070,비비안,0 -20231231,,100220,비상교육,0 -20231231,,419540,비스토스,0 -20231231,,146320,비씨엔씨,0 -20231231,20240424,200780,비씨월드제약,100 -20231231,20240426,031320,비씨카드,1500 -20231231,,413640,비아이매트릭스,0 -20231231,20240419,090460,비에이치,250 -20231231,,445360,비엔케이제1호기업인수목적,0 -20231231,,473370,비엔케이제2호기업인수목적,0 -20231231,,142760,비엘,0 -20231231,20240408,086670,비엠티,250 -20231231,20240419,335890,비올,18 -20231231,,138580,비즈니스온커뮤니케이션,0 -20231231,20240412,027410,비지에프,120 -20231231,20240412,282330,비지에프리테일(신설),4100 -20231231,20240418,126600,비지에프에코머티리얼즈,70 -20231231,20240412,082920,비츠로셀,250 -20231231,,054220,비츠로시스,0 -20231231,20240405,042370,비츠로테크,50 -20231231,,050090,비케이홀딩스,0 -20231231,,357880,비트나인,0 -20231231,20240417,032850,비트컴퓨터,62 -20231231,,148780,비플라이소프트,0 -20231231,,238200,비피도,0 -20231231,20240412,093190,빅솔론,200 -20231231,,065450,빅텍,0 -20231231,,210120,빅토리콘텐츠,0 -20231231,20240405,005180,빙그레,2600 -20231231,20240412,072950,빛샘전자,70 -20231231,,266170,뿌리깊은나무들,0 -20231231,,26617K,뿌리깊은나무들1우,0 -20231231,,26617M,뿌리깊은나무들3우,0 -20231231,20240405,143240,사람인,500 -20231231,20240418,003960,사조대림,350 -20231231,20240418,003965,사조대림1우,400 -20231231,20240418,008040,사조동아원,15 -20231231,20240418,007160,사조산업,200 -20231231,,014710,사조씨푸드,0 -20231231,20240418,006090,사조오양,200 -20231231,,452430,사피엔반도체,0 -20231231,20240423,419120,산돌,180 -20231231,20240426,008270,산은캐피탈,0 -20231231,20240425,388740,삼광랩트리,0 -20231231,,014970,삼륭물산,75 -20231231,20240426,018310,삼목에스폼,300 -20231231,,012210,삼미금속,0 -20231231,20240426,053700,삼보모터스,50 -20231231,,009620,삼보산업,0 -20231231,20240426,023600,삼보판지,310 -20231231,20240419,006400,삼성SDI,1000 -20231231,20240419,006405,삼성SDI1우,1050 -20231231,20240426,006660,삼성공조,60 -20231231,,425290,삼성기업인수목적6호,0 -20231231,,439250,삼성기업인수목적7호,0 -20231231,,448740,삼성기업인수목적8호,0 -20231231,20240412,028260,삼성물산,2550 -20231231,20240412,02826K,삼성물산1우,2600 -20231231,20240419,032830,삼성생명보험,3700 -20231231,20240419,018260,삼성에스디에스,2700 -20231231,20240419,009150,삼성전기,1150 -20231231,20240419,009155,삼성전기1우,1200 -20231231,20240419,005930,삼성전자,361 -20231231,20240419,005935,삼성전자1우,362 -20231231,,001360,삼성제약,0 -20231231,,010140,삼성중공업,0 -20231231,,010145,삼성중공업1우,0 -20231231,20240412,016360,삼성증권,2200 -20231231,20240412,068290,삼성출판사,200 -20231231,20240415,006110,삼아알미늄,100 -20231231,20240415,374310,삼아인터내셔날,3000 -20231231,20240412,009300,삼아제약,750 -20231231,20240402,145990,삼양사,1750 -20231231,20240402,145995,삼양사1우,1800 -20231231,20240423,003230,삼양식품,1100 -20231231,20240415,225190,삼양옵틱스,50 -20231231,20240403,002170,삼양통상,1500 -20231231,20240402,272550,삼양패키징,500 -20231231,20240405,000070,삼양홀딩스,3500 -20231231,20240405,000075,삼양홀딩스1우,3550 -20231231,20240426,003720,삼영,20 -20231231,20240416,002810,삼영무역,600 -20231231,,361670,삼영에스앤씨,0 -20231231,20240405,054540,삼영엠텍,100 -20231231,20240419,005680,삼영전자공업,300 -20231231,20240418,023000,삼원강재,110 -20231231,20240416,072540,삼원에스앤디,75 -20231231,20240418,004380,삼익THK,100 -20231231,20240423,002450,삼익악기,50 -20231231,20240418,032280,삼일,30 -20231231,20240425,002290,삼일기업공사,175 -20231231,20240412,009770,삼정펄프,1000 -20231231,20240419,037460,삼지전자,450 -20231231,20240418,032750,삼진,70 -20231231,,054090,삼진엘앤디,0 -20231231,20240415,005500,삼진제약,800 -20231231,,000250,삼천당제약,0 -20231231,,024950,삼천리자전거,0 -20231231,20240424,038500,삼표시멘트,100 -20231231,20240401,017480,삼현철강,300 -20231231,20240411,010960,삼호개발,190 -20231231,,046390,삼화네트웍스,0 -20231231,20240415,004450,삼화왕관,700 -20231231,20240419,009470,삼화전기,300 -20231231,20240419,001820,삼화콘덴서공업,500 -20231231,20240423,000390,삼화페인트공업,400 -20231231,,027580,상보,0 -20231231,,101000,상상인인더스트리,0 -20231231,,415580,상상인제3호기업인수목적,0 -20231231,,452670,상상인제4호기업인수목적,0 -20231231,20240419,041650,상신브레이크,110 -20231231,20240426,091580,상신이디피,120 -20231231,20240412,089980,상아프론테크,200 -20231231,,042940,상지카일룸,0 -20231231,20240409,075180,새론오토모티브,140 -20231231,20240419,107600,새빗켐,200 -20231231,,411080,샌즈랩,0 -20231231,,252990,샘씨엔에스,0 -20231231,20240412,007540,샘표,200 -20231231,20240412,248170,샘표식품,200 -20231231,20240426,038070,서린바이오사이언스,100 -20231231,20240419,006730,서부티엔디,50 -20231231,,079650,서산,0 -20231231,20240419,100660,서암기계공업,35 -20231231,20240424,007860,서연,150 -20231231,,200880,서연이화,200 -20231231,20240415,019770,서연탑메탈,65 -20231231,20240426,279000,서울개인택시복지법인,0 -20231231,20240403,017390,서울도시가스,2250 -20231231,20240412,046890,서울반도체,136 -20231231,,063170,서울옥션,0 -20231231,,027040,서울전자통신,0 -20231231,,021050,서원,0 -20231231,20240409,093920,서원인텍,400 -20231231,,189860,서전기전,0 -20231231,,178320,서진시스템,0 -20231231,,122690,서진오토모티브,0 -20231231,20240425,070340,서진캠,0 -20231231,20240415,140070,서플러스글로벌,30 -20231231,20240417,011370,서한,30 -20231231,20240412,065710,서호전기,1000 -20231231,20240405,008490,서흥,100 -20231231,20240412,035890,서희건설,45 -20231231,,357550,석경에이티,0 -20231231,20240419,003100,선광,400 -20231231,,007610,선도전기,0 -20231231,20240411,067370,선바이오,75 -20231231,,171090,선익시스템,0 -20231231,20240419,136490,선진,100 -20231231,20240430,086710,선진뷰티사이언스,40 -20231231,20240423,014620,성광벤드,150 -20231231,20240419,037350,성도이엔지,100 -20231231,,014910,성문전자,0 -20231231,,014915,성문전자1우,0 -20231231,20240416,003080,성보화학,135 -20231231,20240417,004980,성신양회,350 -20231231,20240417,004985,성신양회1우,400 -20231231,,011300,성안,0 -20231231,,081580,성우전자,0 -20231231,,045300,성우테크론,0 -20231231,20240416,015750,성우하이텍,150 -20231231,,365340,성일하이텍,0 -20231231,20240418,080470,성창오토텍,50 -20231231,,043260,성호전자,0 -20231231,,002420,세기상사,0 -20231231,,188260,세니젠,0 -20231231,,053060,세동,0 -20231231,,340440,세림비앤지,0 -20231231,,34044L,세림비앤지2우,0 -20231231,20240425,042380,세메스,250 -20231231,20240403,017510,세명전기공업,70 -20231231,20240419,004360,세방,300 -20231231,20240419,004365,세방1우,305 -20231231,20240411,004490,세방전지,700 -20231231,20240404,011560,세보엠이씨,550 -20231231,,396300,세아메카닉스,0 -20231231,20240416,427080,세아베스틸,0 -20231231,20240417,001430,세아베스틸지주,1200 -20231231,20240412,306200,세아제강(신설),8000 -20231231,20240426,003030,세아제강지주,2000 -20231231,20240419,019440,세아특수강,1000 -20231231,20240419,058650,세아홀딩스,4000 -20231231,20240412,336710,세안,0 -20231231,,013000,세우글로벌,0 -20231231,,013005,세우글로벌1우,0 -20231231,20240412,100700,세운메디칼,70 -20231231,20240426,024830,세원물산,100 -20231231,,091090,세원이앤씨,0 -20231231,20240419,067830,세이브존아이앤씨,30 -20231231,20240329,107870,세일이엔에스보통주,0 -20231231,20240409,033530,세종공업,150 -20231231,,036630,세종텔레콤,0 -20231231,,039310,세중,0 -20231231,20240426,075580,세진중공업,200 -20231231,20240423,053450,세코닉스,100 -20231231,20240423,252500,세화피앤씨,17 -20231231,,321370,센서뷰,0 -20231231,,347000,센코,0 -20231231,,34700K,센코 1우,0 -20231231,,331920,셀레믹스,0 -20231231,,049180,셀루메드,0 -20231231,,299660,셀리드,0 -20231231,,268600,셀리버리,0 -20231231,,26860R,셀리버리 7우,0 -20231231,,26860S,셀리버리 8우,0 -20231231,,26860T,셀리버리 9우,0 -20231231,,108860,셀바스에이아이,0 -20231231,,208370,셀바스헬스케어,0 -20231231,,318160,셀바이오휴먼텍,0 -20231231,20240423,068270,셀트리온,500 -20231231,,068760,셀트리온제약,0 -20231231,,290690,소룩스,0 -20231231,,950200,소마젠 KDR,0 -20231231,,032680,소프트센,0 -20231231,,032685,소프트센1우,0 -20231231,,032687,소프트센2우,0 -20231231,,258790,소프트캠프,0 -20231231,,043100,솔고바이오메디칼,0 -20231231,20240426,336370,솔루스첨단소재,100 -20231231,20240426,33637K,솔루스첨단소재1우,101 -20231231,20240426,33637L,솔루스첨단소재2우,100 -20231231,,248070,솔루엠,0 -20231231,,035610,솔본,0 -20231231,20240419,357780,솔브레인,2000 -20231231,20240419,036830,솔브레인홀딩스,200 -20231231,20240429,145730,솔젠트,0 -20231231,,304100,솔트룩스,0 -20231231,,328380,솔트웨어,0 -20231231,20240409,004430,송원산업,250 -20231231,,086980,쇼박스,0 -20231231,20240417,050960,수산아이앤티,125 -20231231,20240418,126720,수산인더스트리,800 -20231231,20240424,017550,수산중공업,10 -20231231,20240424,017555,수산중공업1우,15 -20231231,,084180,수성웹툰,0 -20231231,,253840,수젠텍,0 -20231231,,25384X,수젠텍12우,0 -20231231,,298830,슈어소프트테크,0 -20231231,,236200,슈프리마,0 -20231231,,094840,슈프리마에이치큐,0 -20231231,,424960,스마트레이더시스템,0 -20231231,20240425,057160,스마트로,500 -20231231,,099440,스맥,0 -20231231,,033790,스카이문스테크놀로지,0 -20231231,,276040,스코넥엔터테인먼트,0 -20231231,,159910,스킨앤스킨,0 -20231231,20240426,204210,스타자기관리부동산투자회사,961 -20231231,,115570,스타플렉스,0 -20231231,20240418,330730,스톤브릿지벤처스,300 -20231231,20240425,352090,스톰테크,300 -20231231,,415380,스튜디오삼익,0 -20231231,20240412,026890,스틱인베스트먼트,250 -20231231,20240412,245030,스페이스솔루션,0 -20231231,,203690,스피어파워,0 -20231231,,20369K,스피어파워 1우,0 -20231231,20240412,049830,승일,85 -20231231,20240412,020710,시공테크,80 -20231231,,033170,시그네틱스,0 -20231231,,025320,시노펙스,0 -20231231,20240417,134790,시디즈,500 -20231231,20240328,000480,시알홀딩스,410 -20231231,20240328,000480,시알홀딩스,410 -20231231,,429270,시지트로닉스,0 -20231231,20240416,131090,시큐브,25 -20231231,,232830,시큐센,0 -20231231,20240419,066290,시큐아이,400 -20231231,20240416,016590,신대양제지,150 -20231231,,290520,신도기연,0 -20231231,20240418,029530,신도리코,1500 -20231231,20240412,004970,신라교역,500 -20231231,,001000,신라섬유,0 -20231231,,025870,신라에스지,0 -20231231,20240422,065350,신성델타테크,120 -20231231,20240423,416180,신성에스티,200 -20231231,,011930,신성이엔지,0 -20231231,20240419,004170,신세계,4000 -20231231,20240422,037090,신세계센트럴시티,271 -20231231,20240416,035510,신세계아이앤씨,350 -20231231,20240419,031430,신세계인터내셔날,400 -20231231,20240425,006880,신송홀딩스,120 -20231231,20240425,162300,신스틸,19 -20231231,,290560,신시웨이,0 -20231231,20240419,002800,신신제약,60 -20231231,20240418,005800,신영와코루,150 -20231231,,472220,신영해피투모로우제10호기업인수목적,0 -20231231,,419270,신영해피투모로우제7호기업인수목적,0 -20231231,,430220,신영해피투모로우제8호기업인수목적,0 -20231231,,445970,신영해피투모로우제9호기업인수목적,0 -20231231,20240419,009270,신원,70 -20231231,20240419,009275,신원1우,75 -20231231,,017000,신원종합개발,0 -20231231,20240417,002700,신일전자,15 -20231231,20240416,012790,신일제약,170 -20231231,20240408,138070,신진에스엠,50 -20231231,,226330,신테카바이오,0 -20231231,20240411,002870,신풍,20 -20231231,20240329,404990,신한서부티엔디위탁관리부동산투자회사,140 -20231231,,418210,신한제10호기업인수목적,0 -20231231,,452980,신한제11호기업인수목적,0 -20231231,,393360,신한제8호기업인수목적,0 -20231231,,405640,신한제9호기업인수목적,0 -20231231,20240418,001770,신화다이나믹스,100 -20231231,,056700,신화인터텍,0 -20231231,20240426,187270,신화콘텍,50 -20231231,20240416,004080,신흥,140 -20231231,20240419,243840,신흥에스이씨,430 -20231231,20240419,24384K,신흥에스이씨 1우,430 -20231231,,257720,실리콘투,0 -20231231,20240416,058210,실크로드시앤티,0 -20231231,20240424,222800,심텍,160 -20231231,20240426,036710,심텍홀딩스,10 -20231231,20240426,03671L,심텍홀딩스 8우,10 -20231231,20240419,009160,심팩,100 -20231231,20240405,160980,싸이맥스,350 -20231231,20240423,052700,싸이버로지텍,500 -20231231,20240426,356890,싸이버원,50 -20231231,,102280,쌍방울,0 -20231231,20240426,003410,쌍용씨앤이,70 -20231231,20240426,004770,써니전자,30 -20231231,,217320,썬테크,0 -20231231,,21732K,썬테크1우,0 -20231231,,208640,썸에이지,0 -20231231,,222420,쎄노텍,0 -20231231,20240418,037760,쎄니트,40 -20231231,20240426,099320,쎄트렉아이,150 -20231231,20240426,099325,쎄트렉아이1우,0 -20231231,20240403,049960,쎌바이오텍,450 -20231231,,088280,쏘닉스,0 -20231231,,403550,쏘카,0 -20231231,20240426,050890,쏠리드,50 -20231231,20240409,067670,씨맥스커뮤니케이션즈,400 -20231231,20240415,073960,씨브이네트,0 -20231231,,109670,씨싸이트,0 -20231231,,222080,씨아이에스,0 -20231231,,004920,씨아이테크,0 -20231231,,236030,씨알푸드,0 -20231231,,23603K,씨알푸드1우,0 -20231231,,23603L,씨알푸드2우,0 -20231231,,103660,씨앗,0 -20231231,,10366W,씨앗 11우,0 -20231231,,023460,씨앤에이치,0 -20231231,,065770,씨에스,0 -20231231,,083660,씨에스에이코스믹,0 -20231231,20240409,112610,씨에스윈드,500 -20231231,20240422,000590,씨에스홀딩스,500 -20231231,,115530,씨엔플러스,0 -20231231,20240422,037340,씨엘인터내셔널,0 -20231231,20240415,297440,씨엠디엘,0 -20231231,,115480,씨유메디칼시스템,0 -20231231,,340810,씨유박스,0 -20231231,20240426,376290,씨유테크,16 -20231231,,189330,씨이랩,0 -20231231,,311690,씨제이바이오사이언스,0 -20231231,20240408,340460,씨제이올리브영,2662 -20231231,,035760,씨제이이엔엠,0 -20231231,20240415,048180,씨제이푸드빌,162 -20231231,20240419,096530,씨젠,200 -20231231,,083790,씨지인바이츠,0 -20231231,,08379P,씨지인바이츠5우,0 -20231231,,101240,씨큐브,0 -20231231,,060590,씨티씨바이오,0 -20231231,,308170,씨티알모빌리티,0 -20231231,20240416,260930,씨티케이,100 -20231231,,052300,씨티프라퍼티,0 -20231231,,05230M,씨티프라퍼티3우,0 -20231231,,05230P,씨티프라퍼티5우,0 -20231231,,05230Q,씨티프라퍼티6우,0 -20231231,,05230R,씨티프라퍼티7우,0 -20231231,,013990,아가방앤컴퍼니,0 -20231231,,123860,아나패스,0 -20231231,,025980,아난티,0 -20231231,,125210,아모그린텍,0 -20231231,20240412,090430,아모레퍼시픽,910 -20231231,20240412,090435,아모레퍼시픽1우,915 -20231231,20240412,002790,아모레퍼시픽그룹,245 -20231231,20240412,00279K,아모레퍼시픽그룹 3우,667 -20231231,20240412,002795,아모레퍼시픽그룹1우,250 -20231231,,357580,아모센스,0 -20231231,,052710,아모텍,0 -20231231,,074430,아미노로직스,0 -20231231,20240416,083930,아바코,200 -20231231,20240416,149950,아바텍,100 -20231231,20240412,036010,아비코전자,50 -20231231,20240417,002030,아세아,4400 -20231231,20240417,183190,아세아시멘트,225 -20231231,20240419,002310,아세아제지,1920 -20231231,,012170,아센디오,0 -20231231,,136410,아셈스,0 -20231231,,246720,아스타,0 -20231231,,159010,아스플로,0 -20231231,,127710,아시아경제,0 -20231231,20240417,267850,아시아나아이디티,500 -20231231,,020560,아시아나항공,0 -20231231,20240412,143160,아이디스,300 -20231231,20240412,031690,아이디스파워텔,0 -20231231,20240416,054800,아이디스홀딩스,250 -20231231,20240412,332370,아이디피,120 -20231231,20240416,122900,아이마켓코리아,150 -20231231,20240411,339950,아이비김영,20 -20231231,,439730,아이비케이에스제20호기업인수목적,0 -20231231,,442770,아이비케이에스제21호기업인수목적,0 -20231231,,448760,아이비케이에스제22호기업인수목적,0 -20231231,,467930,아이비케이에스제23호기업인수목적,0 -20231231,,469480,아이비케이에스제24호기업인수목적,0 -20231231,20240417,104770,아이비케이투자증권,65 -20231231,20240425,099190,아이센스,100 -20231231,20240416,214430,아이쓰리시스템,350 -20231231,,040910,아이씨디,0 -20231231,,368600,아이씨에이치,0 -20231231,20240412,010780,아이에스동서,1500 -20231231,20240415,095340,아이에스시,200 -20231231,,069920,아이에스이커머스,0 -20231231,,038880,아이에이,0 -20231231,,003560,아이에이치큐,0 -20231231,,00356K,아이에이치큐1우,0 -20231231,,307180,아이엘사이언스,0 -20231231,,101390,아이엠,0 -20231231,,456570,아이엠지티,0 -20231231,,45657K,아이엠지티 1우,0 -20231231,,45657L,아이엠지티 2우,0 -20231231,,45657M,아이엠지티 3우,0 -20231231,,45657N,아이엠지티 4우,0 -20231231,,45657P,아이엠지티 5우,0 -20231231,,45657R,아이엠지티 7우,0 -20231231,,45657S,아이엠지티 8우,0 -20231231,,45657T,아이엠지티 9우,0 -20231231,,451220,아이엠티,0 -20231231,,447690,아이오바이오,0 -20231231,,44769K,아이오바이오 1우,0 -20231231,,44769L,아이오바이오 2우,0 -20231231,,44769M,아이오바이오 3우,0 -20231231,,44769N,아이오바이오 4우,0 -20231231,,44769P,아이오바이오 5우,0 -20231231,,44769Q,아이오바이오 6우,0 -20231231,,078860,아이오케이컴퍼니,0 -20231231,,090150,아이윈,0 -20231231,,123010,아이윈플러스,0 -20231231,,031310,아이즈비전,0 -20231231,,059100,아이컴포넌트,0 -20231231,20240422,149010,아이케이세미콘,200 -20231231,20240415,454100,아이코닉스,0 -20231231,20240408,262840,아이퀘스트,100 -20231231,,175250,아이큐어,0 -20231231,20240403,052460,아이크래프트,80 -20231231,,119830,아이텍,0 -20231231,,052770,아이톡시,0 -20231231,,124500,아이티센,0 -20231231,,372800,아이티아이즈,0 -20231231,,099520,아이티엑스에이아이,0 -20231231,,084850,아이티엠반도체,0 -20231231,20240419,114840,아이패밀리에스씨,158 -20231231,,139990,아주스틸,0 -20231231,20240416,027360,아주아이비투자,50 -20231231,,032080,아즈텍더블유비이,0 -20231231,20240426,013310,아진산업,100 -20231231,20240415,068410,아코디스,50 -20231231,20240412,158430,아톤,30 -20231231,20240417,067160,아프리카티비,850 -20231231,20240418,001540,안국약품,220 -20231231,20240418,053800,안랩,1300 -20231231,,251280,안지오랩,0 -20231231,,25128N,안지오랩4우,0 -20231231,,25128P,안지오랩5우,0 -20231231,,25128Q,안지오랩6우,0 -20231231,,065660,안트로젠,0 -20231231,,001780,알루코,0 -20231231,,001785,알루코1우,0 -20231231,,001787,알루코2우,0 -20231231,20240412,260660,알리코제약,130 -20231231,,354320,알멕,0 -20231231,,361570,알비더블유,0 -20231231,20240416,131370,알서포트,10 -20231231,,140670,알에스오토메이션,0 -20231231,,096610,알에프세미,0 -20231231,20240418,218410,알에프에이치아이씨,100 -20231231,,061040,알에프텍,0 -20231231,20240416,148250,알엔투테크놀로지,30 -20231231,,347860,알체라,0 -20231231,,196170,알테오젠,0 -20231231,,19617M,알테오젠3우,0 -20231231,,19617N,알테오젠4우,0 -20231231,,123750,알톤스포츠,0 -20231231,20240418,098990,알티베이스,0 -20231231,,085810,알티캐스트,0 -20231231,20240422,314140,알피바이오,50 -20231231,,291650,압타머사이언스,0 -20231231,,29165V,압타머사이언스10우,0 -20231231,,29165K,압타머사이언스1우,0 -20231231,20240419,018250,애경산업,580 -20231231,20240412,161000,애경케미칼,250 -20231231,,390110,애니메디솔루션,0 -20231231,,39011P,애니메디솔루션 5우,0 -20231231,,39011Q,애니메디솔루션 6우,0 -20231231,,39011K,애니메디솔루션1우,0 -20231231,,39011L,애니메디솔루션2우,0 -20231231,,39011M,애니메디솔루션3우,0 -20231231,,39011N,애니메디솔루션4우,0 -20231231,,310200,애니플러스,0 -20231231,,179530,애드바이오텍,0 -20231231,,205500,액션스퀘어,0 -20231231,,052790,액토즈소프트,0 -20231231,20240411,290740,액트로,100 -20231231,,238090,앤디포스,0 -20231231,20240422,129050,앤알커뮤니케이션,0 -20231231,,129890,앱코,0 -20231231,,174900,앱클론,0 -20231231,,17490Q,앱클론6우,0 -20231231,,17490R,앱클론7우,0 -20231231,20240426,102120,어보브반도체,100 -20231231,20240418,019990,에너토크,50 -20231231,,011090,에넥스,0 -20231231,,270660,에브리봇,0 -20231231,20240416,038680,에스넷시스템,120 -20231231,,121890,에스디시스템,0 -20231231,,118000,에스메디,0 -20231231,,11800L,에스메디2우,0 -20231231,,304360,에스바이오메딕스,0 -20231231,,151910,에스비더블유생명과학,0 -20231231,,389500,에스비비테크,0 -20231231,,019550,에스비아이인베스트먼트,0 -20231231,20240419,034120,에스비에스,500 -20231231,20240416,042110,에스씨디,30 -20231231,20240415,036120,에스씨아이평가정보,50 -20231231,,065420,에스아이리소스,0 -20231231,,270210,에스알바이오텍,0 -20231231,,103230,에스앤더블류,0 -20231231,20240419,260970,에스앤디,500 -20231231,20240524,250020,에스앤씨산업,0 -20231231,20240411,101490,에스앤에스텍,150 -20231231,20240313,003570,에스앤티다이내믹스,550 -20231231,20240313,064960,에스앤티모티브,1000 -20231231,20240313,100840,에스앤티에너지,500 -20231231,20240314,036530,에스앤티홀딩스,500 -20231231,,095910,에스에너지,0 -20231231,,275630,에스에스알,0 -20231231,,419530,에스에이엠지엔터테인먼트,0 -20231231,20240412,031330,에스에이엠티,200 -20231231,20240409,060540,에스에이티,50 -20231231,,351320,에스에이티,0 -20231231,20240416,056190,에스에프에이,100 -20231231,20240426,333280,에스엔엘코리아,1125 -20231231,20240426,33328M,에스엔엘코리아3우,1125 -20231231,20240426,33328N,에스엔엘코리아4우,1125 -20231231,20240426,33328P,에스엔엘코리아5우,1125 -20231231,,080000,에스엔유프리시젼,0 -20231231,,091340,에스엔케이폴리텍,0 -20231231,20240412,005850,에스엘,900 -20231231,,258540,에스엘테라퓨틱스,0 -20231231,,010580,에스엠벡셀,0 -20231231,,299670,에스엠비나,0 -20231231,20240417,041510,에스엠엔터테인먼트,1200 -20231231,,007820,에스엠코어,0 -20231231,,109610,에스와이,0 -20231231,20240426,365330,에스와이스틸텍,50 -20231231,20240419,012750,에스원,2700 -20231231,,031860,에스유홀딩스,0 -20231231,20240412,306040,에스제이그룹,250 -20231231,20240425,123700,에스제이엠,175 -20231231,20240426,025530,에스제이엠홀딩스,225 -20231231,,217910,에스제이켐,0 -20231231,20240412,005090,에스지씨에너지,1700 -20231231,20240412,016250,에스지씨이테크건설,750 -20231231,,184230,에스지에이 솔루션즈,0 -20231231,,255220,에스지이,0 -20231231,20240426,006120,에스케이디스커버리,1200 -20231231,20240426,006125,에스케이디스커버리1우,1250 -20231231,20240425,210980,에스케이디앤디,400 -20231231,20240425,21098L,에스케이디앤디2우,622 -20231231,20240425,068400,에스케이렌터카,0 -20231231,,302440,에스케이바이오사이언스,0 -20231231,20240426,033630,에스케이브로드밴드,500 -20231231,,260870,에스케이시그넷,0 -20231231,,26087L,에스케이시그넷2우,0 -20231231,,26087M,에스케이시그넷3우,0 -20231231,,26087N,에스케이시그넷4우,0 -20231231,,361610,에스케이아이이테크놀로지,0 -20231231,,100090,에스케이오션플랜트,0 -20231231,20240412,395400,에스케이위탁관리부동산투자회사,91 -20231231,,056550,에스케이이엔에스,0 -20231231,20240409,05655K,에스케이이엔에스1우,0 -20231231,20240409,05655L,에스케이이엔에스2우,0 -20231231,20240409,05655M,에스케이이엔에스3우,0 -20231231,,457940,에스케이증권제10호기업인수목적,0 -20231231,,472230,에스케이증권제11호기업인수목적,0 -20231231,,435870,에스케이증권제8호기업인수목적,0 -20231231,,455910,에스케이증권제9호기업인수목적,0 -20231231,20240424,000660,에스케이하이닉스,300 -20231231,,096630,에스코넥,0 -20231231,20240418,069510,에스텍,500 -20231231,20240415,234300,에스트래픽,40 -20231231,20240412,039440,에스티아이,200 -20231231,20240422,098660,에스티오,110 -20231231,,052020,에스티큐브,0 -20231231,,05202L,에스티큐브 2우,0 -20231231,20240424,237690,에스티팜,500 -20231231,20240419,288620,에스퓨얼셀,50 -20231231,,443670,에스피소프트,0 -20231231,20240415,005610,에스피씨삼립,1700 -20231231,20240408,058610,에스피지,200 -20231231,,043340,에쎈테크,0 -20231231,20240403,037890,에어미디어,800 -20231231,,298690,에어부산,0 -20231231,,187660,에이디엠코리아,0 -20231231,,18766K,에이디엠코리아 1우,0 -20231231,,200710,에이디테크놀로지,0 -20231231,,203400,에이비온,0 -20231231,,195990,에이비프로바이오,0 -20231231,20240419,418900,에이스나노켐,0 -20231231,20240405,003800,에이스침대,1400 -20231231,,088800,에이스테크놀로지,0 -20231231,,08880K,에이스테크놀로지 2우,0 -20231231,,08880M,에이스테크놀로지 4우,0 -20231231,,08880L,에이스테크놀로지3우,0 -20231231,,241840,에이스토리,0 -20231231,20240419,089660,에이앤디신용정보,250 -20231231,,453860,에이에스텍,0 -20231231,,312610,에이에프더블류,0 -20231231,,015260,에이엔피,0 -20231231,20240418,172670,에이엘티,100 -20231231,20240412,396450,에이엠티,0 -20231231,,234070,에이원알폼,0 -20231231,,23407K,에이원알폼1우,0 -20231231,,140910,에이자기관리부동산투자회사,0 -20231231,20240415,095570,에이제이네트웍스,270 -20231231,,445090,에이직랜드,0 -20231231,20240426,012630,에이치디씨,300 -20231231,20240425,039570,에이치디씨랩스,450 -20231231,20240425,294870,에이치디씨현대산업개발,700 -20231231,20240409,267250,에이치디현대,1900 -20231231,20240426,267270,에이치디현대건설기계,700 -20231231,20240404,443060,에이치디현대마린솔루션,2000 -20231231,,010620,에이치디현대미포,0 -20231231,,322000,에이치디현대에너지솔루션,0 -20231231,20240404,004050,에이치디현대오일뱅크,1059 -20231231,20240424,042670,에이치디현대인프라코어,110 -20231231,20240404,267260,에이치디현대일렉트릭,1000 -20231231,,329180,에이치디현대중공업,0 -20231231,20240429,297890,에이치비솔루션,30 -20231231,,440290,에이치비인베스트먼트,0 -20231231,20240425,078150,에이치비테크놀러지,20 -20231231,,072990,에이치시티,0 -20231231,20240409,036640,에이치알에스,200 -20231231,20240419,035000,에이치에스애드,450 -20231231,20240409,044990,에이치엔에스하이텍,200 -20231231,,014790,에이치엘디앤아이한라,0 -20231231,,01479K,에이치엘디앤아이한라1우,0 -20231231,20240425,204320,에이치엘만도,600 -20231231,,003580,에이치엘비글로벌,0 -20231231,,278650,에이치엘비바이오스텝,0 -20231231,,343090,에이치엘비사이언스,0 -20231231,,067630,에이치엘비생명과학,0 -20231231,,024850,에이치엘비이노베이션,0 -20231231,,047920,에이치엘비제약,0 -20231231,,115450,에이치엘비테라퓨틱스,0 -20231231,,239610,에이치엘사이언스,0 -20231231,20240404,386150,에이치엘제일호위탁관리부동산투자회사,0 -20231231,20240404,38615K,에이치엘제일호위탁관리부동산투자회사1우,0 -20231231,20240404,38615L,에이치엘제일호위탁관리부동산투자회사2우,0 -20231231,,462020,에이치엠씨아이비제6호기업인수목적,0 -20231231,20240426,011200,에이치엠엠,700 -20231231,,097230,에이치제이중공업,0 -20231231,,044780,에이치케이,0 -20231231,20240426,195940,에이치케이이노엔,350 -20231231,20240425,403870,에이치피에스피,150 -20231231,20240422,357230,에이치피오,100 -20231231,,071670,에이테크솔루션,0 -20231231,20240412,045660,에이텍,200 -20231231,20240405,224110,에이텍모빌리티,200 -20231231,20240408,021080,에이티넘인베스트먼트,120 -20231231,20240419,207490,에이펙스인텍,30 -20231231,20240416,262260,에이프로,200 -20231231,,003060,에이프로젠바이오로직스,0 -20231231,,397030,에이프릴바이오,0 -20231231,20240411,244920,에이플러스에셋어드바이저,200 -20231231,20240422,265520,에이피시스템,270 -20231231,,054620,에이피에스,0 -20231231,20240418,211270,에이피위성,70 -20231231,,109960,에이피헬스케어,0 -20231231,20240425,230240,에치에프알,220 -20231231,,230360,에코마케팅,0 -20231231,,038870,에코바이오홀딩스,0 -20231231,,097780,에코볼트,0 -20231231,20240412,448280,에코아이,500 -20231231,,101360,에코앤드림,0 -20231231,20240418,102420,에코엘이디,30 -20231231,,128540,에코캡,0 -20231231,,086520,에코프로,0 -20231231,,450080,에코프로머티리얼즈,0 -20231231,,247540,에코프로비엠,0 -20231231,20240422,383310,에코프로에이치엔,600 -20231231,20240426,038110,에코플라스틱,60 -20231231,,073540,에프알텍,0 -20231231,20240409,064850,에프앤가이드,180 -20231231,20240422,383220,에프앤에프(신설),1700 -20231231,20240423,007700,에프앤에프홀딩스,400 -20231231,,214270,에프에스엔,0 -20231231,20240426,036810,에프에스티,50 -20231231,,173940,에프엔씨엔터테인먼트,0 -20231231,20240416,083500,에프엔에스테크,80 -20231231,,446440,에피바이오텍,0 -20231231,,44644K,에피바이오텍 1우,0 -20231231,,44644L,에피바이오텍 2우,0 -20231231,,44644M,에피바이오텍 3우,0 -20231231,,44644N,에피바이오텍 4우,0 -20231231,,054940,엑사이엔씨,0 -20231231,,950130,엑세스바이오 KDR,0 -20231231,20240605,265770,엑센테크닉,0 -20231231,,356680,엑스게이트,0 -20231231,,070300,엑스큐어,0 -20231231,,317770,엑스페릭스,0 -20231231,,317870,엔바이오니아,0 -20231231,,067570,엔브이에이치코리아,150 -20231231,20240412,333620,엔시스,40 -20231231,,101400,엔시트론,0 -20231231,20240426,036570,엔씨소프트,3130 -20231231,20240405,008260,엔아이스틸,125 -20231231,20240402,138250,엔에스쇼핑,0 -20231231,,224760,엔에스컴퍼니,0 -20231231,,391060,엔에이치기업인수목적20호,0 -20231231,,422040,엔에이치기업인수목적23호,0 -20231231,,437780,엔에이치기업인수목적24호,0 -20231231,,438580,엔에이치기업인수목적25호,0 -20231231,,439410,엔에이치기업인수목적26호,0 -20231231,,440820,엔에이치기업인수목적27호,0 -20231231,,451700,엔에이치기업인수목적29호,0 -20231231,,466910,엔에이치기업인수목적30호,0 -20231231,20240426,181710,엔에이치엔,500 -20231231,20240419,060250,엔에이치엔케이씨피,200 -20231231,20240328,400760,엔에이치올원위탁관리부동산투자회사,150 -20231231,20240422,265740,엔에프씨,40 -20231231,,053290,엔이능률,0 -20231231,,354200,엔젠바이오,0 -20231231,,419080,엔젯,0 -20231231,,093510,엔지브이아이보통주,0 -20231231,,208860,엔지스테크널러지,0 -20231231,,183490,엔지켐생명과학,0 -20231231,,085310,엔케이,0 -20231231,,348370,엔켐,0 -20231231,,34837V,엔켐 10우,0 -20231231,,34837T,엔켐 9우,0 -20231231,,058450,엔터파트너즈,0 -20231231,,069410,엔텔스,0 -20231231,,227950,엔투텍,0 -20231231,,291230,엔피,0 -20231231,,198080,엔피디,0 -20231231,20240404,004250,엔피씨,100 -20231231,20240404,004255,엔피씨1우,105 -20231231,20240423,048830,엔피케이,30 -20231231,,096870,엘디티,0 -20231231,,276240,엘리비젼,0 -20231231,,376190,엘비루셈,0 -20231231,20240412,309960,엘비인베스트먼트,200 -20231231,20240419,079550,엘아이지넥스원,1950 -20231231,20240412,290650,엘앤씨바이오,100 -20231231,20240409,060370,엘에스마린솔루션,160 -20231231,20240409,229640,엘에스에코에너지,200 -20231231,20240411,010120,엘에스일렉트릭,2800 -20231231,20240411,104230,엘에스전선,1000 -20231231,,311060,엘에이티,0 -20231231,20240411,011910,엘엑스판토스,19200 -20231231,20240417,383800,엘엑스홀딩스,270 -20231231,20240417,38380K,엘엑스홀딩스1우,280 -20231231,20240426,073110,엘엠에스,200 -20231231,20240419,064400,엘지씨엔에스,1520 -20231231,20240419,037560,엘지헬로비전,120 -20231231,,037950,엘컴텍,0 -20231231,,170920,엘티씨,0 -20231231,20240408,058630,엠게임,150 -20231231,,086960,엠디에스테크,0 -20231231,,058970,엠로,0 -20231231,,019590,엠벤처투자,0 -20231231,20240426,087690,엠쓰리모바일,0 -20231231,20240415,097520,엠씨넥스,600 -20231231,20240426,373170,엠아이큐브솔루션,200 -20231231,20240415,179290,엠아이텍,80 -20231231,20240426,009780,엠에스씨,100 -20231231,20240429,123040,엠에스오토텍,75 -20231231,,323230,엠에프엠코리아,0 -20231231,20240415,046290,엠캐피탈,0 -20231231,20240409,033160,엠케이전자,100 -20231231,20240415,347890,엠투아이코퍼레이션,220 -20231231,,033310,엠투엔,0 -20231231,,03331K,엠투엔1우,0 -20231231,20240411,403070,엠티오메가,0 -20231231,20240419,259630,엠플러스,100 -20231231,20240412,140720,여의시스템,100 -20231231,20240424,054000,연합인포맥스,0 -20231231,20240419,060850,영림원소프트랩,80 -20231231,20240417,014440,영보화학,50 -20231231,,143540,영우디에스피,0 -20231231,20240417,111770,영원무역,1300 -20231231,20240412,337730,영일프레시젼,16600 -20231231,20240329,000670,영풍,10000 -20231231,20240403,036560,영풍정밀,600 -20231231,20240417,006740,영풍제지,40 -20231231,20240412,012280,영화금속,20 -20231231,20240419,265560,영화테크,80 -20231231,,012160,영흥,0 -20231231,,036000,예림당,0 -20231231,,250930,예선테크,0 -20231231,20240416,053280,예스이십사,200 -20231231,20240405,015360,예스코홀딩스,2750 -20231231,20240425,045060,오공,50 -20231231,20240419,080520,오디텍,100 -20231231,20240415,007310,오뚜기,9000 -20231231,20240425,039830,오로라월드,150 -20231231,,322310,오로스테크놀로지,0 -20231231,20240422,014940,오리엔탈정공,50 -20231231,,065500,오리엔트정공,0 -20231231,20240416,271560,오리온,1250 -20231231,20240417,001800,오리온홀딩스,750 -20231231,,417860,오브젠,0 -20231231,,352910,오비고,0 -20231231,,053980,오상자이엘,0 -20231231,20240415,036220,오상헬스케어,2000 -20231231,,052420,오성첨단소재,0 -20231231,20240425,241790,오션브릿지,200 -20231231,,039200,오스코텍,0 -20231231,,03920M,오스코텍 4우,0 -20231231,,226400,오스테오닉,0 -20231231,20240415,031510,오스템,50 -20231231,20240404,138080,오이솔루션,100 -20231231,,080580,오킨스전자,0 -20231231,20240426,067170,오텍,100 -20231231,,353590,오토앤,0 -20231231,20240419,173130,오파스넷,100 -20231231,,440320,오픈놀,0 -20231231,,049480,오픈베이스,25 -20231231,,394280,오픈엣지테크놀로지,0 -20231231,,309930,오하임앤컴퍼니,0 -20231231,,244460,올리패스,0 -20231231,,24446K,올리패스 1우,0 -20231231,,24446L,올리패스 2우,0 -20231231,,24446M,올리패스 3우,0 -20231231,,226950,올릭스,0 -20231231,,22695K,올릭스 1우,0 -20231231,,22695L,올릭스 2우,0 -20231231,,057540,옴니시스템,0 -20231231,20240419,131030,옵투스제약,100 -20231231,,082210,옵트론텍,0 -20231231,,08221K,옵트론텍2우,0 -20231231,,08221L,옵트론텍3우,0 -20231231,20240425,109080,옵티시스,100 -20231231,,380540,옵티코어,0 -20231231,,153710,옵티팜,0 -20231231,,321820,와이더플래닛,0 -20231231,,432430,와이랩,0 -20231231,,338840,와이바이오로직스,0 -20231231,,33884W,와이바이오로직스 11우,0 -20231231,,33884X,와이바이오로직스 12우,0 -20231231,20240426,057030,와이비엠넷,150 -20231231,,112290,와이씨켐,0 -20231231,,232140,와이아이케이,0 -20231231,20240412,065530,와이어블,50 -20231231,20240415,067900,와이엔텍,50 -20231231,,007530,와이엠,0 -20231231,20240415,155650,와이엠씨,200 -20231231,20240415,273640,와이엠텍,180 -20231231,,251370,와이엠티,0 -20231231,,066430,와이오엠,0 -20231231,,193250,와이제이엠게임즈,0 -20231231,20240426,096250,와이즈넛,0 -20231231,20240419,019210,와이지-원,280 -20231231,20240419,01921S,와이지-원8우,280 -20231231,20240419,01921T,와이지-원9우,280 -20231231,,011690,와이투솔루션,0 -20231231,,040300,와이티엔,0 -20231231,,332570,와이팜,0 -20231231,20240408,079000,와토스코리아,200 -20231231,,070960,용평리조트,0 -20231231,,403490,우듬지팜,0 -20231231,,032820,우리기술,0 -20231231,,115440,우리넷,0 -20231231,,434780,우리로지스위탁관리부동산투자회사,0 -20231231,20240419,43478K,우리로지스위탁관리부동산투자회사1우,0 -20231231,,082850,우리바이오,0 -20231231,20240422,215360,우리산업,165 -20231231,20240422,072470,우리산업홀딩스,50 -20231231,20240417,073560,우리손에프앤지농업회사법인,25 -20231231,,037400,우리엔터프라이즈,0 -20231231,20240412,083780,우리홈쇼핑,0 -20231231,20240409,101170,우림피티에스,50 -20231231,20240416,006980,우성,300 -20231231,20240411,068560,우신공업,1240 -20231231,20240426,017370,우신시스템,50 -20231231,,103840,우양,0 -20231231,20240422,065680,우주일렉트로닉스,150 -20231231,20240412,105840,우진,150 -20231231,,010400,우진아이엔에스,0 -20231231,20240411,457550,우진엔텍,330 -20231231,,016880,웅진,0 -20231231,20240411,396470,워트,50 -20231231,20240426,005820,원림,500 -20231231,20240412,307280,원바이오젠,20 -20231231,,032940,원익,0 -20231231,20240423,104830,원익머트리얼즈,150 -20231231,,240810,원익아이피에스,0 -20231231,,014190,원익큐브,0 -20231231,20240425,074600,원익큐엔씨,57 -20231231,,217820,원익피앤이,0 -20231231,,030530,원익홀딩스,0 -20231231,20240408,012620,원일특강,220 -20231231,20240426,382840,원준,200 -20231231,20240426,336570,원텍,50 -20231231,,376980,원티드랩,0 -20231231,,122830,원포유,0 -20231231,20240412,008370,원풍,220 -20231231,,008290,원풍물산,0 -20231231,20240426,101160,월덱스,60 -20231231,,336060,웨이버스,0 -20231231,,095270,웨이브일렉트로닉스,0 -20231231,,065950,웰크론,0 -20231231,,076080,웰크론한텍,0 -20231231,,043590,웰킵스하이텍,0 -20231231,,196700,웹스,0 -20231231,20240416,069080,웹젠,300 -20231231,20240424,053580,웹케시,100 -20231231,20240416,044340,위닉스,300 -20231231,20240426,330350,위더스제약,100 -20231231,20240325,364360,위드네트웍스,0 -20231231,,36436K,위드네트웍스1우,0 -20231231,,348350,위드텍,0 -20231231,,101730,위메이드맥스,0 -20231231,,123420,위메이드플레이,0 -20231231,20240425,065370,위세아이텍,150 -20231231,20240419,024070,위스컴,50 -20231231,20240408,042910,위즈네트,2500 -20231231,,038620,위즈코프,0 -20231231,,299900,위지윅스튜디오,0 -20231231,,036090,위지트,0 -20231231,20240405,136540,윈스,500 -20231231,,320000,윈텍,0 -20231231,20240417,192390,윈하이텍,60 -20231231,,313760,윌링스,0 -20231231,,008600,윌비스,0 -20231231,,335870,윙스풋,0 -20231231,20240419,014830,유니드,1600 -20231231,,446070,유니드비티플러스,0 -20231231,20240405,036200,유니셈,80 -20231231,,018000,유니슨,0 -20231231,20240417,000910,유니온,125 -20231231,20240327,203450,유니온커뮤니티,70 -20231231,,011330,유니켐,0 -20231231,20240426,077500,유니퀘스트,200 -20231231,20240405,011320,유니크,45 -20231231,20240416,086390,유니테스트,150 -20231231,,241690,유니테크노,0 -20231231,20240418,142210,유니트론텍,100 -20231231,,121060,유니포인트,0 -20231231,20240416,048430,유라테크,190 -20231231,20240531,388690,유런테크,244 -20231231,,206650,유바이오로직스,0 -20231231,20240418,089850,유비벨록스,280 -20231231,20240422,032620,유비케어,60 -20231231,20240412,264450,유비쿼스,510 -20231231,20240412,078070,유비쿼스홀딩스,250 -20231231,20240411,002920,유성기업,60 -20231231,,024800,유성티엔에스,0 -20231231,20240425,000700,유수홀딩스,350 -20231231,20240426,054930,유신,750 -20231231,,069330,유아이디,0 -20231231,,435380,유안타제10호기업인수목적,0 -20231231,,444920,유안타제11호기업인수목적,0 -20231231,,446150,유안타제12호기업인수목적,0 -20231231,,449020,유안타제13호기업인수목적,0 -20231231,,450940,유안타제14호기업인수목적,0 -20231231,,473050,유안타제15호기업인수목적,0 -20231231,,430700,유안타제9호기업인수목적,0 -20231231,20240426,003470,유안타증권,180 -20231231,20240426,003475,유안타증권1우,230 -20231231,20240424,263770,유에스티,100 -20231231,,072130,유엔젤,0 -20231231,,388720,유일로보틱스,0 -20231231,,340930,유일에너테크,0 -20231231,20240419,023410,유진기업,170 -20231231,,468760,유진기업인수목적10호,0 -20231231,,388800,유진기업인수목적7호,0 -20231231,,413630,유진기업인수목적8호,0 -20231231,,442130,유진기업인수목적9호,0 -20231231,,056080,유진로봇,0 -20231231,20240415,084370,유진테크,200 -20231231,,240600,유진테크놀로지,0 -20231231,20240412,221800,유투바이오,30 -20231231,20240329,000100,유한양행,450 -20231231,20240329,000105,유한양행1우,460 -20231231,20240409,003460,유화증권,120 -20231231,20240409,003465,유화증권1우,130 -20231231,,191410,육일씨엔에쓰,0 -20231231,,19141K,육일씨엔에쓰1우,0 -20231231,20240426,372170,윤성에프앤씨,150 -20231231,,146060,율촌,0 -20231231,20240424,008730,율촌화학,250 -20231231,,072770,율호,0 -20231231,20240423,008250,이건산업,100 -20231231,20240423,039020,이건홀딩스,50 -20231231,20240423,039025,이건홀딩스1우,0 -20231231,20240419,025820,이구산업,50 -20231231,20240412,067920,이글루코퍼레이션,180 -20231231,20240417,044960,이글벳,40 -20231231,20240415,296640,이노룰스,60 -20231231,,302430,이노메트리,0 -20231231,,274400,이노시뮬레이션,0 -20231231,,056090,이노시스,0 -20231231,20240422,073490,이노와이어리스,350 -20231231,20240412,344860,이노진,30 -20231231,,088390,이녹스,0 -20231231,20240419,272290,이녹스첨단소재,250 -20231231,20240409,208760,이니스프리,28200 -20231231,20240423,053350,이니텍,20 -20231231,20240422,452400,이닉스,416 -20231231,20240415,041520,이라이콤,300 -20231231,20240424,264850,이랜시스,50 -20231231,20240412,054210,이랜텍,80 -20231231,20240412,05421K,이랜텍1우,80 -20231231,,164060,이루다,0 -20231231,,065440,이루온,0 -20231231,20240329,088260,이리츠코크렙기업구조조정부동산투자회사,204 -20231231,,115610,이미지스테크놀로지,0 -20231231,,131400,이브이첨단소재,0 -20231231,,351330,이삭엔지니어링,0 -20231231,20240416,080010,이상네트웍스,100 -20231231,,379390,이성씨엔아이,0 -20231231,,37939K,이성씨엔아이 1우,0 -20231231,,457190,이수스페셜티케미컬,0 -20231231,,086890,이수앱지스,0 -20231231,20240418,007660,이수페타시스,100 -20231231,,005950,이수화학,0 -20231231,,047560,이스트소프트,0 -20231231,,093230,이아이디,0 -20231231,20240409,386810,이알지서비스,1100 -20231231,,341310,이앤에치,0 -20231231,,418620,이에이트,0 -20231231,,41862K,이에이트 1우,0 -20231231,20240419,102710,이엔에프테크놀로지,50 -20231231,,074610,이엔플러스,0 -20231231,20240425,063760,이엘피,50 -20231231,20240418,123570,이엠넷,50 -20231231,,278990,이엠비,0 -20231231,,095190,이엠코리아,0 -20231231,20240416,091120,이엠텍,100 -20231231,,232530,이엠티,0 -20231231,20240423,102460,이연제약,150 -20231231,20240415,039030,이오테크닉스,450 -20231231,,245620,이원다이애그노믹스,0 -20231231,,088290,이원컴포텍,0 -20231231,,084680,이월드,0 -20231231,,181340,이즈미디어,0 -20231231,20240415,232150,이지메디컴,0 -20231231,20240416,353810,이지바이오,100 -20231231,20240405,350520,이지스레지던스위탁관리부동산투자회사,133 -20231231,20240412,139150,이지스자산운용,0 -20231231,20240412,377330,이지트로닉스,120 -20231231,20240419,035810,이지홀딩스,120 -20231231,,160600,이큐셀,0 -20231231,20240419,092130,이크레더블,780 -20231231,,096040,이트론,0 -20231231,,134060,이퓨쳐,0 -20231231,,001840,이화공영,0 -20231231,,024810,이화전기공업,0 -20231231,,014990,인디에프,0 -20231231,20240412,041830,인바디,350 -20231231,,352940,인바이오,0 -20231231,,216400,인바이츠바이오코아,0 -20231231,,21640L,인바이츠바이오코아2우,0 -20231231,,079950,인베니아,0 -20231231,,389470,인벤티지랩,0 -20231231,,38947K,인벤티지랩 1우,0 -20231231,20240405,277410,인산가,50 -20231231,,060150,인선ENT,0 -20231231,,033230,인성정보,0 -20231231,,450520,인스웨이브시스템즈,0 -20231231,,006490,인스코비,0 -20231231,20240426,037330,인지디스플레이,50 -20231231,20240426,100030,인지소프트,728 -20231231,20240222,417460,인지이솔루션,350 -20231231,20240426,023800,인지컨트롤스,200 -20231231,20240327,034590,인천도시가스,1250 -20231231,20240418,211050,인카금융서비스,350 -20231231,,083640,인콘,0 -20231231,20240423,216050,인크로스,321 -20231231,20240426,049070,인탑스,185 -20231231,20240419,119610,인터로조,600 -20231231,20240411,129260,인터지스,100 -20231231,20240412,189300,인텔리안테크놀로지스,100 -20231231,,150840,인트로메딕,0 -20231231,20240416,048530,인트론바이오테크놀로지,100 -20231231,20240426,023810,인팩,180 -20231231,,175140,인포마크,0 -20231231,20240402,115310,인포바인,900 -20231231,20240416,039290,인포뱅크,50 -20231231,,071200,인피니트헬스케어,0 -20231231,20240401,101930,인화정공,2250 -20231231,20240419,000230,일동홀딩스,100 -20231231,,013360,일성건설,0 -20231231,,013365,일성건설1우,0 -20231231,20240411,003120,일성아이에스,1500 -20231231,,333430,일승,0 -20231231,20240412,068330,일신바이오베이스,7 -20231231,20240405,003200,일신방직,100 -20231231,,007110,일신석재,0 -20231231,20240419,007570,일양약품,150 -20231231,20240419,007575,일양약품1우,175 -20231231,,178780,일월지엠엘,0 -20231231,,008500,일정실업,0 -20231231,20240408,019540,일지테크,100 -20231231,20240417,081000,일진다이아몬드,300 -20231231,,020760,일진디스플레이,0 -20231231,20240418,103590,일진전기,220 -20231231,20240412,094820,일진파워,330 -20231231,20240419,015860,일진홀딩스,150 -20231231,20240411,226320,잇츠한불,150 -20231231,20240423,950140,잉글우드랩 KDR,0 -20231231,,049550,잉크테크,0 -20231231,,389020,자람테크놀로지,0 -20231231,,254120,자비스,0 -20231231,,043910,자연과환경,0 -20231231,,234920,자이글,0 -20231231,20240423,317400,자이에스앤디(주),150 -20231231,20240423,31740K,자이에스앤디1우,150 -20231231,,033240,자화전자,0 -20231231,,049630,재영솔루텍,0 -20231231,,417840,저스템,0 -20231231,,000950,전방,0 -20231231,,110020,전진바이오팜,0 -20231231,20240416,208140,정다운,300 -20231231,20240418,040420,정상제이엘에스,530 -20231231,20240412,060080,제4기한국,0 -20231231,,217190,제너셈,0 -20231231,20240423,134450,제네웰,500 -20231231,,095700,제넥신,0 -20231231,20240419,361390,제노코,50 -20231231,,187420,제노포커스,0 -20231231,,18742P,제노포커스5우,0 -20231231,,123330,제닉,0 -20231231,20240412,159580,제로투세븐,50 -20231231,20240412,147830,제룡산업,200 -20231231,20240412,033100,제룡전기,500 -20231231,20240417,079370,제우스,100 -20231231,20240426,234080,제이더블유생명과학,500 -20231231,20240426,001060,제이더블유중외제약,400 -20231231,20240426,001065,제이더블유중외제약1우,425 -20231231,20240426,001067,제이더블유중외제약2우,400 -20231231,20240426,00106N,제이더블유중외제약6우,400 -20231231,20240426,096760,제이더블유홀딩스,105 -20231231,20240409,054950,제이브이엠,400 -20231231,,023440,제이스코홀딩스,0 -20231231,20240418,090470,제이스텍,50 -20231231,,287410,제이시스메디칼,0 -20231231,20240416,137950,제이씨케미칼,150 -20231231,,033320,제이씨현시스템,0 -20231231,20240412,348950,제이알글로벌위탁관리부동산투자회사,195 -20231231,20240409,194370,제이에스코퍼레이션,550 -20231231,20240423,026040,제이에스티나,100 -20231231,,452160,제이엔비,0 -20231231,,126880,제이엔케이히터,0 -20231231,,322510,제이엘케이,0 -20231231,,254160,제이엠멀티,0 -20231231,,033050,제이엠아이,0 -20231231,20240423,094970,제이엠티,50 -20231231,,418550,제이오,0 -20231231,20240425,078830,제이오텍,0 -20231231,20240425,035900,제이와이피엔터테인먼트,574 -20231231,,025620,제이준코스메틱,0 -20231231,20240405,084890,제이타워,750 -20231231,,420570,제이투케이바이오,0 -20231231,,089790,제이티,0 -20231231,20240419,030000,제일기획,1110 -20231231,,052670,제일바이오,0 -20231231,20240418,271980,제일약품(신설),50 -20231231,20240412,001560,제일연마공업,300 -20231231,20240426,199820,제일전기공업,200 -20231231,20240419,038010,제일테크노스,180 -20231231,20240418,002620,제일파마홀딩스,50 -20231231,,080220,제주반도체,0 -20231231,,089590,제주항공,0 -20231231,,216080,제테마,0 -20231231,,082270,젬백스&카엘,0 -20231231,,064800,젬백스링크,0 -20231231,20240409,004910,조광페인트,200 -20231231,,001550,조비,0 -20231231,,462520,조선내화,0 -20231231,20240422,120030,조선선재,500 -20231231,,034940,조아제약,0 -20231231,,018470,조일알미늄,0 -20231231,20240419,002600,조흥,6000 -20231231,20240405,185750,종근당,1100 -20231231,,063160,종근당바이오,0 -20231231,20240405,001630,종근당홀딩스,1400 -20231231,,033340,좋은사람들,0 -20231231,20240412,036930,주성엔지니어링,50 -20231231,,109070,주성코퍼레이션,0 -20231231,,109075,주성코퍼레이션1우,0 -20231231,20240402,082650,준인터,0 -20231231,,239340,줌인터넷,0 -20231231,20240419,072020,중앙백신연구소,150 -20231231,20240419,000440,중앙에너비스,320 -20231231,,051980,중앙첨단소재,0 -20231231,,228760,지노믹트리,0 -20231231,,314130,지놈앤컴퍼니,0 -20231231,,31413W,지놈앤컴퍼니 11우,0 -20231231,,31413X,지놈앤컴퍼니 12우,0 -20231231,20240418,013890,지누스,90 -20231231,,389030,지니너스,0 -20231231,,043610,지니뮤직,0 -20231231,20240411,263860,지니언스,200 -20231231,,303030,지니틱스,0 -20231231,,036180,지더블유바이텍,0 -20231231,,208350,지란지교시큐리티,500 -20231231,20240416,138290,지성이씨에스,0 -20231231,,289860,지슨,0 -20231231,20240411,144510,지씨셀,100 -20231231,,358570,지아이이노베이션,0 -20231231,20240329,382480,지아이텍,36 -20231231,20240329,38248K,지아이텍 1우,45 -20231231,,382800,지앤비에스 에코,0 -20231231,,299480,지앤이헬스케어,0 -20231231,,051160,지어소프트,0 -20231231,20240405,078930,지에스,2500 -20231231,20240405,078935,지에스1우,2550 -20231231,,006360,지에스건설,0 -20231231,20240404,001250,지에스글로벌,25 -20231231,20240403,007070,지에스리테일,500 -20231231,20240424,053050,지에스이,20 -20231231,,130500,지에이치신소재,0 -20231231,20240412,119850,지엔씨에너지,70 -20231231,,065060,지엔코,0 -20231231,,204840,지엘팜텍,0 -20231231,20240419,013870,지엠비코리아,150 -20231231,,270520,지오릿에너지,0 -20231231,,311320,지오엘리먼트,0 -20231231,20240429,088790,진도,50 -20231231,20240429,088795,진도1우,60 -20231231,20240405,018120,진로발효,650 -20231231,,109820,진매트릭스,0 -20231231,,086060,진바이오텍,0 -20231231,20240415,036890,진성티이씨,200 -20231231,,363250,진시스템,0 -20231231,20240408,003780,진양산업,200 -20231231,20240418,007370,진양제약,150 -20231231,20240408,010640,진양폴리우레탄,200 -20231231,20240409,100250,진양홀딩스,150 -20231231,,272450,진에어,0 -20231231,,285800,진영,0 -20231231,,011000,진원생명과학,0 -20231231,,25003K,진코스텍1우선주,0 -20231231,,25003L,진코스텍2우선주,0 -20231231,,25003M,진코스텍3우,0 -20231231,,233990,질경이,0 -20231231,,085660,차바이오텍,0 -20231231,,261780,차백신연구소,0 -20231231,,009310,참엔지니어링,0 -20231231,,094850,참좋은여행,0 -20231231,20240416,004650,창해에탄올,600 -20231231,,278280,천보,0 -20231231,,362320,청담글로벌,0 -20231231,,012600,청호ICT,0 -20231231,,066360,체리부로,0 -20231231,,033250,체시스,0 -20231231,,047820,초록뱀미디어,0 -20231231,20240531,219000,충남섬유,0 -20231231,,094360,칩스앤미디어,0 -20231231,,09436L,칩스앤미디어 2우,0 -20231231,20240423,016920,카스,10 -20231231,,284620,카이노스메드,0 -20231231,,446600,카이바이오텍,0 -20231231,,44660K,카이바이오텍1우,0 -20231231,,44660L,카이바이오텍2우,0 -20231231,,293490,카카오게임즈,0 -20231231,20240416,323410,카카오뱅크,150 -20231231,,377300,카카오페이,0 -20231231,,042000,카페24,0 -20231231,,006380,카프로,0 -20231231,,317530,캐리소프트,0 -20231231,,050110,캠시스,0 -20231231,20240405,337710,캠시스글로벌,0 -20231231,20240425,296490,캠퍼스멘토,100 -20231231,20240423,452300,캡스톤파트너스,42 -20231231,,451760,컨텍,0 -20231231,20240412,078340,컴투스,1300 -20231231,,063080,컴투스홀딩스,0 -20231231,,307930,컴퍼니케이파트너스,0 -20231231,,079190,케스피온,0 -20231231,,263700,케어랩스,0 -20231231,20240419,214370,케어젠,400 -20231231,20240416,221980,케이디켐,500 -20231231,,001620,케이비아이동국실업,0 -20231231,,024840,케이비아이메탈,0 -20231231,20240426,100530,케이비에스엔,0 -20231231,,424140,케이비제21호기업인수목적,0 -20231231,,436530,케이비제22호기업인수목적,0 -20231231,,455250,케이비제25호기업인수목적,0 -20231231,,458320,케이비제26호기업인수목적,0 -20231231,,464680,케이비제27호기업인수목적,0 -20231231,20240412,318000,케이비지,100 -20231231,20240402,192250,케이사인,15 -20231231,20240415,029460,케이씨,260 -20231231,20240426,009440,케이씨그린홀딩스,50 -20231231,,112190,케이씨산업,0 -20231231,20240426,021320,케이씨씨건설,130 -20231231,20240411,307090,케이씨씨오토그룹,0 -20231231,20240411,30709K,케이씨씨오토그룹1우,0 -20231231,20240411,039880,케이씨씨정보통신,0 -20231231,20240411,039885,케이씨씨정보통신1우,0 -20231231,20240411,144920,케이씨씨홀딩스,0 -20231231,20240411,144925,케이씨씨홀딩스1우,0 -20231231,20240405,036670,케이씨아이,250 -20231231,20240416,115500,케이씨에스,180 -20231231,20240425,101430,케이씨이노베이션,80 -20231231,,119650,케이씨코트렐,0 -20231231,20240415,281820,케이씨텍,180 -20231231,20240416,089150,케이씨티,60 -20231231,20240415,009070,케이씨티시,70 -20231231,20240412,025880,케이씨피드,75 -20231231,20240322,053900,케이아이디비채권중개,250 -20231231,,015590,케이아이비플러그에너지,0 -20231231,20240412,093320,케이아이엔엑스,600 -20231231,,093640,케이알엠,0 -20231231,20240412,049500,케이알투자증권,0 -20231231,20240417,044450,케이에스에스해운,350 -20231231,20240405,073010,케이에스피,10 -20231231,,226360,케이에이치건설,0 -20231231,,111870,케이에이치전자,0 -20231231,,033180,케이에이치필룩스,0 -20231231,,122450,케이엑스이노베이션,200 -20231231,,052900,케이엑스하이텍,0 -20231231,,105330,케이엔더블유,0 -20231231,20240415,053080,케이엔솔,300 -20231231,,432470,케이엔에스,0 -20231231,20240419,058400,케이엔엔,20 -20231231,,272110,케이엔제이보통주,0 -20231231,20240429,039420,케이엘넷,80 -20231231,20240426,083550,케이엠,30 -20231231,,225430,케이엠제약,0 -20231231,,435230,케이원제19호위탁관리부동산투자회사,0 -20231231,20240329,43523K,케이원제19호위탁관리부동산투자회사1우,0 -20231231,20240329,43523L,케이원제19호위탁관리부동산투자회사2우,0 -20231231,,068100,케이웨더,0 -20231231,20240426,092220,케이이씨,20 -20231231,20240419,046440,케이지모빌리언스,220 -20231231,20240426,016380,케이지스틸,200 -20231231,20240426,016385,케이지스틸1우,250 -20231231,20240419,035600,케이지이니시스,420 -20231231,20240426,151860,케이지이티에스,120 -20231231,,001390,케이지케미칼,120 -20231231,20240425,381970,케이카,190 -20231231,20240416,145270,케이탑자기관리부동산투자회사,95 -20231231,20240426,030200,케이티,1960 -20231231,20240426,105910,케이티디에스,0 -20231231,20240426,105915,케이티디에스1우,0 -20231231,20240426,053210,케이티스카이라이프,350 -20231231,20240425,058850,케이티씨에스,100 -20231231,20240426,058860,케이티아이에스,120 -20231231,,036030,케이티알파,0 -20231231,,033780,케이티앤지,4000 -20231231,20240415,064820,케이프,300 -20231231,20240416,104790,케이프투자증권,200 -20231231,,256940,케이피에스,0 -20231231,,042040,케이피엠테크,0 -20231231,20240408,253950,케이피티,0 -20231231,,258610,케일럼,0 -20231231,,25861M,케일럼3우,0 -20231231,,274090,켄코아에어로스페이스,0 -20231231,,402420,켈스,0 -20231231,,40242Q,켈스 6우,0 -20231231,,40242K,켈스1우,0 -20231231,,40242L,켈스2우,0 -20231231,,40242M,켈스3우,0 -20231231,,40242N,켈스4우,0 -20231231,,40242P,켈스5우,0 -20231231,20240419,089010,켐트로닉스,100 -20231231,20240419,08901P,켐트로닉스 5우,208.96 -20231231,,220260,켐트로스,0 -20231231,20240409,052400,코나아이,500 -20231231,,391710,코닉오토메이션,0 -20231231,,047770,코데즈컴바인,0 -20231231,,080530,코디,0 -20231231,20240329,369550,코레이트타워위탁관리부동산투자회사,0 -20231231,20240329,36955K,코레이트타워위탁관리부동산투자회사1우,0 -20231231,20240329,36955L,코레이트타워위탁관리부동산투자회사2우,0 -20231231,,104540,코렌텍,0 -20231231,,10454K,코렌텍3우,0 -20231231,,027050,코리아나화장품,0 -20231231,,007810,코리아써키트,0 -20231231,,007815,코리아써키트1우,0 -20231231,,00781K,코리아써키트2우,0 -20231231,20240426,123410,코리아에프티,120 -20231231,,036690,코맥스,0 -20231231,20240412,049430,코메론,250 -20231231,20240416,183300,코미코,400 -20231231,,089890,코세스,0 -20231231,,009730,코센,0 -20231231,,189350,코셋,0 -20231231,,082660,코스나인,0 -20231231,20240415,192820,코스맥스,500 -20231231,20240415,044820,코스맥스비티아이,350 -20231231,,222040,코스맥스엔비티,0 -20231231,,241710,코스메카코리아,0 -20231231,,005070,코스모신소재,0 -20231231,,005420,코스모화학,0 -20231231,,355150,코스텍시스,0 -20231231,20240422,094930,코스텔,0 -20231231,,071950,코아스,0 -20231231,,045970,코아시아,0 -20231231,,196450,코아시아씨엠,0 -20231231,,384470,코어라인소프트,0 -20231231,20240416,099620,코엔스,0 -20231231,20240409,029960,코엔텍,500 -20231231,20240405,002020,코오롱,550 -20231231,20240405,002025,코오롱1우,600 -20231231,20240412,003070,코오롱글로벌,300 -20231231,20240412,003075,코오롱글로벌1우,350 -20231231,20240424,450140,코오롱모빌리티그룹,40 -20231231,20240424,45014K,코오롱모빌리티그룹1우,45 -20231231,,102940,코오롱생명과학,0 -20231231,20240425,120110,코오롱인더스트리,1300 -20231231,20240425,120115,코오롱인더스트리1우,1350 -20231231,,950160,코오롱티슈진,0 -20231231,20240426,138490,코오롱플라스틱,160 -20231231,20240418,021240,코웨이,1350 -20231231,20240412,033290,코웰패션,100 -20231231,20240415,056360,코위버,30 -20231231,20240426,282880,코윈테크,250 -20231231,,121850,코이즈,0 -20231231,20240409,146930,코잇,300 -20231231,,448710,코츠테크놀로지,0 -20231231,20240417,015710,코콤,70 -20231231,20240412,052330,코텍,200 -20231231,20240419,322780,코퍼스코리아,10 -20231231,20240412,200130,콜마비앤에이치,308 -20231231,,031820,콤텍시스템,0 -20231231,20240424,294570,쿠콘,100 -20231231,20240416,192400,쿠쿠홀딩스,1100 -20231231,20240416,284740,쿠쿠홈시스,800 -20231231,,317690,퀀타매트릭스,0 -20231231,,078940,퀀타피아,0 -20231231,,432720,퀄리타스반도체,0 -20231231,,456190,큐라켐,0 -20231231,,45619K,큐라켐1우,0 -20231231,,45619L,큐라켐2우,0 -20231231,,348080,큐라티스,0 -20231231,,34808Q,큐라티스 6우,0 -20231231,,086460,큐러블,0 -20231231,,372320,큐로셀,0 -20231231,,040350,큐로컴,0 -20231231,,051780,큐로홀딩스,0 -20231231,,445680,큐리옥스바이오시스템즈,0 -20231231,,182360,큐브엔터테인먼트,0 -20231231,20240419,405100,큐알티,480 -20231231,20240409,066310,큐에스아이,100 -20231231,,136660,큐엠씨,0 -20231231,,016600,큐캐피탈파트너스,0 -20231231,,355390,크라우드웍스,0 -20231231,20240426,264900,크라운제과(신설),250 -20231231,20240426,26490K,크라운제과(신설)1우,252 -20231231,20240426,005740,크라운해태홀딩스,100 -20231231,20240426,005745,크라운해태홀딩스1우,105 -20231231,,259960,크래프톤,0 -20231231,20240412,096240,크레버스,1000 -20231231,,215570,크로넥스,0 -20231231,,21557M,크로넥스3우,0 -20231231,20240416,110790,크리스에프앤씨,300 -20231231,,045520,크린앤사이언스,0 -20231231,20240415,214150,클래시스,200 -20231231,,352770,클리노믹스,0 -20231231,,35277L,클리노믹스 2우,0 -20231231,20240423,237880,클리오,400 -20231231,,139670,키네마스터,0 -20231231,,13967K,키네마스터 1우,0 -20231231,,020120,키다리스튜디오,0 -20231231,,433530,키움제7호기업인수목적,0 -20231231,,446840,키움제8호기업인수목적,0 -20231231,20240405,039490,키움증권,3000 -20231231,20240405,03949L,키움증권 3우,9386.013 -20231231,20240405,03949M,키움증권 4우,4963.761 -20231231,20240329,435770,키움코어리테일제1호위탁관리부동산투자회사,0 -20231231,20240329,43577K,키움코어리테일제1호위탁관리부동산투자회사1우,0 -20231231,20240329,43577L,키움코어리테일제1호위탁관리부동산투자회사2우,0 -20231231,,054780,키이스트,0 -20231231,,336040,타스컴,0 -20231231,,33604R,타스컴 7우,0 -20231231,,33604K,타스컴1우,0 -20231231,,33604L,타스컴2우,0 -20231231,,33604M,타스컴3우,0 -20231231,,33604N,타스컴4우,0 -20231231,,33604P,타스컴5우,0 -20231231,,33604Q,타스컴6우,0 -20231231,,219130,타이거일렉,0 -20231231,,346010,타이드,0 -20231231,,34601M,타이드 3우,0 -20231231,,34601K,타이드1우,0 -20231231,,34601L,타이드2우,0 -20231231,,318660,타임기술,0 -20231231,,434190,탈로스,0 -20231231,20240415,360070,탑머티리얼,400 -20231231,,134580,탑코미디어,0 -20231231,20240426,014580,태경비케이,130 -20231231,20240426,015890,태경산업,270 -20231231,20240419,006890,태경케미컬,200 -20231231,20240426,023160,태광,170 -20231231,20240425,003240,태광산업,1750 -20231231,20240411,011280,태림포장,50 -20231231,,323280,태성,0 -20231231,20240412,053620,태양,380 -20231231,20240425,004100,태양금속공업,10 -20231231,20240425,004105,태양금속공업1우,15 -20231231,,116100,태양기계,0 -20231231,,009410,태영건설,0 -20231231,,009415,태영건설1우,0 -20231231,,044490,태웅,0 -20231231,20240426,124560,태웅로직스,70 -20231231,20240426,12456K,태웅로직스 1우,70 -20231231,20240426,001420,태원물산,140 -20231231,20240426,007980,태평양물산,35 -20231231,,191420,테고사이언스,0 -20231231,20240329,095610,테스,500 -20231231,20240409,055490,테이팩스,300 -20231231,20240620,287620,테크밸리,1000 -20231231,,308700,테크엔,0 -20231231,,064520,테크엘,0 -20231231,20240409,089030,테크윙,130 -20231231,,258050,테크트랜스,0 -20231231,,25805K,테크트랜스1우,0 -20231231,,25805L,테크트랜스2우,0 -20231231,,25805M,테크트랜스3우,0 -20231231,,25805N,테크트랜스4우,0 -20231231,20240417,054450,텔레칩스,200 -20231231,20240412,078000,텔코웨어,640 -20231231,,200230,텔콘알에프제약,0 -20231231,20240409,393210,토마토시스템,90 -20231231,,215480,토박스코리아,0 -20231231,,051360,토비스,160 -20231231,,045340,토탈소프트뱅크,0 -20231231,20240422,108230,톱텍,300 -20231231,,199800,툴젠,0 -20231231,20240418,417790,트루엔,200 -20231231,,105550,트루윈,0 -20231231,,290090,트윔,0 -20231231,,026150,특수건설,0 -20231231,,322180,티라유텍,0 -20231231,,32218K,티라유텍1우,0 -20231231,20240425,033830,티비씨,18 -20231231,,057680,티사이언티픽,0 -20231231,20240417,002710,티씨씨스틸,80 -20231231,20240419,064760,티씨케이,1200 -20231231,,246710,티앤알바이오팹,0 -20231231,20240411,340570,티앤엘,550 -20231231,,131290,티에스이,0 -20231231,20240412,246690,티에스인베스트먼트,10 -20231231,20240426,019180,티에이치엔,60 -20231231,,425420,티에프이,0 -20231231,,131100,티엔엔터테인먼트,0 -20231231,,13110K,티엔엔터테인먼트3우,0 -20231231,20240409,356860,티엘비,200 -20231231,,062860,티엘아이,0 -20231231,,413300,티엘엔지니어링,0 -20231231,,41330K,티엘엔지니어링1우,0 -20231231,,363280,티와이홀딩스,0 -20231231,,36328K,티와이홀딩스1우,0 -20231231,,321550,티움바이오,0 -20231231,,32155K,티움바이오1우,0 -20231231,,091810,티웨이항공,0 -20231231,,09181K,티웨이항공1우,0 -20231231,,004870,티웨이홀딩스,0 -20231231,20240423,425040,티이엠씨,300 -20231231,20240412,032540,티제이미디어,320 -20231231,,022220,티케이지애강,0 -20231231,20240419,069260,티케이지휴켐스,1000 -20231231,20240419,081150,티플랙스,20 -20231231,,217880,틸론,0 -20231231,,21788P,틸론5우,0 -20231231,,084730,팅크웨어,0 -20231231,,08473K,팅크웨어 1우,0 -20231231,,058530,파나케이아,0 -20231231,,440110,파두,0 -20231231,20240418,034230,파라다이스,100 -20231231,,033540,파라텍,0 -20231231,,388870,파로스아이바이오,0 -20231231,20240418,214450,파마리서치,950 -20231231,,217950,파마리서치바이오,0 -20231231,,208340,파멥신,0 -20231231,,005690,파미셀,0 -20231231,20240416,177830,파버나인,70 -20231231,20240424,037070,파세코,150 -20231231,20240412,150900,파수,100 -20231231,,047310,파워로직스,0 -20231231,,266870,파워풀엑스,0 -20231231,20240419,368770,파이버프로,20 -20231231,20240416,170790,파이오링크,300 -20231231,,049120,파인디앤씨,0 -20231231,20240412,038950,파인디지털,50 -20231231,,441270,파인엠텍,0 -20231231,,106240,파인테크닉스,0 -20231231,,131760,파인텍,0 -20231231,,065690,파커스,0 -20231231,20240415,140860,파크시스템스,400 -20231231,20240408,091700,파트론,250 -20231231,,202960,판도라티비,0 -20231231,20240409,036580,팜스코,50 -20231231,20240417,027710,팜스토리,25 -20231231,,225590,패션플랫폼,0 -20231231,,054300,팬스타엔터프라이즈,0 -20231231,,068050,팬엔터테인먼트,0 -20231231,20240415,028670,팬오션,85 -20231231,,222110,팬젠,0 -20231231,,010820,퍼스텍,0 -20231231,20240417,016800,퍼시스,1200 -20231231,20240426,237210,펀디안,124 -20231231,20240426,23721K,펀디안1우,124 -20231231,20240426,23721L,펀디안2우,124 -20231231,20240426,23721M,펀디안3우,124 -20231231,,263750,펄어비스,0 -20231231,20240409,251970,펌텍코리아,380 -20231231,,001020,페이퍼코리아,0 -20231231,,327610,펨토바이오메드,0 -20231231,,32761K,펨토바이오메드 1우,0 -20231231,,32761L,펨토바이오메드 2우,0 -20231231,,32761M,펨토바이오메드 3우,0 -20231231,,168360,펨트론,0 -20231231,,090080,평화산업,0 -20231231,20240405,010770,평화홀딩스,150 -20231231,20240426,119500,포메탈,60 -20231231,,389140,포바이포,0 -20231231,,105760,포스뱅크,0 -20231231,20240417,025100,포스코이앤씨,500 -20231231,,318020,포인트모바일,0 -20231231,20240416,331380,포커스에이치엔에스,30 -20231231,,234100,폴라리스세원,0 -20231231,,039980,폴라리스에이아이,0 -20231231,20240409,041910,폴라리스에이아이파마,100 -20231231,,041020,폴라리스오피스,0 -20231231,,114630,폴라리스우노,0 -20231231,,290720,푸드나무,0 -20231231,,29072K,푸드나무 1우,0 -20231231,20240409,005670,푸드웰,90 -20231231,20240422,094940,푸른기술,30 -20231231,20240329,007330,푸른상호저축은행,650 -20231231,20240419,017810,풀무원,102 -20231231,20240404,023900,풍국주정공업,100 -20231231,20240408,103140,풍산,1200 -20231231,20240409,005810,풍산홀딩스,1400 -20231231,,371950,풍원정밀,0 -20231231,20240419,445180,퓨릿,50 -20231231,20240411,035200,프럼파스트,50 -20231231,,321260,프로이천,20 -20231231,,296160,프로젠,0 -20231231,,29616K,프로젠 1우,0 -20231231,,29616L,프로젠 2우,0 -20231231,,29616M,프로젠 3우,0 -20231231,,29616N,프로젠 4우,0 -20231231,20240329,053610,프로텍,400 -20231231,,303360,프로티아,0 -20231231,,377220,프롬바이오,0 -20231231,20240416,053160,프리엠스,50 -20231231,,405000,플라즈맵,0 -20231231,,041590,플래스크,0 -20231231,,367000,플래티어,0 -20231231,20240409,075130,플랜티넷,100 -20231231,,222670,플럼라인생명과학,0 -20231231,,22267V,플럼라인생명과학 10우,0 -20231231,,22267S,플럼라인생명과학 8우,0 -20231231,,22267T,플럼라인생명과학 9우,0 -20231231,,22267L,플럼라인생명과학2우,0 -20231231,,22267N,플럼라인생명과학4우,0 -20231231,,22267R,플럼라인생명과학7우,0 -20231231,,009810,플레이그램,0 -20231231,,009815,플레이그램1우,0 -20231231,,237820,플레이디,0 -20231231,,023770,플레이위드코리아,0 -20231231,,300080,플리토,0 -20231231,20240419,051380,피씨디렉트,100 -20231231,,241820,피씨엘,0 -20231231,,178920,피아이첨단소재,0 -20231231,,237750,피앤씨테크,0 -20231231,20240412,319660,피에스케이,200 -20231231,20240412,031980,피에스케이홀딩스,600 -20231231,20240412,002230,피에스텍,250 -20231231,20240419,043370,피에이치에이,250 -20231231,,239890,피엔에이치테크,0 -20231231,20240419,347740,피엔케이피부임상연구센타,30 -20231231,,257370,피엔티 엠에스,0 -20231231,20240423,024940,피엔풍년,35 -20231231,,147760,피엠티,0 -20231231,20240419,128660,피제이메탈,150 -20231231,20240418,006140,피제이전자,120 -20231231,,376180,피코그램,0 -20231231,,062970,피피아이,0 -20231231,,087600,픽셀플러스,0 -20231231,,378340,필에너지,0 -20231231,,347770,핌스,0 -20231231,20240425,163730,핑거,120 -20231231,,446750,하나26호기업인수목적보통주,0 -20231231,,448370,하나27호기업인수목적,0 -20231231,,454750,하나28호기업인수목적,0 -20231231,,454640,하나29호기업인수목적,0 -20231231,,469880,하나30호기업인수목적,0 -20231231,,469900,하나31호기업인수목적,0 -20231231,,406760,하나금융21호기업인수목적,0 -20231231,,418170,하나금융22호기업인수목적보통주,0 -20231231,,430230,하나금융24호기업인수목적,0 -20231231,,299030,하나기술,0 -20231231,,396580,하나리치업제2호위탁관리부동산투자회사,0 -20231231,20240329,39658K,하나리치업제2호위탁관리부동산투자회사1우,0 -20231231,20240329,39658L,하나리치업제2호위탁관리부동산투자회사2우,0 -20231231,,397340,하나리치업제3호위탁관리부동산투자회사,0 -20231231,20240328,39734K,하나리치업제3호위탁관리부동산투자회사1우,0 -20231231,20240426,067310,하나마이크론,50 -20231231,20240419,166090,하나머티리얼즈,200 -20231231,20240415,136480,하림,30 -20231231,20240419,003380,하림지주,120 -20231231,20240417,049130,하우리,0 -20231231,,101670,하이드로리튬,0 -20231231,,149980,하이로닉,0 -20231231,20240419,013030,하이록코리아,1050 -20231231,20240426,352820,하이브,700 -20231231,20240425,126700,하이비젼시스템,500 -20231231,,106080,하이소닉,0 -20231231,20240411,071090,하이스틸,10 -20231231,,400840,하이제7호기업인수목적,0 -20231231,,450050,하이제8호기업인수목적,0 -20231231,,221840,하이즈항공,0 -20231231,20240418,106190,하이텍팜,100 -20231231,,019490,하이트론씨스템즈,0 -20231231,20240405,000080,하이트진로,950 -20231231,20240405,000085,하이트진로1우,1000 -20231231,20240405,000087,하이트진로2우,1000 -20231231,20240405,000140,하이트진로홀딩스,550 -20231231,20240405,000145,하이트진로홀딩스1우,600 -20231231,,373200,하인크코리아,0 -20231231,20240419,066130,하츠,90 -20231231,20240419,004590,한국가구,140 -20231231,,036460,한국가스공사,0 -20231231,20240419,039340,한국경제티브이,160 -20231231,20240419,005430,한국공항,1000 -20231231,20240408,034950,한국기업평가,3750 -20231231,20240403,010040,한국내화,45 -20231231,20240409,025540,한국단자공업,450 -20231231,20240412,021830,한국렌탈,0 -20231231,20240405,180120,한국리스크관리,0 -20231231,,222980,한국맥널티,0 -20231231,,33166K,한국미라클피플사1우,0 -20231231,20240405,004090,한국석유공업,120 -20231231,,025550,한국선재,0 -20231231,20240419,002200,한국수출포장공업,80 -20231231,20240418,002960,한국쉘석유,25000 -20231231,20240419,011060,한국씨엔티,150 -20231231,20240418,016830,한국씨티은행,0 -20231231,20240418,01683K,한국씨티은행7우,0 -20231231,20240419,017890,한국알콜산업,285 -20231231,20240426,000240,한국앤컴퍼니,700 -20231231,20240409,033270,한국유나이티드제약,420 -20231231,,080720,한국유니온제약,0 -20231231,,015760,한국전력공사,0 -20231231,20240426,052690,한국전력기술,515 -20231231,20240423,063570,한국전자금융,125 -20231231,20240411,041460,한국전자인증,70 -20231231,20240426,006200,한국전자홀딩스,20 -20231231,,101680,한국정밀기계,0 -20231231,,039740,한국정보공학,0 -20231231,20240426,053300,한국정보인증,70 -20231231,,025770,한국정보통신,0 -20231231,,458610,한국제12호기업인수목적,0 -20231231,,027970,한국제지,0 -20231231,20240426,023350,한국종합기술,100 -20231231,,025890,한국주강,0 -20231231,20240412,000970,한국주철관공업,400 -20231231,20240415,028820,한국증권금융,700 -20231231,,071320,한국지역난방공사,0 -20231231,20240412,104700,한국철강,400 -20231231,,017960,한국카본,110 -20231231,20240425,023760,한국캐피탈,28 -20231231,20240416,054040,한국컴퓨터,300 -20231231,20240423,009760,한국컴퓨터지주,0 -20231231,20240409,161890,한국콜마,600 -20231231,20240412,024720,한국콜마홀딩스,180 -20231231,20240415,021650,한국큐빅,70 -20231231,20240418,199660,한국클래드텍,0 -20231231,20240424,161390,한국타이어앤테크놀로지,1300 -20231231,20240416,034830,한국토지신탁,70 -20231231,20240412,071050,한국투자금융지주,2650 -20231231,20240412,071055,한국투자금융지주1우,2711.5 -20231231,20240112,168490,한국투자패러랠유전해외자원개발특별자산투자회사1호지분증권,1342 -20231231,,007280,한국특강,0 -20231231,20240412,281570,한국파렛트풀,1500 -20231231,20240426,032300,한국파마,50 -20231231,20240412,037230,한국팩키지,40 -20231231,20240404,159430,한국펀드평가,0 -20231231,,448900,한국피아이엠,0 -20231231,20240426,047810,한국항공우주산업,500 -20231231,,123690,한국화장품,0 -20231231,20240424,003350,한국화장품제조,100 -20231231,20240426,030520,한글과컴퓨터,410 -20231231,20240416,052600,한네트,150 -20231231,20240405,011500,한농화성,120 -20231231,20240419,002390,한독,300 -20231231,20240412,256150,한독크린텍,250 -20231231,20240415,092460,한라아이엠에스,300 -20231231,20240404,179430,한메가,600 -20231231,20240412,053690,한미글로벌건축사사무소,400 -20231231,20240412,008930,한미사이언스,200 -20231231,20240412,128940,한미약품,500 -20231231,,452190,한빛레이저,0 -20231231,,047080,한빛소프트,0 -20231231,,452280,한선엔지니어링,0 -20231231,20240424,020000,한섬,750 -20231231,,003680,한성기업,0 -20231231,,066980,한성크린텍,0 -20231231,20240416,105630,한세실업,500 -20231231,,069640,한세엠케이,0 -20231231,20240417,016450,한세예스24홀딩스,250 -20231231,20240415,410980,한솔바이오텍,1000 -20231231,,114810,한솔아이원스,0 -20231231,,070590,한솔인티큐브,0 -20231231,,025750,한솔홈데코,0 -20231231,,226440,한송네오텍,0 -20231231,20240426,004960,한신공영,100 -20231231,20240426,004965,한신공영1우,150 -20231231,20240426,011700,한신기계공업,15 -20231231,,430690,한싹,0 -20231231,,078350,한양디지텍,0 -20231231,20240422,045100,한양이엔지,600 -20231231,20240404,001750,한양증권,800 -20231231,20240404,001755,한양증권1우,850 -20231231,20240404,001755,한양증권1우,850 -20231231,20240418,018880,한온시스템,68 -20231231,,091440,한울소재과학,0 -20231231,20240426,046110,한일네트웍스,3152 -20231231,,024740,한일단조공업,0 -20231231,20240412,005860,한일사료,75 -20231231,20240409,300720,한일시멘트(신설),800 -20231231,20240412,002220,한일철강,30 -20231231,20240409,006390,한일현대시멘트,700 -20231231,20240409,003300,한일홀딩스,800 -20231231,20240426,007770,한일화학공업,50 -20231231,20240426,051600,한전KPS,2158 -20231231,20240415,130660,한전산업개발,297 -20231231,,198940,한주라이트메탈,0 -20231231,,19894P,한주라이트메탈 5우,0 -20231231,,19894K,한주라이트메탈1우,0 -20231231,,107640,한중엔시에스,0 -20231231,20240419,002320,한진,600 -20231231,20240418,003480,한진중공업홀딩스,100 -20231231,20240419,180640,한진칼,300 -20231231,20240419,18064K,한진칼1우,325 -20231231,20240416,079170,한창산업,160 -20231231,,372910,한컴라이프케어,0 -20231231,,054920,한컴위드,0 -20231231,20240409,000880,한화,750 -20231231,20240409,000885,한화1우,800 -20231231,20240409,00088K,한화3우,800 -20231231,,452260,한화갤러리아,0 -20231231,,45226K,한화갤러리아1우,0 -20231231,20240409,009830,한화솔루션,300 -20231231,20240409,009835,한화솔루션1우,350 -20231231,20240405,272210,한화시스템,280 -20231231,20240405,012450,한화에어로스페이스,1800 -20231231,,082740,한화엔진 주식회사,0 -20231231,,042660,한화오션,0 -20231231,,003530,한화투자증권,0 -20231231,,003535,한화투자증권1우,0 -20231231,,386580,한화플러스제2호기업인수목적,0 -20231231,,430460,한화플러스제3호기업인수목적,0 -20231231,,455310,한화플러스제4호기업인수목적,0 -20231231,20240418,195870,해성디에스,900 -20231231,20240426,034810,해성산업,225 -20231231,20240426,03481K,해성산업1우,230 -20231231,20240422,101530,해태제과식품,200 -20231231,,220180,핸디소프트,0 -20231231,20240417,143210,핸즈코퍼레이션,0 -20231231,20240417,14321K,핸즈코퍼레이션1우,163 -20231231,20240417,14321L,핸즈코퍼레이션2우,163 -20231231,20240412,214180,헥토이노베이션,360 -20231231,20240412,234340,헥토파이낸셜,350 -20231231,,084990,헬릭스미스,0 -20231231,20240416,170030,현대공업,200 -20231231,20240425,453340,현대그린푸드,325 -20231231,20240426,064350,현대로템,100 -20231231,,079430,현대리바트,0 -20231231,20240405,319400,현대무벡스,30 -20231231,20240419,052260,현대바이오랜드,70 -20231231,20240425,069960,현대백화점,1300 -20231231,,004560,현대비앤지스틸,0 -20231231,,004565,현대비앤지스틸1우,0 -20231231,20240418,041440,현대에버다임,70 -20231231,20240405,039010,현대에이치티,130 -20231231,20240411,064540,현대엔지니어링,600 -20231231,20240405,017800,현대엘리베이터,4000 -20231231,20240419,090850,현대이지웰,90 -20231231,20240426,005440,현대지에프홀딩스,200 -20231231,20240426,065900,현대카드,0 -20231231,20240412,011760,현대코퍼레이션,600 -20231231,20240412,227840,현대코퍼레이션홀딩스,500 -20231231,20240419,126560,현대퓨처넷,100 -20231231,20240425,057050,현대홈쇼핑,2800 -20231231,20240417,092300,현우산업,100 -20231231,,138360,협진,0 -20231231,20240408,003010,혜인,170 -20231231,20240426,111110,호전실업,300 -20231231,20240419,008770,호텔신라,200 -20231231,20240419,008775,호텔신라1우,250 -20231231,20240417,060560,홈센타홀딩스,10 -20231231,,064240,홈캐스트,0 -20231231,,039610,화성밸브,0 -20231231,20240415,002460,화성산업,500 -20231231,20240416,378850,화승알앤에이,50 -20231231,20240405,241590,화승엔터프라이즈,45 -20231231,20240405,006060,화승인더스트리,188 -20231231,20240416,013520,화승코퍼레이션,50 -20231231,20240412,010690,화신,150 -20231231,20240412,126640,화신정공,50 -20231231,20240412,127980,화인써키트,400 -20231231,20240422,450320,화인트로,0 -20231231,20240418,010660,화천기계,30 -20231231,20240419,000850,화천기공,1300 -20231231,20240412,012670,환영철강공업,0 -20231231,20240417,016580,환인제약,300 -20231231,20240412,032560,황금에스티,150 -20231231,20240402,004800,효성,3000 -20231231,20240405,094280,효성ITX,300 -20231231,20240405,094285,효성ITX1우,305 -20231231,20240402,298040,효성중공업,2500 -20231231,20240402,298050,효성첨단소재,6500 -20231231,20240329,309860,효성투자개발,220000 -20231231,20240402,298020,효성티앤씨,10000 -20231231,20240419,453440,후니드,0 -20231231,,093370,후성,0 -20231231,20240426,081660,휠라홀딩스,750 -20231231,20240412,290270,휴네시온,40 -20231231,,192410,휴림네트웍스,0 -20231231,,090710,휴림로봇,0 -20231231,,090715,휴림로봇1우,0 -20231231,,078590,휴림에이텍,0 -20231231,,115160,휴맥스,0 -20231231,,028080,휴맥스홀딩스,0 -20231231,,079980,휴비스,0 -20231231,20240405,065510,휴비츠,200 -20231231,,215090,휴센텍,0 -20231231,,21509K,휴센텍 1우,0 -20231231,,263920,휴엠앤씨,0 -20231231,20240412,413340,휴온스바이오파마,0 -20231231,,145020,휴젤,0 -20231231,20240404,024060,흥구석유,50 -20231231,20240409,010240,흥국,240 -20231231,20240412,189980,흥국에프엔비,40 -20231231,,000540,흥국화재해상보험,0 -20231231,,000545,흥국화재해상보험1우,0 -20231231,,000547,흥국화재해상보험2우,0 -20231231,,003280,흥아해운,0 -20231231,20240425,037440,희림종합건축사사무소,150 -20231231,20240415,238490,힘스,50 -20231228,20240115,072610,티맥스소프트,1658 -20231228,20240112,152550,한국투자ANKOR유전해외자원개발특별자산투자회사1호(지분증권),14 -20231208,20231222,407190,한양종합건설,0 -20231206,20231221,082650,준인터,0 -20231130,20240308,357250,미래에셋맵스제1호위탁관리부동산투자회사,136 -20231130,20240228,338100,엔에이치프라임위탁관리부동산투자회사,400 -20231130,20240315,365550,이에스알켄달스퀘어위탁관리부동산투자회사,137 -20231130,,465830,코람코더원강남제1호위탁관리부동산투자회사,0 -20231130,20240228,46583K,코람코더원강남제1호위탁관리부동산투자회사1우,0 -20231130,20240228,417310,코람코더원위탁관리부동산투자회사,90 -20231130,20240229,357120,코람코라이프인프라위탁관리부동산투자회사,168 -20231130,20231229,030010,하이투자증권,35 -20231130,20231229,03001K,하이투자증권5우,0 -20231120,20231130,032760,세종,0 -20231101,20231116,183190,아세아시멘트,30 -20231031,20240205,448730,삼성에프엔위탁관리부동산투자회사,68.8399516947 -20231031,20240129,422770,케이비부산오시리아호텔위탁관리부동산투자회사,0 -20231031,20240129,42277K,케이비부산오시리아호텔위탁관리부동산투자회사1우,0 -20231031,,42277L,케이비부산오시리아호텔위탁관리부동산투자회사2우,0 -20231031,20240129,414720,케이원제15호판교위탁관리부동산투자회사,0 -20231031,20240129,41472K,케이원제15호판교위탁관리부동산투자회사1우,0 -20231031,20240129,41472L,케이원제15호판교위탁관리부동산투자회사2우,0 -20231031,20240131,458060,케이원제23호역삼위탁관리부동산투자회사,0 -20231031,20240131,45806K,케이원제23호역삼위탁관리부동산투자회사1우,0 -20231031,20240131,45806L,케이원제23호역삼위탁관리부동산투자회사2우,0 -20231031,20240130,342040,코크렙제51호위탁관리부동산투자회사,0 -20231031,20240130,34204K,코크렙제51호위탁관리부동산투자회사1우,0 -20231031,20240130,34204L,코크렙제51호위탁관리부동산투자회사2우,0 -20231031,20240202,451800,한화위탁관리부동산투자회사,158 -20231031,20231114,453440,후니드,0 -20231005,20231025,009970,영원무역홀딩스,1600 -20231004,20231018,078520,에이블씨엔씨,1270 -20230930,20231108,105560,KB금융지주,510 -20230930,20231114,017670,SK텔레콤,830 -20230930,20231024,002100,경농,200 -20230930,20240112,008870,금비,900 -20230930,20231025,023450,동남합성,500 -20230930,20231221,377190,디앤디플랫폼위탁관리부동산투자회사,141 -20230930,20231219,357430,마스턴프리미어제1호위탁관리부동산투자회사,153 -20230930,20231025,086900,메디톡스,1100 -20230930,20231025,08690K,메디톡스 3우,0 -20230930,20231025,08690L,메디톡스 4우,2314.9782972302 -20230930,20240105,396690,미래에셋글로벌위탁관리부동산투자회사,150.0066009635 -20230930,20231023,002840,미원상사,500 -20230930,20240112,003610,방림,38 -20230930,20231018,225530,보광산업,150 -20230930,20231120,005930,삼성전자,361 -20230930,20231120,005935,삼성전자1우,361 -20230930,20231113,225190,삼양옵틱스,50 -20230930,20231103,055550,신한금융지주회사,525 -20230930,,362010,신한로지스제1호위탁관리부동산투자회사,0 -20230930,20231229,36201K,신한로지스제1호위탁관리부동산투자회사1우,0 -20230930,20231229,36201L,신한로지스제1호위탁관리부동산투자회사2우,0 -20230930,20231228,327000,신한알파강남위탁관리부동산투자회사,0 -20230930,20231228,32700L,신한알파강남위탁관리부동산투자회사1우,0 -20230930,20231228,32700K,신한알파강남위탁관리부동산투자회사2우,0 -20230930,20231229,293940,신한알파위탁관리부동산투자회사,186 -20230930,20231229,29394K,신한알파위탁관리부동산투자회사1우,413 -20230930,20231228,335050,신한호텔천안위탁관리부동산투자회사,0 -20230930,20231228,33505K,신한호텔천안위탁관리부동산투자회사1우,0 -20230930,20231228,33505L,신한호텔천안위탁관리부동산투자회사2우,0 -20230930,20231027,003410,쌍용씨앤이,70 -20230930,20231201,097950,씨제이제일제당,1000 -20230930,20231201,097955,씨제이제일제당1우,1000 -20230930,20231128,096530,씨젠,200 -20230930,20231031,002310,아세아제지,500 -20230930,20231123,122900,아이마켓코리아,150 -20230930,20231222,395400,에스케이위탁관리부동산투자회사,91 -20230930,20231114,000660,에스케이하이닉스,300 -20230930,20231110,267250,에이치디현대,900 -20230930,20231110,316140,우리금융지주,180 -20230930,20231122,381970,케이카,190 -20230930,20231124,003070,코오롱글로벌,100 -20230930,20231124,003075,코오롱글로벌1우,100 -20230930,20231123,005490,포스코홀딩스,2500 -20230930,20231031,161580,필옵틱스,188 -20230930,20231110,086790,하나금융지주,600 -20230930,20231027,004590,한국가구,35 -20230930,20231020,168490,한국투자패러랠유전해외자원개발특별자산투자회사1호지분증권,576 -20230930,20231124,009240,한샘,3000 -20230930,20231020,213500,한솔제지,200 -20230930,20231020,21350K,한솔제지1우,200 -20230930,20231123,018880,한온시스템,68 -20230930,20231114,005380,현대자동차,1500 -20230930,20231114,005385,현대자동차1우,1500 -20230930,20231114,005387,현대자동차2우,1500 -20230930,20231114,005389,현대자동차3우,1500 -20230930,20231018,060560,홈센타홀딩스,10 -20230930,20231116,094280,효성ITX,150 -20230930,20231116,094285,효성ITX1우,150 -20230930,20231129,081660,휠라홀딩스,340 -20230915,20231013,035150,백산,100 -20230831,20231114,321790,엠프라퍼티제1호위탁관리부동산투자회사,0 -20230831,20231114,32179K,엠프라퍼티제1호위탁관리부동산투자회사1우,0 -20230831,20231114,32179L,엠프라퍼티제1호위탁관리부동산투자회사2우,0 -20230831,20231206,334890,이지스밸류플러스위탁관리부동산투자회사,200.9698481647 -20230831,20231205,405410,케이원제13호위탁관리부동산투자회사,0 -20230831,20231205,40541K,케이원제13호위탁관리부동산투자회사1우,0 -20230831,20231129,417310,코람코더원위탁관리부동산투자회사,66 -20230831,20231220,093380,풍강,200 -20230811,20230825,138930,BNK금융지주,100 -20230810,20230831,034730,SK,1500 -20230810,20230831,03473K,SK1우,1500 -20230731,20231020,360000,대신케이리츠물류1호위탁관리부동산투자회사,0 -20230731,20231020,36000K,대신케이리츠물류1호위탁관리부동산투자회사1우,0 -20230731,,443100,밸류트러스트제17호위탁관리부동산투자회사,0 -20230731,20231030,44310K,밸류트러스트제17호위탁관리부동산투자회사1우,0 -20230731,20231030,44310L,밸류트러스트제17호위탁관리부동산투자회사2우,0 -20230731,20231030,44310M,밸류트러스트제17호위탁관리부동산투자회사3우,0 -20230731,20231107,448730,삼성에프엔위탁관리부동산투자회사,70.3580113971 -20230731,20231027,432320,케이비스타위탁관리부동산투자회사,188 -20230728,20230811,168490,한국투자패러랠유전해외자원개발특별자산투자회사1호지분증권,240 -20230725,20230810,002030,아세아,600 -20230720,20230804,002900,티와이엠,50 -20230719,20230801,203810,국제16호선박투자회사,0 -20230710,20230809,004050,에이치디현대오일뱅크,327 -20230630,20230810,017940,E1,700 -20230630,20230808,175330,JB금융지주,120 -20230630,20230808,105560,KB금융지주,510 -20230630,20230808,025000,KPX케미칼,500 -20230630,20230810,092230,KPX홀딩스,750 -20230630,20230825,032640,LG유플러스,250 -20230630,20230825,010950,S-OIL,200 -20230630,20230825,010955,S-OIL1우,200 -20230630,20230818,018670,SK가스,2000 -20230630,20230825,285130,SK케미칼,400 -20230630,20230825,28513K,SK케미칼 1우,400 -20230630,20230811,017670,SK텔레콤,830 -20230630,20230811,049720,고려신용정보,180 -20230630,20230824,010130,고려아연,10000 -20230630,20230919,374760,교보제십사호위탁관리부동산투자회사,0 -20230630,20230809,083420,그린케미칼,80 -20230630,20230829,013700,까뮤이앤씨,5 -20230630,20230822,035420,네이버,415 -20230630,,178600,대동고려삼,0 -20230630,,17860K,대동고려삼1우,35 -20230630,,17860L,대동고려삼2우,30 -20230630,,430970,대한제30호위탁관리부동산투자회사,0 -20230630,,43097K,대한제30호위탁관리부동산투자회사1우,0 -20230630,20231006,43097L,대한제30호위탁관리부동산투자회사2우,0 -20230630,,43097M,대한제30호위탁관리부동산투자회사3우,0 -20230630,20231006,43097N,대한제30호위탁관리부동산투자회사4우,0 -20230630,20230824,067080,대화제약,50 -20230630,20230810,000640,동아쏘시오홀딩스,1000 -20230630,20230814,241560,두산밥캣,800 -20230630,,418870,디디아이에스에스280위탁관리부동산투자회사,0 -20230630,20230830,41887K,디디아이에스에스280위탁관리부동산투자회사1우,0 -20230630,20230830,41887L,디디아이에스에스280위탁관리부동산투자회사2우,0 -20230630,20230830,41887M,디디아이에스에스280위탁관리부동산투자회사3우,0 -20230630,20230728,007340,디엔오토모티브,500 -20230630,20230811,038390,레드캡투어,200 -20230630,20230922,330590,롯데위탁관리부동산투자회사,109.18284852 -20230630,20231006,169330,마크로밀엠브레인,120 -20230630,20230828,088980,맥쿼리한국인프라투융자회사,385 -20230630,20230830,012690,모나리자,100 -20230630,20231018,015250,모닝글로리,100 -20230630,20230724,002840,미원상사,500 -20230630,20230727,268280,미원스페셜티케미칼(신설),700 -20230630,20230726,134380,미원화학,1500 -20230630,20230726,337930,브랜드엑스코퍼레이션,40 -20230630,20230816,005930,삼성전자,361 -20230630,20230816,005935,삼성전자1우,361 -20230630,20230901,003230,삼양식품,1000 -20230630,20230807,225190,삼양옵틱스,100 -20230630,20230811,004450,삼화왕관,500 -20230630,20230808,065710,서호전기,500 -20230630,20230831,148150,세경하이테크,200 -20230630,20230831,14815K,세경하이테크1우,442.56 -20230630,20231026,021820,세원정공,100 -20230630,20231026,066710,세원테크,50 -20230630,20231017,005390,신성통상,50 -20230630,20230804,055550,신한금융지주회사,525 -20230630,20230927,404990,신한서부티엔디위탁관리부동산투자회사,150 -20230630,20230726,004080,신흥,130 -20230630,20230814,003410,쌍용씨앤이,70 -20230630,20230807,352700,씨앤투스,50 -20230630,20230825,097950,씨제이제일제당,1000 -20230630,20230825,097955,씨제이제일제당1우,1000 -20230630,20230829,096530,씨젠,200 -20230630,20231013,050860,아세아텍,50 -20230630,20230824,122900,아이마켓코리아,150 -20230630,20231020,030960,양지사,50 -20230630,20230818,003570,에스앤티다이내믹스,150 -20230630,20230818,064960,에스앤티모티브,600 -20230630,20230818,100840,에스앤티에너지,400 -20230630,20230821,036530,에스앤티홀딩스,300 -20230630,20230829,056190,에스에프에이,180 -20230630,20230818,006120,에스케이디스커버리,500 -20230630,20230818,006125,에스케이디스커버리1우,500 -20230630,20230808,210980,에스케이디앤디,400 -20230630,20230808,21098L,에스케이디앤디2우,400 -20230630,20230914,395400,에스케이위탁관리부동산투자회사,66 -20230630,20230814,000660,에스케이하이닉스,300 -20230630,20230725,037890,에어미디어,800 -20230630,20230803,221960,에이엠,0 -20230630,20230811,267250,에이치디현대,900 -20230630,20231010,386150,에이치엘제일호위탁관리부동산투자회사,0 -20230630,20231010,38615K,에이치엘제일호위탁관리부동산투자회사1우,0 -20230630,20231010,38615L,에이치엘제일호위탁관리부동산투자회사2우,0 -20230630,20230818,230360,에코마케팅,130 -20230630,20230927,400760,엔에이치올원위탁관리부동산투자회사,138 -20230630,20230809,316140,우리금융지주,180 -20230630,,434780,우리로지스위탁관리부동산투자회사,0 -20230630,20231011,43478K,우리로지스위탁관리부동산투자회사1우,0 -20230630,20230721,105840,우진,50 -20230630,20230818,214320,이노션,450 -20230630,20230927,088260,이리츠코크렙기업구조조정부동산투자회사,200 -20230630,,080010,이상네트웍스,0 -20230630,20230922,350520,이지스레지던스위탁관리부동산투자회사,133 -20230630,20230825,049070,인탑스,50 -20230630,20231013,348950,제이알글로벌위탁관리부동산투자회사,190 -20230630,20230714,194370,제이에스코퍼레이션,350 -20230630,20230825,053050,지에스이,20 -20230630,20230808,003780,진양산업,50 -20230630,20230808,010640,진양폴리우레탄,50 -20230630,20230809,100250,진양홀딩스,50 -20230630,20230717,078340,컴투스,1300 -20230630,20230721,214370,케어젠,1200 -20230630,20230809,002380,케이씨씨,1000 -20230630,20230731,344820,케이씨씨글라스,800 -20230630,,435230,케이원제19호위탁관리부동산투자회사,0 -20230630,20230925,43523K,케이원제19호위탁관리부동산투자회사1우,0 -20230630,20230925,43523L,케이원제19호위탁관리부동산투자회사2우,0 -20230630,20230822,381970,케이카,190 -20230630,20230823,033780,케이티앤지,1200 -20230630,,369550,코레이트타워위탁관리부동산투자회사,0 -20230630,20231006,36955K,코레이트타워위탁관리부동산투자회사1우,0 -20230630,20231006,36955L,코레이트타워위탁관리부동산투자회사2우,0 -20230630,20230830,094930,코스텔,0 -20230630,20230721,033290,코웰패션,60 -20230630,20230821,096240,크레버스,1000 -20230630,20230927,435770,키움코어리테일제1호위탁관리부동산투자회사,0 -20230630,20230927,43577K,키움코어리테일제1호위탁관리부동산투자회사1우,0 -20230630,20230927,43577L,키움코어리테일제1호위탁관리부동산투자회사2우,0 -20230630,20230828,005490,포스코홀딩스,2500 -20230630,20231017,189690,포시에스,100 -20230630,20230810,086790,하나금융지주,600 -20230630,,396580,하나리치업제2호위탁관리부동산투자회사,0 -20230630,20230927,39658K,하나리치업제2호위탁관리부동산투자회사1우,0 -20230630,20230927,39658L,하나리치업제2호위탁관리부동산투자회사2우,0 -20230630,,397340,하나리치업제3호위탁관리부동산투자회사,0 -20230630,20230927,39734K,하나리치업제3호위탁관리부동산투자회사1우,0 -20230630,,360780,하나트러스트제5호위탁관리부동산투자회사,0 -20230630,20230926,36078K,하나트러스트제5호위탁관리부동산투자회사1우,0 -20230630,20230926,36078L,하나트러스트제5호위탁관리부동산투자회사2우,0 -20230630,,359960,하나트러스트제6호위탁관리부동산투자회사,0 -20230630,20230926,35996K,하나트러스트제6호위탁관리부동산투자회사1우,0 -20230630,20230823,034950,한국기업평가,1381 -20230630,20230808,025540,한국단자공업,250 -20230630,20230825,009240,한샘,1500 -20230630,20230824,018880,한온시스템,90 -20230630,20230814,012330,현대모비스,1000 -20230630,20230814,012335,현대모비스1우,1000 -20230630,20230814,005380,현대자동차,1500 -20230630,20230814,005385,현대자동차1우,1500 -20230630,20230814,005387,현대자동차2우,1500 -20230630,20230814,005389,현대자동차3우,1500 -20230630,20230817,094280,효성ITX,150 -20230630,20230817,094285,효성ITX1우,150 -20230630,20230825,200670,휴메딕스,250 -20230630,20230825,243070,휴온스,300 -20230630,20230825,084110,휴온스글로벌,250 -20230621,20230721,155900,바다로19호선박투자회사,0 -20230531,20230906,357250,미래에셋맵스제1호위탁관리부동산투자회사,154 -20230531,20230829,338100,엔에이치프라임위탁관리부동산투자회사,131 -20230531,,142690,영진,0 -20230531,20230908,365550,이에스알켄달스퀘어위탁관리부동산투자회사,135 -20230531,20230829,417310,코람코더원위탁관리부동산투자회사,81 -20230531,20230831,357120,코람코라이프인프라위탁관리부동산투자회사,200 -20230529,20230621,155900,바다로19호선박투자회사,0 -20230517,20230605,220630,맘스터치앤컴퍼니,0 -20230517,20230608,358720,에쓰푸드,0 -20230430,20230807,448730,삼성에프엔위탁관리부동산투자회사,58.4373217335 -20230430,,414720,케이원제15호판교위탁관리부동산투자회사,0 -20230430,20230731,41472K,케이원제15호판교위탁관리부동산투자회사1우,0 -20230430,20230731,41472L,케이원제15호판교위탁관리부동산투자회사2우,0 -20230430,,342040,코크렙제51호위탁관리부동산투자회사,0 -20230430,20230728,34204K,코크렙제51호위탁관리부동산투자회사1우,0 -20230430,20230728,34204L,코크렙제51호위탁관리부동산투자회사2우,0 -20230430,20230811,451800,한화위탁관리부동산투자회사,131 -20230427,20230522,155900,바다로19호선박투자회사,0 -20230425,20230510,056070,블루버드,1000 -20230420,20230504,337730,영일프레시젼,25000 -20230418,20230428,203810,국제16호선박투자회사,0 -20230331,20230511,105560,KB금융지주,510 -20230331,20230703,950110,SBI 핀테크솔루션즈,153.1122 -20230331,20230510,017670,SK텔레콤,830 -20230331,20230530,008870,금비,400 -20230331,20230707,092440,기신정기,150 -20230331,20230714,020180,대신정보통신,20 -20230331,20230727,018500,동원금속,20 -20230331,20230623,377190,디앤디플랫폼위탁관리부동산투자회사,150 -20230331,20230629,044130,리딩투자증권,33 -20230331,20230629,04413K,리딩투자증권 1우,75 -20230331,20230622,357430,마스턴프리미어제1호위탁관리부동산투자회사,152 -20230331,20230707,396690,미래에셋글로벌위탁관리부동산투자회사,154.1 -20230331,20230517,005930,삼성전자,361 -20230331,20230517,005935,삼성전자1우,361 -20230331,20230512,225190,삼양옵틱스,100 -20230331,20230707,001720,신영증권,4000 -20230331,20230707,001725,신영증권1우,4050 -20230331,20230512,055550,신한금융지주회사,525 -20230331,20230630,362010,신한로지스제1호위탁관리부동산투자회사,0 -20230331,20230630,36201K,신한로지스제1호위탁관리부동산투자회사1우,0 -20230331,20230630,36201L,신한로지스제1호위탁관리부동산투자회사2우,0 -20230331,20230623,327000,신한알파강남위탁관리부동산투자회사,0 -20230331,20230623,32700L,신한알파강남위탁관리부동산투자회사1우,0 -20230331,20230623,32700K,신한알파강남위탁관리부동산투자회사2우,0 -20230331,20230629,293940,신한알파위탁관리부동산투자회사,190 -20230331,20230629,29394K,신한알파위탁관리부동산투자회사1우,411 -20230331,20230629,335050,신한호텔천안위탁관리부동산투자회사,0 -20230331,20230629,33505K,신한호텔천안위탁관리부동산투자회사1우,0 -20230331,20230629,33505L,신한호텔천안위탁관리부동산투자회사2우,0 -20230331,20230509,003410,쌍용씨앤이,70 -20230331,20230526,097950,씨제이제일제당,1000 -20230331,20230526,097955,씨제이제일제당1우,1000 -20230331,20230530,096530,씨젠,200 -20230331,20230525,122900,아이마켓코리아,150 -20230331,20230720,289080,에스브이인베스트먼트,20 -20230331,20230719,083030,에스에프씨,6900 -20230331,20230706,395400,에스케이위탁관리부동산투자회사,66 -20230331,20230508,000660,에스케이하이닉스,300 -20230331,20230525,230360,에코마케팅,70 -20230331,20230419,015360,예스코홀딩스,6000 -20230331,20230630,067010,이씨에스텔레콤,120 -20230331,20230523,381970,케이카,190 -20230331,20230725,190650,코리아에셋투자증권,200 -20230331,20230428,084870,티비에이치글로벌,50 -20230331,20230516,425040,티이엠씨,400 -20230331,20230601,005490,포스코홀딩스,2500 -20230331,20230512,086790,하나금융지주,600 -20230331,20230414,168490,한국투자패러랠유전해외자원개발특별자산투자회사1호지분증권,10 -20230331,,009240,한샘,0 -20230331,20230525,018880,한온시스템,90 -20230331,20230518,094280,효성ITX,150 -20230331,20230518,094285,효성ITX1우,150 -20230328,20230418,153380,경기방송,600 -20230327,20230421,155900,바다로19호선박투자회사,0 -20230327,20230410,354760,우아한형제들,0 -20230327,20230410,35476K,우아한형제들1우,0 -20230327,20230410,35476L,우아한형제들2우,0 -20230327,20230410,35476M,우아한형제들3우,0 -20230327,20230410,35476N,우아한형제들4우,0 -20230327,20230410,35476P,우아한형제들5우,0 -20230327,20230410,35476Q,우아한형제들6우,0 -20230327,20230410,35476R,우아한형제들7우,0 -20230228,20230510,321790,엠프라퍼티제1호위탁관리부동산투자회사,0 -20230228,20230510,32179K,엠프라퍼티제1호위탁관리부동산투자회사1우,0 -20230228,20230510,32179L,엠프라퍼티제1호위탁관리부동산투자회사2우,0 -20230228,20230531,334890,이지스밸류플러스위탁관리부동산투자회사,212.9048757889 -20230228,20230530,405410,케이원제13호위탁관리부동산투자회사,0 -20230228,20230530,40541K,케이원제13호위탁관리부동산투자회사1우,0 -20230228,20230530,417310,코람코더원위탁관리부동산투자회사,83 -20230227,20230321,155900,바다로19호선박투자회사,0 -20230201,20230227,419360,팍트라인터내셔널,0 -20230131,20230421,360000,대신케이리츠물류1호위탁관리부동산투자회사,0 -20230131,20230421,36000K,대신케이리츠물류1호위탁관리부동산투자회사1우,0 -20230131,20230428,443100,밸류트러스트제17호위탁관리부동산투자회사,0 -20230131,20230428,44310K,밸류트러스트제17호위탁관리부동산투자회사1우,0 -20230131,20230428,44310L,밸류트러스트제17호위탁관리부동산투자회사2우,0 -20230131,20230428,44310M,밸류트러스트제17호위탁관리부동산투자회사3우,0 -20230131,20230428,432320,케이비스타위탁관리부동산투자회사,165 -20230127,20230221,155900,바다로19호선박투자회사,0 -20230116,20230201,203810,국제16호선박투자회사,0 -20230115,,086820,바이오솔루션,0 -20230101,20230407,003540,대신증권,1200 -20230101,20230407,003545,대신증권1우,1250 -20230101,20230407,003547,대신증권2우,1200 -20230101,,005870,휴니드테크놀러지스,0 \ No newline at end of file diff --git a/src/test/java/codesquad/fineants/domain/kis/service/KisServiceTest.java b/src/test/java/codesquad/fineants/domain/kis/service/KisServiceTest.java index eebf133c6..c590d1999 100644 --- a/src/test/java/codesquad/fineants/domain/kis/service/KisServiceTest.java +++ b/src/test/java/codesquad/fineants/domain/kis/service/KisServiceTest.java @@ -270,10 +270,6 @@ void fetchSearchStockInfo() { } private List saveStocks() { - Set stockInfoSet = stockCsvReader.readStockCsv(); - List stocks = stockInfoSet.stream() - .map(StockDataResponse.StockInfo::toEntity) - .toList(); - return stockRepository.saveAll(stocks); + return stockRepository.saveAll(stockCsvReader.readStockCsv()); } } diff --git a/src/test/java/codesquad/fineants/domain/stock/domain/entity/StockTest.java b/src/test/java/codesquad/fineants/domain/stock/domain/entity/StockTest.java index 80fc8337f..74c42ab14 100644 --- a/src/test/java/codesquad/fineants/domain/stock/domain/entity/StockTest.java +++ b/src/test/java/codesquad/fineants/domain/stock/domain/entity/StockTest.java @@ -10,12 +10,12 @@ class StockTest { @Test void toCsvLineString() { // given - Stock stock = Stock.of("000370", "한화손해보험보통주", "Hanwha General Insurance Co.,Ltd.", "KR7000370007", "보험", + Stock stock = Stock.of("000370", "한화손해보험보통주", "\"Hanwha General Insurance Co.,Ltd.\"", "KR7000370007", "보험", Market.KOSPI); // when String result = stock.toCsvLineString(); // then - String expected = "KR7000370007:000370:한화손해보험보통주:Hanwha General Insurance Co.,Ltd.:KOSPI:보험"; + String expected = "KR7000370007,000370,한화손해보험보통주,\"Hanwha General Insurance Co.,Ltd.\",KOSPI,보험"; Assertions.assertThat(result).isEqualTo(expected); } } diff --git a/src/test/java/codesquad/fineants/domain/stock/repository/StockQueryRepositoryTest.java b/src/test/java/codesquad/fineants/domain/stock/repository/StockQueryRepositoryTest.java index d6982f388..0919f4a78 100644 --- a/src/test/java/codesquad/fineants/domain/stock/repository/StockQueryRepositoryTest.java +++ b/src/test/java/codesquad/fineants/domain/stock/repository/StockQueryRepositoryTest.java @@ -2,7 +2,6 @@ import java.util.Collection; import java.util.List; -import java.util.Set; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; @@ -14,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired; import codesquad.fineants.AbstractContainerBaseTest; -import codesquad.fineants.domain.stock.domain.dto.response.StockDataResponse; import codesquad.fineants.domain.stock.domain.entity.Stock; import codesquad.fineants.domain.stock.service.StockCsvReader; import lombok.extern.slf4j.Slf4j; @@ -35,11 +33,7 @@ class StockQueryRepositoryTest extends AbstractContainerBaseTest { @BeforeEach void setup() { - Set stockInfoSet = stockCsvReader.readStockCsv(); - List stocks = stockInfoSet.stream() - .map(StockDataResponse.StockInfo::toEntity) - .toList(); - stockRepository.saveAll(stocks); + stockRepository.saveAll(stockCsvReader.readStockCsv()); } @AfterEach @@ -57,7 +51,7 @@ void getSliceOfStock() { // when List stocks = repository.getSliceOfStock(tickerSymbol, size, keyword); // then - Assertions.assertThat(stocks.size()).isEqualTo(10); + Assertions.assertThat(stocks).hasSize(10); } @DisplayName("종목 검색 시나리오") @@ -73,7 +67,7 @@ Collection createGetSliceOfStockTest() { List stocks = repository.getSliceOfStock(tickerSymbol, size, keyword); // then stocks.forEach(s -> log.debug("stock : {}", s)); - Assertions.assertThat(stocks.size()).isEqualTo(10); + Assertions.assertThat(stocks).hasSize(10); if (!stocks.isEmpty()) { lastTickerSymbol = stocks.get(stocks.size() - 1).getTickerSymbol(); @@ -87,7 +81,7 @@ Collection createGetSliceOfStockTest() { List stocks = repository.getSliceOfStock(lastTickerSymbol, size, keyword); // then stocks.forEach(s -> log.debug("stock : {}", s)); - Assertions.assertThat(stocks.size()).isEqualTo(10); + Assertions.assertThat(stocks).hasSize(10); if (!stocks.isEmpty()) { lastTickerSymbol = stocks.get(stocks.size() - 1).getTickerSymbol(); @@ -101,11 +95,9 @@ Collection createGetSliceOfStockTest() { List stocks = repository.getSliceOfStock(lastTickerSymbol, size, keyword); // then stocks.forEach(s -> log.debug("stock : {}", s)); - Assertions.assertThat(stocks.size()).isEqualTo(5); + Assertions.assertThat(stocks).hasSize(5); - if (!stocks.isEmpty()) { - lastTickerSymbol = stocks.get(stocks.size() - 1).getTickerSymbol(); - } + lastTickerSymbol = stocks.get(stocks.size() - 1).getTickerSymbol(); }) ); } diff --git a/src/test/java/codesquad/fineants/domain/stock/service/StockCsvReaderTest.java b/src/test/java/codesquad/fineants/domain/stock/service/StockCsvReaderTest.java new file mode 100644 index 000000000..fee18d6f1 --- /dev/null +++ b/src/test/java/codesquad/fineants/domain/stock/service/StockCsvReaderTest.java @@ -0,0 +1,32 @@ +package codesquad.fineants.domain.stock.service; + +import java.util.Set; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import codesquad.fineants.domain.stock.domain.entity.Market; +import codesquad.fineants.domain.stock.domain.entity.Stock; + +class StockCsvReaderTest { + + @DisplayName("csv 파일을 참조하여 종목을 조회한다") + @Test + void readStockCsv() { + // given + StockCsvReader reader = new StockCsvReader(); + // when + Set stocks = reader.readStockCsv(); + // then + Stock megatouch = stocks.stream() + .filter(stock -> "KR7446540007".equals(stock.getStockCode())) + .findAny() + .orElseThrow(); + Assertions.assertThat(megatouch) + .extracting(Stock::getStockCode, Stock::getTickerSymbol, Stock::getCompanyName, Stock::getCompanyNameEng, + Stock::getMarket, Stock::getSector) + .containsExactly("KR7446540007", "446540", "메가터치", "Megatouch Co., Ltd", Market.KOSDAQ, "반도체"); + } + +} diff --git a/src/test/java/codesquad/fineants/domain/stock/service/StockServiceTest.java b/src/test/java/codesquad/fineants/domain/stock/service/StockServiceTest.java index 9a098230e..a616c640b 100644 --- a/src/test/java/codesquad/fineants/domain/stock/service/StockServiceTest.java +++ b/src/test/java/codesquad/fineants/domain/stock/service/StockServiceTest.java @@ -319,9 +319,7 @@ void scheduledRefreshStocks() { } private List saveStocks() { - Set stockInfoSet = stockCsvReader.readStockCsv(); - List stocks = stockInfoSet.stream() - .map(StockDataResponse.StockInfo::toEntity) + List stocks = stockCsvReader.readStockCsv().stream() .limit(100) .toList(); return stockRepository.saveAll(stocks); diff --git a/src/test/java/codesquad/fineants/global/init/SetupDataLoaderTest.java b/src/test/java/codesquad/fineants/global/init/SetupDataLoaderTest.java new file mode 100644 index 000000000..da93ee8b8 --- /dev/null +++ b/src/test/java/codesquad/fineants/global/init/SetupDataLoaderTest.java @@ -0,0 +1,152 @@ +package codesquad.fineants.global.init; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.BDDMockito.*; + +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.logging.log4j.util.Strings; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.transaction.annotation.Transactional; + +import codesquad.fineants.AbstractContainerBaseTest; +import codesquad.fineants.domain.dividend.domain.entity.StockDividend; +import codesquad.fineants.domain.dividend.repository.StockDividendRepository; +import codesquad.fineants.domain.exchangerate.domain.entity.ExchangeRate; +import codesquad.fineants.domain.exchangerate.repository.ExchangeRateRepository; +import codesquad.fineants.domain.exchangerate.service.ExchangeRateService; +import codesquad.fineants.domain.kis.service.KisService; +import codesquad.fineants.domain.member.domain.entity.Member; +import codesquad.fineants.domain.member.domain.entity.Role; +import codesquad.fineants.domain.member.repository.MemberRepository; +import codesquad.fineants.domain.member.repository.RoleRepository; +import codesquad.fineants.domain.stock.domain.entity.Stock; +import codesquad.fineants.domain.stock.repository.StockRepository; +import codesquad.fineants.domain.stock.service.StockCsvReader; +import codesquad.fineants.global.init.properties.AdminProperties; +import codesquad.fineants.global.init.properties.ManagerProperties; +import codesquad.fineants.global.init.properties.UserProperties; +import codesquad.fineants.global.security.oauth.dto.MemberAuthentication; +import codesquad.fineants.infra.s3.service.AmazonS3DividendService; +import codesquad.fineants.infra.s3.service.AmazonS3StockService; + +class SetupDataLoaderTest extends AbstractContainerBaseTest { + + @Autowired + private SetupDataLoader setupDataLoader; + + @Autowired + private RoleRepository roleRepository; + + @Autowired + private MemberRepository memberRepository; + + @Autowired + private AdminProperties adminProperties; + + @Autowired + private ManagerProperties managerProperties; + + @Autowired + private UserProperties userProperties; + + @Autowired + private ExchangeRateRepository exchangeRateRepository; + + @Autowired + private AmazonS3StockService amazonS3StockService; + + @Autowired + private StockCsvReader stockCsvReader; + + @Autowired + private StockRepository stockRepository; + + @Autowired + private AmazonS3DividendService amazonS3DividendService; + + @Autowired + private StockDividendRepository stockDividendRepository; + + @MockBean + private ExchangeRateService exchangeRateService; + + @MockBean + private KisService kisService; + + @Transactional + @DisplayName("서버는 권한 및 역할 등의 리소스들을 생성한다") + @Test + void setupResources() { + // given + int limit = 100; + List stocks = writeStocks(limit); + List stockDividends = writeStockDividends(stocks, limit); + + doNothing().when(exchangeRateService).updateExchangeRates(); + doNothing().when(kisService).refreshCurrentPrice(); + doNothing().when(kisService).refreshClosingPrice(); + // when + setupDataLoader.setupResources(); + // then + assertThat(roleRepository.findAll()) + .hasSize(3) + .containsExactlyInAnyOrder( + Role.create("ROLE_ADMIN", "관리자"), + Role.create("ROLE_MANAGER", "매니저"), + Role.create("ROLE_USER", "회원") + ); + assertThat(memberRepository.findAll()) + .hasSize(3) + .containsExactlyInAnyOrder( + Member.localMember(adminProperties.getEmail(), adminProperties.getNickname(), + adminProperties.getPassword()), + Member.localMember(managerProperties.getEmail(), managerProperties.getNickname(), + managerProperties.getPassword()), + Member.localMember(userProperties.getEmail(), userProperties.getNickname(), + userProperties.getPassword()) + ); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + MemberAuthentication memberAuthentication = MemberAuthentication.from( + memberRepository.findMemberByEmailAndProvider(adminProperties.getEmail(), "local").orElseThrow() + ); + assertThat(authentication) + .extracting(Authentication::getPrincipal, Authentication::getCredentials) + .containsExactly(memberAuthentication, Strings.EMPTY); + assertThat(authentication.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .collect(Collectors.toUnmodifiableSet())) + .containsExactlyElementsOf(memberAuthentication.getRoleSet()); + assertThat(exchangeRateRepository.findAll()) + .hasSize(2) + .containsExactly(ExchangeRate.base("KRW"), ExchangeRate.noneBase("USD", 0.0007316)); + assertThat(stockRepository.findAll()) + .containsExactlyInAnyOrderElementsOf(stocks); + assertThat(stockDividendRepository.findAll()) + .hasSizeGreaterThanOrEqualTo(1) + .containsExactlyInAnyOrderElementsOf(stockDividends); + } + + private List writeStocks(int limit) { + List stocks = stockCsvReader.readStockCsv().stream() + .limit(limit) + .toList(); + amazonS3StockService.writeStocks(stocks); + return stocks; + } + + private List writeStockDividends(List stocks, int limit) { + List stockDividends = stockCsvReader.readDividendCsv(stocks).stream() + .limit(limit) + .toList(); + amazonS3DividendService.writeDividends(stockDividends); + return stockDividends; + } +} diff --git a/src/test/java/codesquad/fineants/infra/s3/service/AmazonS3StockServiceTest.java b/src/test/java/codesquad/fineants/infra/s3/service/AmazonS3StockServiceTest.java index 0157c56a8..66439bc8f 100644 --- a/src/test/java/codesquad/fineants/infra/s3/service/AmazonS3StockServiceTest.java +++ b/src/test/java/codesquad/fineants/infra/s3/service/AmazonS3StockServiceTest.java @@ -20,7 +20,7 @@ class AmazonS3StockServiceTest extends AbstractContainerBaseTest { @Test void writeStocks() { // given - Stock stock = Stock.of("000370", "한화손해보험보통주", "Hanwha General Insurance Co.,Ltd.", "KR7000370007", "보험", + Stock stock = Stock.of("000370", "한화손해보험보통주", "\"Hanwha General Insurance Co.,Ltd.\"", "KR7000370007", "보험", Market.KOSPI); // when amazonS3StockService.writeStocks(List.of(stock)); @@ -31,7 +31,7 @@ void writeStocks() { Assertions.assertThat(findStock) .extracting(Stock::getTickerSymbol, Stock::getCompanyName, Stock::getCompanyNameEng, Stock::getStockCode, Stock::getSector, Stock::getMarket) - .containsExactly("000370", "한화손해보험보통주", "Hanwha General Insurance Co.,Ltd.", "KR7000370007", "보험", + .containsExactly("000370", "한화손해보험보통주", "\"Hanwha General Insurance Co.,Ltd.\"", "KR7000370007", "보험", Market.KOSPI); } } diff --git a/src/test/resources/dividends.csv b/src/test/resources/dividends.csv new file mode 100644 index 000000000..6d75468b3 --- /dev/null +++ b/src/test/resources/dividends.csv @@ -0,0 +1,328 @@ +id,dividend,recordDate,paymentDate,stockCode +1,2500,20240327,20240418,KR7029780004 +2,0,20240630,,KR7001080001 +3,100,20240329,20240419,KR7009180001 +4,100,20240630,20240814,KR7008930000 +5,16005,20240327,20240419,KR7000811000 +6,16000,20240327,20240419,KR7000810002 +7,200,20240630,20240726,KR7265520007 +8,5600,20240320,20240415,KR7000270009 +9,3000,20240405,20240426,KR700104K010 +10,3050,20240405,20240426,KR7001041003 +11,100,20240331,20240705,KR7067010009 +12,86,20240331,20240705,KR7357430008 +13,3000,20240405,20240426,KR7001040005 +14,6300,20240331,20240419,KR7086280005 +15,800,20240401,20240418,KR7049770001 +16,210,20240814,,KR7000240002 +17,100,20240229,20240412,KR7148150006 +18,2000,20240630,20240719,KR7134380005 +19,850,20240329,20240419,KR7005941000 +20,800,20240329,20240419,KR7005940002 +21,157,20240430,20240809,KR7451800007 +22,361,20240630,20240820,KR7005931001 +23,300,20240630,20240809,KR7038390001 +24,361,20240331,20240520,KR7005931001 +25,361,20240630,20240820,KR7005930003 +26,361,20240331,20240520,KR7005930003 +27,1430,20240401,20240425,KR7307950006 +28,2000,20240630,20240813,KR7005383005 +29,2000,20240331,20240514,KR7005383005 +30,8450,20240229,20240419,KR7005383005 +31,2000,20240630,20240813,KR7005381009 +32,2000,20240331,20240514,KR7005381009 +33,8450,20240229,20240419,KR7005381009 +34,2000,20240630,20240813,KR7005382007 +35,2000,20240331,20240514,KR7005382007 +36,8500,20240229,20240419,KR7005382007 +37,0,20240630,,KR7005390000 +38,220,20240630,20240809,KR7049720006 +39,120,20240331,20240703,KR7396690000 +40,500,20240703,20240723,KR7190650002 +41,0,20240331,,KR7190650002 +42,0,20240630,,KR7050860006 +43,5000,20240402,20240418,KR7039130000 +44,160,20240402,20240419,KR7131970006 +45,500,20240630,20240829,KR7096240007 +46,500,20240812,20240826,KR7006121008 +47,60,20240329,20240422,KR7204610000 +48,500,20240812,20240826,KR7006120000 +49,2000,20240630,20240813,KR7005380001 +50,2000,20240331,20240514,KR7005380001 +51,8400,20240229,20240419,KR7005380001 +52,1000,20240331,20240419,KR7015360001 +53,642,20240331,20240627,KR7293940003 +54,150,20240322,20240409,KR7030210009 +55,2000,20240403,20240419,KR7139480008 +56,2000,20240630,20240816,KR7002960003 +57,500,20240630,20240730,KR7030200000 +58,500,20240331,20240513,KR7030200000 +59,50,20240229,20240415,KR7246250005 +60,380,20240630,20240830,KR7088980008 +61,60,20240630,20240725,KR7337930002 +62,40,20240228,20240425,KR7337930002 +63,1000,20240630,20240807,KR7002380004 +64,7000,20240229,20240412,KR7002380004 +65,50,20240731,20240814,KR7002900009 +66,0,20240630,,KR7093240000 +67,110,20240301,20240419,KR7002900009 +68,120,20240331,20240718,KR7092440007 +69,500,20240331,20240531,KR7008870008 +70,50,20240630,20240806,KR7003780004 +71,1200,20240630,,KR7033780008 +72,5,20240630,,KR7013700000 +73,0,20240630,,KR7056190002 +74,600,20240630,20240813,KR7086790003 +75,600,20240331,20240510,KR7086790003 +76,1600,20240228,20240409,KR7086790003 +77,0,20240630,,KR7334970001 +78,150,20240329,20240418,KR7088350004 +79,0,20240630,,HK0000307485 +80,400,20240331,20240425,KR7264660002 +81,400,20240630,20240729,KR7194370003 +82,650,20240326,20240419,KR7000721001 +83,600,20240326,20240419,KR7000720003 +84,400,20240329,20240419,KR7001500008 +85,1000,20240630,20240813,KR7012330007 +86,3500,20240325,20240419,KR7012330007 +87,25,20240402,20240425,KR7052960002 +88,2000,20240402,20240426,KR7000152009 +89,2000,20240402,20240426,KR7000150003 +90,2050,20240402,20240426,KR7000151001 +91,140,20240531,,KR7338100001 +92,500,20240401,20240424,KR7000120006 +93,800,20240709,20240724,KR7462520008 +94,30,20240331,20240719,KR7020180006 +95,10000,20240630,,KR7010130003 +96,0,20240630,,KR7178600003 +97,5300,20240329,20240419,KR7005830005 +98,50,20240630,20240823,KR7049070006 +99,540,20240403,20240424,KR7003690005 +100,200,20240329,20240419,KR7016610008 +101,1100,20240401,20240418,KR7006040000 +102,250,20240329,20240424,KR7003670007 +103,103,20240630,,KR7330590001 +104,500,20240630,20240812,KR7004450003 +105,450,20240402,20240423,KR7051500007 +106,100,20240403,20240419,KR7010100006 +107,0,20240630,,KR7060720000 +108,0,20240630,,KR8702070002 +109,791,20240630,20240808,KR7105560007 +110,784,20240331,20240509,KR7105560007 +111,1530,20240229,20240411,KR7105560007 +112,0,20240930,,KR7002840007 +113,500,20240630,20240723,KR7002840007 +114,0,20240930,,KR7381970003 +115,300,20240630,20240820,KR7381970003 +116,250,20240331,20240528,KR7381970003 +117,0,20240831,,KR7334890001 +118,210,20240229,20240610,KR7334890001 +119,2063,20240329,20240419,KR7001450006 +120,100,20240630,20240801,KR7002230001 +121,35,20240403,20240424,KR7009520008 +122,0,20240630,,KR7088260005 +123,700,20240630,20240812,KR7000640003 +124,300,20240630,20240814,KR7000660001 +125,300,20240331,20240514,KR7000660001 +126,0,20240630,,KR7350520003 +127,0,20240630,,KR7355690009 +128,450,20240731,20240813,KR7017940008 +129,0,20240630,,KR7169330008 +130,50,20240630,20240806,KR7010640001 +131,80,20240329,20240416,KR7405920000 +132,152,20240531,,KR7357250000 +133,800,20240630,20240812,KR7241560002 +134,800,20240329,20240423,KR7241560002 +135,200,20240401,20240422,KR7206640005 +136,2000,20240930,,KR7007340003 +137,2500,20240229,20240405,KR7007340003 +138,0,20240630,,KYG2114A1094 +139,800,20240630,20240731,KR7344820006 +140,1400,20240229,20240426,KR7344820006 +141,750,20240403,20240422,KR7031440001 +142,0,20240630,,KR7032800005 +143,300,20240630,20240830,KR7460860000 +144,0,20240630,,KR7053050001 +145,250,20240329,20240419,KR7030610000 +146,500,20240311,20240412,KR7028100006 +147,300,20240630,20240820,KR7003570009 +148,700,20240630,20240731,KR7268280005 +149,100,20240229,20240416,KR7092870005 +150,0,20240229,,KR8392080006 +151,300,20240630,20240821,KR7036530004 +152,1200,20240326,20240416,KR7003542008 +153,0,20240630,,KR7400760005 +154,1250,20240326,20240416,KR7003541000 +155,1200,20240326,20240416,KR7003540002 +156,220,20240813,20240828,KR7352090005 +157,35,20240306,20240327,KR7004310009 +158,61,20240229,20240425,KR7035720002 +159,20,20240331,20240722,KR7289080004 +160,0,20240905,,KR7152550000 +161,0,20240605,,KR7152550000 +162,0,20240305,,KR7152550000 +163,300,20240630,20240822,KR7200670008 +164,275,20240401,20240419,KR7200670008 +165,1000,20240630,20240808,KR7092230002 +166,50,20240630,20240819,KR7340440007 +167,500,20240630,20240813,KR7066570003 +168,0,20240630,,KR7097951008 +169,1000,20240331,20240531,KR7097951008 +170,2550,20240229,20240424,KR7097951008 +171,0,20240630,,KR7097950000 +172,1000,20240331,20240531,KR7097950000 +173,2500,20240229,20240424,KR7097950000 +174,2000,20240805,20240819,KR7018670000 +175,0,20240630,,KR7168490001 +176,0,20240331,,KR7168490001 +177,0,20240731,,KR7432320000 +178,188,20240131,20240502,KR7432320000 +179,220,20240327,20240418,KR7123890006 +180,200,20240630,20240731,KR7002100006 +181,600,20240630,20240820,KR7064960008 +182,0,20240630,,KR7065710006 +183,500,20240630,20240813,KR7066571001 +184,405,20240331,20240412,KR700806K010 +185,400,20240331,20240412,KR7008060006 +186,0,20240630,,KR7114090004 +187,200,20240331,20240415,KR7377740006 +188,138,20240331,20240621,KR7377190004 +189,168,20240531,,KR7357120005 +190,420,20240307,20240329,KR7042700005 +191,100,20240329,20240415,KR7022100002 +192,1500,20240630,20240802,KR7017800004 +193,150,20240630,20240820,KR7100840008 +194,162,20240630,20240715,KR7118990001 +195,137,20240531,,KR7365550003 +196,0,20240930,,KR7096530001 +197,200,20240630,20240827,KR7096530001 +198,200,20240331,20240528,KR7096530001 +199,0,20240930,,KR745014K018 +200,240,20240630,20240719,KR7214370009 +201,0,20240630,,KR7225190008 +202,50,20240331,20240510,KR7225190008 +203,50,20240630,20240807,KR7100250000 +204,0,20240930,,KR7450140009 +205,150,20240403,20240426,KR7024880007 +206,250,20240630,20240814,KR7128940004 +207,300,20240630,20240822,KR7243070000 +208,330,20240401,20240419,KR7243070000 +209,650,20240401,20240418,KR7014821003 +210,225,20240630,20240821,KR7214320004 +211,950,20240401,20240426,KR7214320004 +212,2370,20240401,20240418,KR7009970005 +213,600,20240401,20240418,KR7014820005 +214,0,20240331,,KR7318410008 +215,200,20240930,,KR7213500002 +216,300,20240331,20240419,KR7213500002 +217,550,20240229,20240412,KR7139130009 +218,100,20240401,20240425,KR7009900002 +219,0,20240930,,KR7023450000 +220,1550,20240329,20240417,KR7001271006 +221,0,20240630,,KR7097870000 +222,500,20240630,20240806,KR7025000001 +223,200,20240709,20240730,KR7000480004 +224,1500,20240329,20240417,KR7001270008 +225,50,20240315,20240411,KR7012690004 +226,200,20240816,,KR7138930003 +227,410,20240229,20240405,KR7138930003 +228,118,20240630,,KR7404990004 +229,250,20240403,20240419,KR7005010004 +230,150,20240402,20240426,KR7078020005 +231,100,20240630,,KR7001230002 +232,270,20240403,20240426,KR7010470003 +233,250,20240809,20240823,KR7032640005 +234,0,20240630,,KR7021820006 +235,250,20240331,20240412,KR7122990005 +236,60,20240329,20240422,KR7001200005 +237,0,20240731,,KR7448730002 +238,70,20240430,20240726,KR7448730002 +239,72,20240131,20240430,KR7448730002 +240,50,20240301,20240430,KR7084870005 +241,850,20240404,20240426,KR7011210002 +242,696,20240115,20240418,KR7192440006 +243,50,20240331,20240726,KR7018500009 +244,25,20240328,20240419,KR7010420008 +245,400,20240809,20240823,KR728513K010 +246,0,20240831,,KR7417310000 +247,90,20240531,,KR7417310000 +248,94,20240229,20240530,KR7417310000 +249,400,20240809,20240823,KR7285130001 +250,150,20240630,20240813,KR7094280005 +251,150,20240331,20240514,KR7094280005 +252,150,20240630,,KR7122900004 +253,150,20240331,20240524,KR7122900004 +254,100,20240331,20240419,KR7004710000 +255,0,20240329,20240419,KR7277880001 +256,0,20240630,,KR7348950007 +257,100,20240331,20240419,KR7004150009 +258,400,20240403,20240424,KR7082640004 +259,80,20240730,20240814,KR7083420000 +260,160,20240403,20240426,KR7122310006 +261,350,20240630,20240807,KR7025540006 +262,105,20240630,20240808,KR7175330000 +263,105,20240331,20240508,KR7175330000 +264,735,20240229,20240409,KR7175330000 +265,50,20240630,20240723,KR7105840003 +266,305,20240331,20240412,KR735320K011 +267,900,20240630,20240809,KR7267250009 +268,900,20240331,20240510,KR7267250009 +269,300,20240331,20240412,KR7353200009 +270,1500,20240814,,KR703473K016 +271,3550,20240401,20240426,KR703473K016 +272,200,20240401,20240423,KR7001740000 +273,180,20240630,20240808,KR7316140003 +274,180,20240331,20240514,KR7316140003 +275,640,20240229,20240409,KR7316140003 +276,103,20240630,20240730,KR7078520004 +277,157,20240401,20240429,KR7078520004 +278,66,20240630,,KR7395400005 +279,66,20240331,20240628,KR7395400005 +280,130,20240630,20240814,KR7033920000 +281,130,20240331,20240517,KR7033920000 +282,540,20240630,20240809,KR7055550008 +283,540,20240331,20240510,KR7055550008 +284,525,20240223,20240405,KR7055550008 +285,4500,20240331,20240705,KR7001720002 +286,125,20240816,,KR7010951002 +287,1500,20240814,,KR7034730002 +288,3500,20240401,20240426,KR7034730002 +289,984,20240329,20240425,KR7024110009 +290,217,20240326,20240419,KR7012510004 +291,200,20240329,20240415,KR7000370007 +292,0,20240630,,KR7009240003 +293,750,20240331,20240517,KR7009240003 +294,50,20240630,,KR7189690001 +295,125,20240816,,KR7010950004 +296,1000,20240726,20240809,KR7011170008 +297,830,20240630,20240814,KR7017670001 +298,100,20240630,20240726,KR7076340009 +299,830,20240331,20240514,KR7017670001 +300,0,20240630,,KR7030960009 +301,200,20240321,20240418,KR7006840003 +302,2500,20240630,,KR7005490008 +303,2500,20240331,20240603,KR7005490008 +304,2500,20240229,20240419,KR7005490008 +305,150,20240329,20240423,KR700680K019 +306,150,20240329,20240423,KR7006800007 +307,165,20240329,20240423,KR7006801005 +308,22,20240329,20240415,KR7417200003 +309,50,20240403,20240425,KR7049800006 +310,2000,20240329,20240422,KR7060980000 +311,3000,20240329,20240416,KR7004690004 +312,100,20240329,20240415,KR7006220008 +313,510,20240115,20240415,KR7293480000 +314,1000,20240229,20240405,KR7282690007 +315,30,20240229,20240419,KR7271830002 +316,2100,20240321,20240408,KR7014680003 +317,0,20240831,,KR7093380004 +318,50,20240311,20240416,KR7267790004 +319,1615,20240329,20240424,KR7058430000 +320,275,20240630,20240823,KR7084110006 +321,275,20240401,20240419,KR7084110006 +322,200,20240331,20240422,KR7083310003 +323,1000,20240331,20240422,KR7047050000 +324,140,20240630,20240724,KR7004080008 +325,1000,20240329,20240426,KR7004020004 +326,200,20240812,,KR7210980009 +327,50,20240630,20240823,KR7067080002 \ No newline at end of file diff --git a/src/main/resources/stocks.csv b/src/test/resources/stocks.csv similarity index 100% rename from src/main/resources/stocks.csv rename to src/test/resources/stocks.csv