본문 바로가기
728x90

분류 전체보기128

2024 Metastock 트레이더 컨퍼런스 Metastock Online Traders Conference February 2024 안녕하세요, 쿼카퀀트입니다. 저번주 월요일부터 6일간 Metastock에서 트레이더 컨퍼런스를 주최했습니다. 47명의 트레이더가 나와 각자 약 1시간 동안 자신의 전략에 대해 강의했습니다. 강의 링크 한국 시간으로 새벽 2시에 컨퍼런스가 시작되고, 한 타임에 9시간 가량 강의가 이어지다보니 라이브로 보기 쉽지 않았는데요, 다행히 Metastock 측에서 유튜브에 관련 영상을 남겨줘 앞으로도 볼 수 있게 되었습니다(지금 보니 2023년 컨퍼런스 내용도 남아있네요!) 총 6일간 진행된 컨퍼런스고, 링크는 여기있습니다. Day 1. Stock & Options Traders Conference Day 2. Stock & .. 2024. 3. 7.
2023년 주식 계좌 수익 결산 안녕하세요, 쿼카퀀트입니다. 요즘 일이 바빠지다보니 좀 많이 늦었지만.. 작년 한 해 한국 주식 계좌 수익률 결산을 한번 해 보고자 합니다. 전 한국 주식 시장에선 두 가지 전략을 중심으로 운용중입니다. 수익률이 높진 않지만 매우 안정적인 전략(기대 연 10~15% 수익, MDD 5% 미만) 기대수익률은 높지만 변동성이 큰 전략(기대 연 30~40% 수익, MDD 20% 이상 가능) 이렇게 두 가지입니다. 두 전략 모두 완전히 자동화된 상태라, 전략에 추가할 개선점이 있을 때를 제외하곤 손을 대지 않는 상태입니다. 예전엔 장 이상한 날엔 개인 판단으로 알고리즘 끄고 손매매도 했었는데, 지나고보면 알고리즘에 맡기고 건들지 않는게 제일 나았겠더라구요ㅎㅎ 그래서 2023년은 단 한번도 손매매 없이 알고리즘으로.. 2024. 3. 1.
[Python] 일별 timestamp 만들기 시계열 데이터의 index를 날짜로 설정하고 싶을 때, 데이터 포인트가 n개 있으면 날짜도 n개가 필요합니다. 이때 n개의 날짜를 쉽게 만들 수 있는 함수 'rrule'을 소개드리겠습니다. rrule rrule은 dateutil에 포함된 함수로, 파이썬에 기본으로 설치돼있습니다. 간단하게 rrule 사용 코드를 보면, 아래와 같습니다. from datetime import datetime, timedelta from dateutil.rrule import rrule, DAILY list(rrule(DAILY, dtstart=datetime.now() - timedelta(days=100), until=datetime.now())) 'dtstart' 날짜부터 'until' 날짜까지 1일 주기(DAILY) .. 2024. 2. 15.
파이썬 주식 트레이딩 시스템 (2) - 일별 주가 데이터 조회 이번엔 발급받은 API키와 토큰으로 삼성전자의 과거 일별 데이터를 받아오겠습니다. 1. 전달 데이터 구조 먼저, 증권사 서버에 우리가 필요로 하는 데이터가 어떤건지 알려줘야겠죠? 우리는 주식 시세를 받아올 예정이므로, 관련 호출인 KIS Developers의 '국내주식시세 - 주식현재가 시세' 설명서에 들어갑니다. 설명서에는 입력해야하는 Headers, Params가 적혀져 있습니다. 아래 스크린샷과 같네요. 전달해야하는 값이 많아보이지만 겁먹지 마세요 어떻게 입력해야하는지 다 알려드릴게요ㅎㅎ 먼저 Headers는 모든 호출에서 거의 동일한 구조니까, 한번 만들어두고 계속 돌려쓰면 됩니다. 다음으로 Query Parameter는 각 호출 종류(주문, 시세조회 등)에 따라 필요로 하는 데이터를 입력해줍니.. 2024. 2. 4.
파이썬 주식 트레이딩 시스템 (1) - API 발급 안녕하세요, 이전에 REST API로 개발 가능한 국내 증권사 API 라는 주제로 블로그 글을 한번 작성한 적이 있는데요, 이 중 한국투자증권 API를 활용해 주가 데이터 수집, 잔고 조회, 실제 주문부터 제가 실제로 API 활용 매매를 하며 얻은 사소한 팁까지 블로깅을 해보려 합니다. 한국투자증권의 API는 두 가지(기존 API, KIS Developers)로 나뉘는데요, 기존 API는 윈도우에서 32bit 파이썬으로만 연결할 수 있어 개발이 어려운 반면, KIS Developers는 REST API를 활용하기 때문에 리눅스 환경에서 쉽게 개발할 수 있습니다. API 발급 증권사 API와 파이썬을 연결하기 위해 가장 먼저 API를 발급받아야 합니다. 이번 포스팅에선 API를 발급받는 방법을 순서대로 .. 2023. 12. 9.
코스닥 선물 거래 방법과 증거금 예전 글에서 선물 거래 방법과 한 계약에 필요한 증거금 등을 설명한 글을 작성한 적 있는데요(아래 링크 참고) 선물 거래 방법 - 가격 계산 방법과 증거금, 일일정산, 만기란? 선물 거래 방법 - 가격 계산 방법과 증거금, 일일정산, 만기란? 선물은 호가창이 주가 호가창과 특별히 다르지 않습니다. 때문에 호가창은 넘어가고, 선물 1계약의 가격 계산과 증거금에 대해 정리해봅니다. 선물 1계약의 가격 코스피200선물을 예로 들면, 아 junyoru.tistory.com 위 글은 코스피 선물에 대한 글이기에 다른 선물(달러/채권/코스닥/개별종목/코스피미니 등)과는 증거금 기준이 조금 달랐습니다. 그래서 오늘은, 국내 선물 종목 중 두 번째로 참여자가 많은 코스닥선물에 대해 간단히 설명해 보도록 하겠습니다. 코.. 2023. 8. 20.
REST API로 개발 가능한 국내 증권사 API 업비트, 바이낸스같은 코인 거래소는 이미 예전부터 REST API를 사용했지만, 국내 증권사는 com, dll 등 windows를 기반으로만 사용 가능한 api만을 제공해 왔습니다. 하지만, 최근들어 국내 증권사 api도 REST API로 갈아타려는 움직임이 보이고 있습니다. 오늘 기준으로 두 증권사가 REST API를 지원하고 있는데요, 1. 한국투자증권 KIS API (link) 가장 먼저 REST API를 지원한 곳은 한국투자증권입니다. 처음 출시됐을때보다 지원해주는 기능은 점점 늘고있지만, 아직 초기라 기능 제한이 있습니다. 기존 dll 요청에선 초당 10건 요청이 가능했지만 REST API에선 초당 2건 요청만 되거나, 받아올 수 있는 과거 기간이 최근 30일로만 가능한 경우가 있습니다. 때문에.. 2023. 7. 23.
[Python] Pandas보다 빠른 Polars 일봉, 1시간봉 정도의 큰 timeframe을 다룰 땐 데이터 사이즈가 그렇게 크지 않습니다. 한 종목의 일봉은 10년동안 2500개만 생길테니까요. 이정도 데이터면 pandas도 충분합니다. 하지만, 수천 종목의 1분봉/틱 데이터를 pandas로 다루긴 힘듭니다. 이에 대한 해결책으로 polars라는 패키지가 있습니다.(polars 설명: https://medium.com/cuenex/pandas-2-0-vs-polars-the-ultimate-battle-a378eb75d6d1) 위 설명을 한 장의 그림으로 요약하면, 아래와 같습니다. 모든 면에서 Polars가 Pandas보다 빠르죠. 때문에, 저는 원래 pandas로 하던 작업을 모두 polars로 갈아타고 있습니다. 속도가 빠른 이유는, rust.. 2023. 7. 8.
퀀트 시험 준비를 위한 자료/사이트 안녕하세요, 이번엔 금융권 퀀트 관련 인터뷰 준비를 위해 도움이 될 수 있는 사이트를 소개해 드리고자 합니다. 본격적인 인터뷰 전 간단한 시험을 보게 되는데요, 여기에선 크게 수학, 확률, 그리고 Brainteaser 문제가 나옵니다. 이 시험을 대비하기 위해 문제를 모아둔 사이트나 책이 있는데요, 먼저 사이트들에 대해 설명해드리도록 하겠습니다. 사이트 A Collection of Quant Riddles With Answers 이 사이트엔 88문제의 Brainteaser가 있습니다. 난이도에 따라 색상으로 표시가 되어있으니, 원하는 난이도만 풀 수 있다는 장점이 있으며, 사이트 구성이나 그림도 깔끔해, 시각적으로 가장 보기 좋은 사이트인 것 같습니다. http://puzzles.nigelcoldwell.. 2022. 2. 27.
[Solidity] 컨트랙트에 입금된 이더리움 출금하기 NFT 스마트 컨트랙트를 만들어 판매가 시작되면, 구매자들의 이더리움이 내 스마트 컨트랙트에 저장됩니다. 이 돈은 아직 내 지갑에 들어온 돈이 아니기에, 출금 신청을 해야만 합니다. 따라서 Solidity 코드 안에 출금 기능을 넣어봅시다. 아래 코드처럼 함수를 만들어주면 됩니다. contract MyContract is ERC721URIStorage, Ownable { function withdraw() external payable onlyOwner() { payable(owner()).transfer(address(this).balance); } } 예시에선 두 개의 클래스를 상속받고 있는데요, 이 중 필요한 클래스는 Ownable입니다. 컨트랙트 주인의 계좌에 송금하는 코드이므로 계좌 주인만 사용.. 2022. 2. 20.
Pivot Point로 주가 추세 구하기 안녕하세요, 바쁘다보니 점점 블로그에 글 쓰는 빈도가 줄어들고 있군요.. 오늘은 오랜만에 글 쓰는 김에, 원래 자주 다루고 싶었던 주가 데이터 관련 내용을 다뤄보고자 합니다. 시작하기 전에, 이번 블로그 내용 및 예시 출처는 위 Adam Grimes의 The Art and Science of Technical Analysis 책을 참고했습니다. Pivot Point란? 오늘은 Pivot Point 지표를 계산해 볼 건데요, Pivot Point란, 단어에서도 알 수 있듯이 주가의 방향이 꺾이는(Pivot) 시점을 의미합니다. 즉, 주가가 상승하다가 하락으로 변하는 시점, 혹은 하락하다가 상승으로 변하는 시점을 의미합니다. 추세가 바뀐다고도 표현하죠? 이 '변하는 시점'은 주변 날짜보다 고가(High)/저.. 2022. 2. 13.
Hardhat으로 Rinkeby 테스트넷에 스마트 컨트랙트 업로드하기 스마트 컨트랙트 개발이 완료됐다면, 이더리움 메인넷에 업로드하기 전, 먼저 제대로 작동하는지 테스트를 해볼겁니다. 기존처럼 단순히 로컬 hardhat 네트워크에서 테스트하는게 아니라, 실제 내 지갑과 연결하고 스마트 컨트랙트가 작동하는 모습을 확인하고 싶다면, Rinkeby라는 테스트넷을 사용해야 합니다. Rinkeby외에도 여러 테스트넷이 있지만, 개인적으로 가장 편리하다고 생각하는 네트워크기 때문에, 이를 기준으로 설명해보겠습니다. Rinkeby 계정 만들기 이 포스트를 보시는 분들은 모두 Solidity 개발을 해보신 분들일테니, 아마 Metamask 계정은 이미 있으실겁니다. Metamask를 켜면 아래처럼 내 계좌가 뜨는데요, 맨 위에 'Rinkeby 테스트 네트워크'라고 뜨는게 보이시나요? 지.. 2022. 1. 14.
Hashlips_art_engine 사용해 NFT metadata 만들기 오늘은 여러 layer로 이뤄진 NFT 컬렉션을 만들어 보겠습니다. 사용할 패키지는 Hashlips_art_engine입니다. 자체 유튜브에서도 자세히 설명이 나와있으니, 영상으로 보고싶으신 분은 링크를 따라 가주세요. 유튜브에선 여러 기능을 소개하다보니 내용이 헤깔리기도 해, 여기선 간단히 내용 정리하는 정도로 진행하겠습니다. 1. Github에서 패키지 받아오기 여긴 Github를 사용할 줄 아는 분이라면 쉬울거에요 터미널로 본인이 원하는 폴더에 들어간 후, 아래 코드를 입력해 패키지를 다운로드해 주세요 git clone https://github.com/HashLips/hashlips_art_engine.git 2. Dependencies 설치 1번이 끝났다면 아래와 같이 폴더가 하나 생겼을텐데요,.. 2022. 1. 5.
Hardhat에서 컨트랙트로 이더리움 송금하기 이번엔 Hardhat에서 테스트할 때, 내 월렛에서 컨트랙트로 이더리움을 보내는 방법을 알려드리겠습니다. 보내는 방법은 엄청 간단한데, 바로 코드부터 보시죠 const {ethers} = require("hardhat"); const mc = await ethers.getContractFactory("MyContract"); newContract = await mc.deploy(); const create1 = await newContract.doSomething({value: ethers.utils.parseEther("0.06")}); 먼저 Solidity로 만든 MyContract를 불러와 deploy합니다. 이렇게 만든 컨트랙트를 newContract라 부르도록 하겠습니다. 그 다음, myCont.. 2021. 12. 23.
Hardhat에서 테스트용 월렛 정보 받아오기 Hardhat은 Remix처럼 버튼 클릭으로 데이터를 받아오는 방식이 아니기에, 테스트용 월렛 정보를 받아오기 위해선 javascript를 사용해야 합니다. 바로 코드부터 확인하겠습니다. const {ethers, waffle} = require("hardhat") const provider = waffle.provider; const [ad1, ad2, ad3] = await ethers.getSigners(); console.log(ad1.address); console.log(ad2.address); const balance1 = await provider.getBalance(ad1.address); bal1 = ethers.utils.formatEther(balance1); console.log(.. 2021. 12. 23.
VSCode에서 Hardhat 사용 시 초기 세팅 npx hardhat compile로 솔리디티 프로젝트 생성 후 VSCode에서 해당 프로젝트를 수정할 경우, File not Found: 라는 에러와 함께 모듈 연결이 제대로 되지 않는 현상이 발생합니다. 이 문제를 해결하는 방법은 다음과 같습니다. VSCode에서 해당 프로젝트 폴더를 살펴보면, 아래처럼 .vscode폴더에 settings.json이란 파일이 있는데, 이 settings.json이 처음엔 빈 내용으로 되어있는 것을 확인할 수 있습니다. 여기를 아래 코드처럼 바꿔주세요 { "solidity.packageDefaultDependenciesContractsDirectory": "", "solidity.packageDefaultDependenciesDirectory": "node_module.. 2021. 11. 21.
[gg.deals] 할인중인 게임 실시간으로 알려주는 사이트 안녕하세요, 예전에 한참 게임을 많이 했을때 보던 사이트를 하나 소개시켜드리려 합니다. 스팀, 에픽게임즈 등 수많은 기업이 게임 판매 플랫폼을 만들며, 게임 할인이나 심지어 무료로 게임을 제공해주는 이벤트도 굉장히 잦습니다. 하지만 현재 할인중인 게임을 확인하기 위해선 시시때때로 스팀같은 플랫폼을 돌아가며 접속해야 하는데요, 지금 소개시켜드리려는 gg.deals는 이러한 사이트들을 모아 실시간으로 할인중인 게임 리스트를 제공해주는 사이트입니다. 첫 페이지에 들어가면 아래 스크린샷처럼 새로 할인이 들어간 게임(New deals), 그리고 gg.deals에서 산정한 점수 기준으로 가장 가성비 좋은(?) 할인 게임(Best deals), 마지막으로 지금까지 가장 큰 폭의 할인이 적용된 경우(Historical.. 2021. 10. 6.
티스토리에서 수식 입력하는 방법(LaTeX) Javascript로 LaTeX 연결하기 티스토리에 글을 작성하다 보면 가끔 수식을 써야할 일이 있는데요, 티스토리에선 자체적으로 수식 기능을 제공하지 않기 때문에 직접 외부 모듈과 연결해야 합니다. 연결 방법은 간단한데요, 글쓰기 창에 들어가시면 상단 메뉴 오른쪽에 아래 스크린샷처럼 드롭다운 메뉴가 하나 있습니다. 여기서 HTML을 클릭해주세요. 그러면 검은색 창으로 바뀌면서 html 코드가 쭉 뜰텐데, 이 html 코드 맨 첫줄에 아래 script를 붙여넣어주세요. 이후 다시 글쓰는 창으로 돌아오면, 아래 스크린샷처럼 네모 박스가 두 개 뜹니다. 이 두 박스가 보이면 연결이 잘 된거에요! 아, 그리고 이 두 박스는 방문자에게 보이지 않으니까 신경쓰지 않으셔도 됩니다. (지금 보고계신 제 글에도 스크립.. 2021. 9. 26.
728x90