본문 바로가기

728x90
반응형
728x90
반응형
실전머신러닝 12

워렌 버핏도 쓴다는 켈리의 공식, 과연 유용한 것인가? https://youtu.be/HXajHxFfYtQ 안녕하세요, 다빈치스탁의 시청자 여러분. 오늘은 투자의 거장 워렌 버핏도 높이 평가한다는 켈리의 공식에 대해 살펴보겠습니다. 켈리 공식은 반복적으로 베팅을 할 때 파산하지 않고 최대의 수익을 얻기 위해 어느 정도 비율로 베팅해야 하는지 계산하는 공식으로, 벨 연구소에서 근무했던 Kelly라는 연구원이 개발했는데요. 그러나 이 공식의 발표 초기만 하더라도 현실성에 대해 많은 의문점이 제기 되었습니다.  이에 켈리는 몇 가지 실험을 통해 단순화된 가정 하의 대부분의 도박과 몇몇 투자 시나리오에서, 장기적으로 다른 어떤 전략보다 우월한 성과를 낸다는 현실적 유용성을 검증하였습니다. 하지만 이건 모든 게임이나 투자에 적용되지는 않습니다. 왜 그런지 살펴볼까요?.. 2024. 6. 7.
인공지능이 파헤친 세력의 숨겨진 패턴, 파이썬 강화학습으로 마스터하는 세력주 공략법! https://youtu.be/ynl5WsPHodw 안녕하세요, 다빈치스탁의 시청자 여러분. 오늘은 주식 투자의 핵심인 매수와 매도 전략에 대해 깊이 있게 다뤄보려고 합니다. '매수는 과학, 매도는 예술’이라는 증시 격언처럼, 좋은 종목을 고르는 것만큼이나 그 종목을 적절한 시점에 매도하는 것이 역시 매우 중요합니다. 그래서 오늘은 인공지능 강화학습을 활용하여 세력의 차트 패턴을 학습하고, 이를 바탕으로 스스로 매매 비중을 조절하는 전략에 대해 알아볼 건데요, 이 방법은 세력의 움직임을 파악하고 그에 따라 투자 결정을 내리는 데 큰 도움이 됩니다. 먼저, 강화학습이란 무엇인지 간단히 설명드리자면, 강화학습은 인공지능이 환경과 상호작용하며 보상을 최대화하는 방법을 스스로 학습하는 기술입니다. 주식 시장에서.. 2024. 4. 21.
인공지능을 활용한 최적화된 MACD지표로 수익성을 강화하고 스마트하게 투자하기! https://youtu.be/CLnfIgnfj5c 안녕하세요, 다빈치스탁입니다. 오늘은 인공지능을 통해 주식투자에서 자주 사용되는 기술적 지표들의 최적 파라메터를 찾는 방법에 대해 알아보겠습니다. 기술적 지표는 시장의 패턴을 식별하고 예측하는 데 유용하지만, 모든 종목에 동일한 설정을 적용하는 것은 때때로 오류를 초래할 수 있습니다. 예를 들어, MACD 지표의 골든크로스와 데드크로스는 매수와 매도의 신호로 해석되지만, 이러한 신호들은 항상 정확하지 않으며 거짓 신호를 줄 수 있습니다. 이는 다양한 성장 및 순환주기를 가진 종목들에 단일 파라메터를 적용하려는 경향 때문입니다. 이러한 문제를 해결하기 위해, 강화 학습을 사용하여 각 종목별로 최적의 파라메터 설정을 찾아 보겠습니다. 강화 학습은 에이전트가.. 2024. 4. 18.
의사결정나무를 이용해서 HTS 조건검색식 만들어보기 의사결정트리에 관한 이론적 배경은 지난번 포스트(2020/09/10 - [데이터마이닝 with R/인과관계분석 with R] - 의사결정나무(Decision Tree) with R)를 참고하면 되는데 그래도 다시 한번 간략히 복습하고 넘어가자. 트리를 만드는 과정은 재귀적 분할이라고도 하는데 임의의 데이터를 부분 집합으로 나누고 그 다음은 더 작은 부분집합으로 반복적으로 분할하다 보면 나누어진 집단의 속성이 매우 동질적이어서 더 이상 부분으로 나누기 힘든 구간까지 반복하는 방법을 의미한다. 지난번 포스트에서 rpart를 이용한 트리모형을 구현했다면 이번 포스트에서는 C5.0 엔진을 이용해 볼 예정인데 rpart 에 비해 우수한 점은 수치나 명목에 대해서 특별히 가리지 않고 중요하지 않은 속성치는 알아서 .. 2020. 11. 12.
KNN, 나이브베이즈 분류를 이용해서 종목분석하기 이전 포스트 이베스트편(2020/11/09 - [증권사 API] - 특정기업의 FNG 요약, 마켓컨센서스 가져오기)를 잘 활용하면 아래의 그림과 같이 코스피, 코스닥 시가총액 상위종목들의 에프앤가이드 요약 재무비율과 마켓 컨센서스(시장의견)를 가져올 수 있다. 물론 여러번 반복과정을 거쳐야 아래와 같은 로데이터를 얻을 수 있으니 귀찮은 사람은 첨부된 엑셀파일을 가져다가 써도 되겠다. 자, 이제부터 우리가 무엇을 하는가하면! 바로 특정종목들의 재무비율을 속성데이터로 하고 해당 종목에 대한 마켓 컨센서스를 정답 라벨링으로 간주하고 분류를 수행해 볼 예정이다. 이러한 것을 왜하는가? 그렇다. 통상 변두리의 종목들, 스몰캡 종목에 대해서 보고서를 작성하는 애널리스트들은 많지 않다. 그러나 유진파마의 이론에서도 .. 2020. 11. 10.
머신러닝 개요 with R 우선 AI를 설계하기 전에 하고자하는 일(프로젝트, 연구 기타 등)의 목적에 맞는 방법론을 선택해야 삽질을 덜 할 수 있다. 위의 표에서 간단하게 요약한 것처럼 데이터가 범주형의 자료(라벨링)인가 혹은 수치형(관계분석)인가에 따라 분류와 수치예측으로 구분이 된다. 그러면 이제 위의 표를 기준으로 하나씩 순차적으로 살펴보자. 자, 우선 분류의 문제를 예로 들어보면 어떤 기업이 디폴트(채무불이행)할 것인가 아닌가를 분류를 하기 위해서는 모든 기업들의 디폴트한 기업 그렇지 않고 잘 버티는 기업에 대한 라벨링이 된 데이터와 이들 기업들 개별에 대한 부채비율, 유동비율, 순이익률, 매출성장률 등의 재무비율 속성 데이터가 필요하다. 반드시 그렇다고 볼 순 없지만 부채비율은 높고 유동비율은 낮은 기업들은 디폴트 그룹.. 2020. 11. 6.
Keras 를 이용한 텍스트마이닝으로 뉴스예측하기 with Python 지난 포스트 (2020/09/04 - [머신러닝 with Python/텍스트마이닝 with Python] - Keras 를 이용한 텍스트마이닝 with Python)에서 학습했던 모델을 이용하여 삼성전자의 뉴스를 학습한 뒤 "삼성전자의 주가 전망"에 대한 예측을 진행해보았다. 아래 첨부된 뉴스크롤링 파일(005930.txt)를 다운받아 파이썬 스크립트의 같은 경로에 저장하고 아래의 코드를 돌리면 삼성전자의 주가 전망은 "초 긍정적인 긍정적인 상황이라고 미 2일 현지시간 보도했다 보도했다 보도했다" 라고 예측된 문장(아래의 코드에 predict함수)이 나오게 된다. 문맥이 상당히 매끄럽지 못하다. 뭐 얼핏 봐서는 그런데로 향후 주가전망은 좋을 것이다라는 점을 추측할 수는 있겠지만 동사를 여러번 반복했다. .. 2020. 9. 17.
신경망분석(Neural Net) with R - 실전편 이론적 백그라운드는 지난번 포스트 2020/09/10 - [머신러닝 with R/데이터마이닝 with R] - 신경망분석(Neural Net) with R - 이론편 에서 상세히 다루었으니 이번에는 바로 실전에 돌입한다. 우선 뉴널넷과 SVM의 성능비교를 위해서 stepwise 회귀분석과 비교를 실행해 보았다. 아래의 코드에서는 학습데이터와 테스트 데이터를 이분화하지 않고 단순히 잔차제곱합과 R^2 값만 계산하여 모델의 성능을 비교해봤지만 과적합 여부 등을 판단하기 위해서는 predict를 테스트데이터에 적용하여 어느 정도의 적중도가 있는지를 함께 검토해봐야 한다. Python 에서는 train, test split 이런 api 도 제공을 하지만 R에서는 직접 만들어줘야 한다. 엄청 번거롭다. 그래서 다.. 2020. 9. 10.
신경망분석(Neural Net) with R - 이론편 Tensorflow를 이용한 Python 머신러닝에서도 한번은 다룰 내용이지만 R 역시 원리는 동일하기 때문에 잠시 짚고 넘어가자. 인공신경망은 인간 두뇌구조와 유사한 뇌신경망의 원리를 모방한 기술로 학습을 통하여 데이터들간의 패턴 혹은 관계를 습득하는 방식을 의미한다. 이게 사실 인공지능이라는 아주 거창한 말로 불려서 그런거지 데이터마이닝의 관점에서 본다면 복잡한 구조를 가진 빅데이터로부터 예측문제를 해결하기 위한 (비)선형 분석방법이라고도 볼 수 있다. 우리가 일반적으로 인공신경망이라 함은 FFNN(Feedforward Neural Network)와 같은 계층적 네트워크를 의미하며 가장 먼저 개발되어 보편적으로 알려져 있다. 그 중에서 simple layer(광의의 의미에서 머신러닝), multi l.. 2020. 9. 10.
Keras 를 이용한 텍스트마이닝 with Python 지난 포스트(2020/09/04 - [텍스트마이닝 with R & Python] - MySQL 데이터베이스 연동하기 with Python)에 이어서 지금부터는 데이터베이스에 저장된 종목코드와 종목을 불러와서 모든 종목들의 뉴스를 크롤링한 뒤 이를 토대로 텍스트마이닝을 수행해보자. 아래의 코드를 살펴보면 데이터베이스에 저장된 종목명을 가져와서 뒤에 주가전망이라는 키워드를 조합한다. 예를 들면 "삼성전자 주가전망"에 대해서 뉴스를 크롤링하고 정렬은 유사도순으로, 한번에 100건의 검색을 수행해준다. 다만 유의할 점은 종목이 대략 2천여개 정도 되기 때문에 그냥 경로에 집어넣으면 폴더가 상당히 지저분해진다. 따라서 파이썬 파일이 있는 경로에 textfile 이라는 새로운 폴더를 하나 생성해주고 거기다가 데이터.. 2020. 9. 4.
MySQL 데이터베이스 연동하기 with Python 지난 포스트에서는 삼성전자 한 종목에 대해서 뉴스크롤링을 하는 방법을 알아봤다. 그러나 우리가 필요한 건 뭐다? 그렇다. 빅데이터이다. 네이버에서 25,000건/일 사용량에 대해서는 특별히 제약도 두지 않는데 1건만 쓰기 아깝다. 그러니 이제부터는 MySQL(세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 위키백과)에 종목마스터(코스피, 코스닥 전체 유니버스)를 저장하고 해당 유니버스 전체를 크롤링하는 방법에 대해서 한번 알아보자. 그럼 첫 째, MySQL(dev.mysql.com/downloads/mysql/) 홈페이지에 .. 2020. 9. 4.
뉴스 크롤링 with Python 매번 느끼는거지만 테마주, 급등주 등 시장은 참 요란도 하다. 어닝서프라이즈(호실적)라고 해서 반드시 호재로 작용하는 것도 아니고 어닝쇼크(실적악화)라고 해서 또 악재로만 작용하는 것도 아니다. 증시격언에 소문에 사서 뉴스에 팔라는 말이 어떤 경우에는 정확히 들어맞기도 한다. 그래서 한 때는 텍스트마이닝 따위는 엄청 쓸모없는 짓이라 생각했었다. 비록 무쓸모일지도 모르지만 시장이 하락한다면 왜 하락하는지를 알아야 그나마 마음이 좀 진정되는 우리는 감정의 동물이다. 이미 벌어진 결과는 어쩔 수 없다고 하더라도 왜? 라는 질문에 대한 답이 없을 경우 더 불안해하는 것이 사람인지라 그런 의미에서는 뉴스를 분석해보는 것도 나쁘진 않을 것 같다. 그리고 드물기는 하지만 뉴스가 선행성 시그널로 작용할때도 있기에 뉴스.. 2020. 9. 3.