반응형
 
어떤 효과가 독서를 통해 발생할까요?
매일 독서 메일링 사이트에서는 바쁜 일상에서 책과 관련된 지식을 쉽게 습득할 수 있죠.
애덤 그랜트의 [싱크 어게인] 이 책은 여러 스토리가 나오는 것은 아니지만, 조금 지루한 감이 있지만 읽다 보면 분위기에 젖게 됩니다.
이 책을 읽으며 변해가는 말투와 태도에 더 많이 관심을 둘 필요가 있어요.
더 효과적인 독서 및 생각을 위해, [어게인]이라는 주제의 의미를 재고 다시 생각해 볼 필요가 있어요.
 
 
 
<뷰카의 시대>
- 변동성(Volatile)
- 불활실성(Uncertainty)
- 복잡함(Complexity)
- 모호성(Ambiguity)
 
현대사회에서 요구되는 태도는?
현대사회에서는 유변동성, 불확실성, 복잡성, 그리고 앰비튜어스가 일상적으로 발생해서 항상 다시 생각하는 태도가 중요해요.
여러 가지 오해된 진실이나 가짜 뉴스도 많아서 인용이 여러 차례 되면서 일종의 신뢰성을 얻어 거짓이 진실이 되는 경우가 있어요.
마지막까지 재평가를 위한 태도가 중요합니다.
'진실의 흑역사'에서는 시험 답안, 개구리 실험, 만리장성 등을 통해 오해된 진실과의 결별을 이야기하고 있어요.
불확실성이 높은 시대에서는 능동적으로 다시 생각하면서 적극적으로 대처해 나가는 태도가 중요합니다.
미디어와 가짜 뉴스, 어떤 자세가 필요할까?
언론이 초기부터 다루던 건 미디어의 가짜 뉴스로 빼곡이 되었다는 사실을 알고, 우리는 다시 생각하고 겸손해야 해요.
정보를 받아들일 때는 오픈되어있다는 마음가짐이 중요하며, 의심하는 능력도 키워야 해요.
과학자의 자세를 가져 가설을 세우고 검증하며 생각하는 건전한 태도가 필요해요.
확증 편향에 빠지지 않기 위해 자부심과 프라이드를 내리고, 자세한 비판적 태도를 가져야 해요.
'진보'와 '보수' 대립, 다시 생각해야할 필요성은?
'진보'와 '보수'는 다양한 이야기가 있어요.
코로나로 인해 미국 정치의 극단적인 갈등을 느껴서, 다시 생각해야 한다는 책에 감명받았어요.
서로의 인식이 극과 극으로 빠지면서, '확증 편향'이 발생하는데, 이러한 인식은 유연한 태도로 전환해야 한다는 내용이에요.
한국 사회도 매우 심한 '보수'와 '진보'의 대립을 보여줘요.
때문에 현재의 인식을 돌아볼 시간이 필요해보여요.
우리는 다시 생각하게 능력을 발휘하며, 정치적 극단과 대립을 조심하면서 노력해야 할 필요성을 느꼈어요.
상대방을 변화시키기 위한 방법과 성공의 정의는?
상대방을 변화시키기 위해서는 바른 경청이 필요해요.
주장이 강력할수록 상대방은 오히려 반대 의견으로 만들어진대요.
계획은 완벽하지 않으며, 수정 없이 실현될 수 없어요.
인생의 여러 측면에서 유연한 대처가 필요해요.
경로는 당 한 가지가 아니며, 성공은 개인마다 다르게 정의돼요.
과거의 경험, 언어의 제약에서 벗어나 바라보는 과학자적 자세와 태도가 중요해요.
추천하는 도움이 되는 책은?
한방 해결책은 없지만 전체적으로 읽으면 좋은 책이라 생각됩니다.
이 영상을 마무리하며, 구독 및 좋아요 부탁드리고, 켈리 가치를 느껴보세요! 감사합니다요🙏
반응형

'생각' 카테고리의 다른 글

아비투스  (0) 2023.01.24
GPT-3 프롬프트와 신경언어 프로그래밍(NLP)  (0) 2023.01.12
퍼스널 브랜딩  (0) 2022.12.27
집중과 몰입  (1) 2022.12.14
감정 훈련  (0) 2022.12.13
반응형
 
12 RAG 고통점과 해결책
 
Weni이 LlamaIndex에서 12가지 RAG 고통점과 이에 대한 해결책을 소개합니다.
데이터 정제와 더 나은 프롬프팅을 제안하여 문제를 해결할 수 있습니다.
 
'unstructured IO cleaning library'를 활용하여 데이터 정제를 할 수 있으며, 더 나은 프롬프팅을 위해서도 작업이 필요합니다.
이번 동영상에서는 기타 해결책에 대해서도 소개할 예정입니다.
 
 
L-Index와 관련된 두 번째, 세 번째 통증점은 무엇일까요?
 
통증점 2는 초기 검색 단계에서 중요한 컨텍스트인 상위 순위 문서가 누락되었다는 것이에요.
L-Index는 PromTuner라는 하이퍼파라미터 튜닝 기술을 가지고 있어, 평가자 선택이 중요하다는 점도 있습니다.
 
또한, 결과 수정을 위한 리랭킹이 성능 향상을 눈에 띄게 보여준다는 점도 있죠.
만약 컨텍스트 누락이 있다면 리트리버 전략을 조정해야 할 필요성이 있습니다.
 
마지막으로, Llama Index는 다양한 고급 검색 전략을 가지고 있습니다
 
 
검색 전략 선택과 임베딩 모델 세밀하게 조정하기
 
가장 적합한 검색 전략을 선택하려면 사용 사례에 기반한 평가 결과를 확인해야 해요.
또한, 임베딩 모델을 세밀하게 조정하면 성능을 높일 수 있어요.
 
데이터 정제, 프롬프트 압축, 노드 재정렬 등의 기법을 사용하여 특정 문제를 해결하는데 도움이 된답니다.
임베딩 모델을 세밀하게 조정하면 검색 결과의 성능을 향상시키고 비용을 줄일 수 있었던 사례도 있었어요.
 
 
LlamaIndex의 출력 작업과 쿼리 변환 전략은?
 
LlamaIndex에서는 다양한 출력 작업 모듈을 사용하여 결과 출력과 관련된 문제를 해결하고, 출력 스키마를 정의하고 JSON 형식으로 출력하죠.
부족한 출력으로 인해 일부 응답이 발생하는 경우, 질의 변환 전략을 사용해 해결됩니다.
이러한 전략에는 경로 기반 질의 엔진, 질의 재작성 등이 포함돼요.
 
 
텍스트 데이터 처리를 위한 쿼리 엔진 개발과 스케일링 과제란?
 
두 개의 다른 문서를 비교하고 대조할 때 사용되는 10K SEC 10K 문서들에 대해 설명하고, 이에 대한 질문을 하고 대조해야 할 경우 사용해요.
 
쿼리 엔진을 사용하여 가상의 응답과 문서를 비교하여 최적의 답변을 선택하고, 데이터 투입의 확장성에 대한 과제를 이야기해요.
 
Llama 인덱스는 병렬화된 투입 파이프라인을 도입하여 확장성을 높이는데 기여하며, 일부 구조화된 데이터에 대해서는 텍스트를 SQL로 변환하여 처리해요.
 
 
Llama Index의 최신 논문과 기능은 무엇인가요?
 
최근 논문 'Chain of Table'과 'Mix Self-Consistency Pack'의 솔루션을 소개했어요.
 
'Chain of Table'은 테이블 데이터에 대한 사용자 쿼리를 기반으로, 테이블 작업의 순서를 계획하여 올바른 정보를 검색해요.
'Mix Self-Consistency Pack'은 텍스트 기반 및 기호 기반의 논리 추론을 통해, 텍스트를 SQL 또는 Python으로 변환하여 최상의 성능을 제공해요.
 
'Chain of Table'은 특히 하나의 열에 여러 원소가 있는 경우와 데이터의 혼합이 있는 경우에 효과적으로 작동해요.
Llama Index에는 데이터를 추출하기 어려운 복잡한 PDF에서의 데이터 추출에 대한 'Complex PDFs' 기능이 이미 추가되어 사용 가능해요.
 
 
Open Air모델보다 Fullback 모델이 필요한 이유는?
 
Open Air모델을 사용하면 속도 제한 문제 시스템 오동작 위험이 있어서, Fullback 모델이 필요해요.
 
Neutrino 라우터와 Open R은 Fullback 모델 솔루션으로 제안되었는데, Neutrino 라우터는 스마트하게 CSAs를 다른 모델로 라우팅하여 최저가 또는 가장 성능이 좋은 경로를 선택하는 기능을 제공하고, Open R은 표준화된 API로 어떤 모델에게도 낮은 가격으로 접근할 수 있고, 주 호스트의 중단 시 Fullback을 제공합니다.
 
게다가 Nemo guardrails는 오픈 소스 기반의 보안 도구셋으로, 입출력 moderation, 주제 가이드, 환각 방지, 응답 형성, 그리고 GME index와의 통합 등을 처리하여 보안 기능을 강화할 수 있죠.
 
이것을 사용하면 프로그래밍으로 가이드 레일을 설정할 수 있으며, 입력/출력 대화 도메인을 제한하여 사용자가 대화 주제를 벗어나지 않도록 합니다.
 
 
Retriever rail과 LlamaIndex의 차이점과 LlamaGuard와 NAD Guard의 비교는?
 
Retriever rail을 RAG로 사용하나, 이번에는 RAG로 LlamaIndex를 사용하여 실험 중이에요.
LlamaIndex는 아직 실험적이며, txt 파일 형식만 지원하죠.
 
LlamaGuard는 입력 및 출력 모더레이션을 처리하지만, NAD는 도메인 모더레이션과 실행 도구를 다루죠.
LamaGuard와 NAD Guard는 하나의 솔루션으로 결합될 수 있어요.
 
NAD Guard에도 Nimo Guard가 있는데, 두 가지 방법을 하나의 솔루션으로 결합하는 것을 추천해요.
 
 
LlamaIndex 프레임워크의 툴셋은 어떤 장점이 있을까?
 
LlamaIndex 프레임워크의 툴셋은 정말로 보석같은 존재로 즐겁게 활용되며, 이 그림은 시작점으로서의 역할을 하는군요.
어떤 도메인이나 구체적인 사용 사례에 따라 이 다이어그램을 확장할 수 있다는 장점이 있어요.
또한, LlamaIndex 프레임워크에는 여러 실무 개발 도구와 함께 숨겨진 보석이 많아요.
 
개발자들은 매일 랙 시스템을 개발하며, 이 도구들을 탐구하고 활용해야 합니다.
게다가 새로운 기능들은 통상적인 문제가 아니더라도, 특정 이슈 해결에 도움을 주는 강력한 RAG 파이프라인을 구축하는데 기여합니다.
 
반응형
반응형

- 한국투자증권 open api 연결

- 조건검색


https://apiportal.koreainvestment.com/community/10000000-0000-0011-0000-000000000003

 

KIS Developers

잠시만 기다려 주세요

apiportal.koreainvestment.com

안녕하세요.
한국투자증권 KIS Developers입니다.

고객님 종목조건검색을 활용한 파이썬 샘플코드는 준비되어 있지 않은 점 양해 부탁드립니다.

아래 포스트맨 샘플코드에 종목조건검색이 포함되어 있으니 해당 플랫폼에서 API 호출 테스트 및 output 값을 확인하시면서 
고객님의 요건에 맞는 기능을 제작하여 사용하시는 것을 추천드립니다.

https://github.com/koreainvestment/open-trading-api/tree/main/postman

+
추가적으로 아래 유튜버 조코딩님이 작성하신 한국투자 API를 활용한 파이썬 자동매매코드를 참고하실 수 있습니다. (다만 아래 샘플에는 조건검색 내용은 없습니다)
https://github.com/youtube-jocoding/koreainvestment-autotrade
APP_KEY = ""
APP_SECRET = ""

#계좌번호 앞 8자리
CANO = ""
#계좌번호 뒤 2자리
ACNT_PRDT_CD = "01"

#실전투자
URL_BASE = "https://openapi.koreainvestment.com:9443"

import requests
import json
import datetime
import time

def get_access_token():
    """토큰 발급"""
    headers = {"content-type":"application/json"}
    body = {"grant_type":"client_credentials",
    "appkey":APP_KEY,
    "appsecret":APP_SECRET}
    PATH = "oauth2/tokenP"
    URL = f"{URL_BASE}/{PATH}"
    res = requests.post(URL, headers=headers, data=json.dumps(body))
    ACCESS_TOKEN = res.json()["access_token"]
    return ACCESS_TOKEN

def hashkey(datas):
    """암호화"""
    PATH = "uapi/hashkey"
    URL = f"{URL_BASE}/{PATH}"
    headers = {
    'content-Type' : 'application/json',
    'appKey' : APP_KEY,
    'appSecret' : APP_SECRET,
    }
    res = requests.post(URL, headers=headers, data=json.dumps(datas))
    hashkey = res.json()["HASH"]
    return hashkey

def get_conser():
    """종목조건검색목록조회"""
    PATH = "/uapi/domestic-stock/v1/quotations/psearch-title"
    # ?user_id=abc1234&seq=0
    URL = f"{URL_BASE}/{PATH}"
    headers = {"Content-Type":"application/json",
            "authorization": f"Bearer {ACCESS_TOKEN}",
            "appKey":APP_KEY,
            "appSecret":APP_SECRET,
            "tr_id":"HHKST03900300"}
    params = {
    "user_id":"abcd",
    }
    res = requests.get(URL, headers=headers, params=params)
    return res.json()['output2']

def get_conser_list(a_seq="0"):
    """종목조건검색종목조회"""
    PATH = "/uapi/domestic-stock/v1/quotations/psearch-result"
    # ?user_id=abc1234&seq=0
    URL = f"{URL_BASE}/{PATH}"
    headers = {"Content-Type":"application/json",
            "authorization": f"Bearer {ACCESS_TOKEN}",
            "appKey":APP_KEY,
            "appSecret":APP_SECRET,
            "tr_id":"HHKST03900400"}
    params = {
    "user_id":"abcd",
    "seq":a_seq,
    }
    res = requests.get(URL, headers=headers, params=params)
    return res.json()['output2']
    
    
ACCESS_TOKEN = get_access_token()

# 조건검색 목록 조회
conser = get_conser()
print(conser)

# 조건검색 종목 조회
conser_list = get_conser_list(a_seq='0')
print(conser_list)
반응형
반응형

암호화폐 거래는 쉬운 일이 아닙니다. 활발한 분석에도 불구하고 시장 동향을 항상 추적하는 것은 불가능합니다. 그래서 카피 트레이딩이 필요합니다. 이 글에서는 MoonXBT, 비트겟, 빙엑스에서 카피 트레이딩의 모든 측면을 설명할 것이니 더 이상 고민하지 마세요.

  1. 요약
  2. 카피 트레이딩이란 무엇인가요?
  3. MoonXBT 설명
  4. MoonXBT 수익 분배
  5. MoonXBT 카피 트레이딩이란? 기억해야 할 사항
  6. 비트겟 설명
  7. 비트겟 카피 트레이딩
  8. 빙엑스 설명
  9. 빙엑스 카피 트레이딩
  10. MoonXBT와 비트겟, 빙엑스: 장단점 비교
  11. 결론 MoonXBT와 비트겟, 빙엑스의 비교 분석
  12. 자주 묻는 질문

 

1. 요약


카피 트레이딩을 통해 트레이더는 다른 베테랑 트레이더를 모방할 수 있으므로 항상 시장 데이터를 엄격하게 분석하고 모니터링할 필요가 없습니다.
팔로워는 한 번에 한 명 이상의 성공적인 트레이더를 복사하여 수익을 극대화하고 위험을 줄이거나 분산시킵니다.
MoonXBT, 비트겟, 빙엑스의 세 거래소 모두에서 팔로워는 자산, 순위, 승률 또는 수익률, 팔로워 등을 기준으로 트레이더를 정렬할 수 있습니다.
트레이더는 사용하는 플랫폼에 따라 팔로워로부터 수익의 일부를 분배받습니다.

 

MoonXBT Vs Bitget Vs BingX: Copy Trading

 

2. 카피 트레이딩이란 무엇인가요?


일반적으로 암호화폐를 거래하려면 많은 집중력과 시장분석, 전략, 시간이 필요합니다. 하지만 카피 트레이딩은 전문적이고 숙련된 트레이더의 움직임과 기법을 모방할 수 있습니다. 따라서 특히 초보 트레이더에게 유용하며 시간을 절약하고 큰 손실을 방지할 수 있습니다.

초보자는 트레이더를 따라 전략을 자동화하고, 트레이더와 함께하지 않고도 거래를 수행하여 최대 수익을 올릴 수 있습니다. 카피 트레이딩은 크게 추종자와 트레이더의 두 가지 범주로 나뉩니다. 이 기사에서는 둘 다 자세히 설명합니다.

 


3. MoonXBT 설명


2021년에 설립된 MoonXBT는 라이트 컨트랙트 거래와 카피 트레이딩 플랫폼과 같은 독특한 서비스를 제공합니다. 또한, 거래 자체가 차갑고 트레이더 커뮤니티의 상호 작용이 필요하기 때문에 MoonXBT의 미래 포지셔닝은 소셜 트레이딩 플랫폼입니다. 또한 이 플랫폼은 사용자가 적은 수수료와 우수한 유동성으로 합리적인 가격으로 거래할 수 있는 안전하고 편리한 환경을 제공합니다. 

MoonXBT



MoonXBT는 안전하고 강력한 거래 시스템을 갖추고 있습니다. 사용자에게 최대 150배의 높은 레버리지를 제공할 뿐만 아니라 데모 모드와 사용하기 쉬운 인터페이스도 제공합니다. 또한, MoonXBT 실제 시장은 오류를 없애기 위해 유효한 데이터를 제공합니다.

자세한 내용은 MoonXBT 리뷰를 참조하세요. 

 

MoonXBT 가입 => https://www.moonxbt.com/user/register?invite_code=zjitao 

 

MoonXBT로 카피 트레이딩: 팔로워 

- 포지션, 이력, 실력에 관계없이 모든 사용자가 팔로워가 될 수 있습니다. 
- 팔로워는 성공적인 트레이더를 선택해 그들의 움직임을 자동으로 복사할 수 있습니다. 
- MoonXBT에서 팔로워는 트레이더의 스타일이나 위험 감수 수준에 따라 트레이더를 정렬할 수 있습니다. 예를 들어, 아래와 같이 ROR(수익률) 또는 수익률, 승률(이긴 거래 수/총 거래 수), 총 ROR, 거래일, 완료된 거래 등을 기준으로 정렬할 수 있습니다. 

문엑스비티로&nbsp;카피&nbsp;트레이딩하기


- 또한 한 명의 트레이더만 선택하는 것으로 제한되지 않습니다. 팔로워는 거래를 자동화하고 더 나은 승률을 위해 한 번에 여러 트레이더를 선택할 수 있습니다. 따라서 수익을 높일 수 있습니다.  
- 그 외에도 개장/청산 및 기타 거래 동작이 트레이더와 자동으로 동기화됩니다. 따라서 팔로워는 시장을 주시하고 전략을 세우지 않고도 수익을 극대화할 수 있습니다. 
- 그 대가로 팔로워는 트레이더의 움직임을 복사하여 수익의 일부를 지불해야 합니다.
- 각 수익 데이터는 실시간으로 기록되고 표시되며 팔로워는 '내 카피 트레이딩' 섹션을 통해 자신의 카피 트레이딩 데이터를 추적할 수 있습니다. 
- 자동화된 작업에도 불구하고 사용자는 요구 사항에 따라 설정을 수정할 수 있습니다. 
자세한 내용은 MoonXBT 카피 트레이딩을 읽어보시기 바랍니다: 암호화폐 거래를 자동화하는 가장 좋은 방법은?


MoonXBT 카피 트레이딩: 트레이더    

- 성공적이고 경험이 풍부하며 이 플랫폼의 팔로워가 복사하는 전문 트레이더는 '트레이더' 범주에 속합니다.
- 사용자가 성공적으로 트레이더가 되면 거래 내역이 대시보드에 표시됩니다.
- 안타깝게도 사용자가 팔로워인 경우 트레이더 카테고리로 전환할 수 없습니다.
- 팔로워가 충분한 경험을 쌓고 기준을 충족해야만 전환할 수 있습니다. 
- 트레이더가 되려면 고객서비스에 문의하거나 '트레이더 되기'를 클릭해 신청할 수 있습니다. 자세한 절차는 MoonXBT 카피 트레이딩에 대한 기사를 읽어보시기 바랍니다. 
- 트레이더는 500 USDT 이상의 예치금과 5건 이상의 실제 거래 주문을 보유해야 합니다.
- 또한 해당 사용자는 다른 트레이더를 팔로우하고 있지 않아야 하며, 미체결 주문이 없어야 합니다. 
- 트레이더가 되면 팔로워의 수익성 있는 주문에서 수익의 일부를 받을 수 있습니다. 
- 트레이더는 팔로워가 카피 트레이딩을 통해 얻은 수익의 최대 10%를 받을 수 있습니다.

트레이더&nbsp;프로필

MoonXBT 가입 => https://www.moonxbt.com/user/register?invite_code=zjitao 

 

4. MoonXBT 수익 분배


- MoonXBT는 트레이더가 팔로워로부터 수익 분배의 최대 10%를 청구할 수 있도록 허용합니다. 결과적으로 예상 수익 금액은 포지션이 청산될 때 팔로워의 계정에서 동결되거나 차감됩니다.
- 그러나 동결된 금액이 실제 수익 분배금보다 적으면 트레이더는 예상 금액을 계좌에 입금받습니다. 마찬가지로 동결된 금액이 실제 수익 분배보다 많으면 초과 금액은 팔로워의 계좌로 반환됩니다.

 

5. MoonXBT 카피 트레이딩: 기억해야 할 사항


- 카피 트레이딩을 시작하려면 계정에 최소 20 USDT가 있어야 합니다.
- 사용자는 동시에 두 명의 트레이더만 복사할 수 있습니다.
- 사용자는 복사한 주문에 증거금을 추가하거나 손절매 및 손절매를 수정할 수 없습니다.
- 복사된 주문의 시간은 트레이더와 동일합니다.
- 복사 가능한 증거금의 일일 한도는 50000 USDT를 초과할 수 없습니다.
- 모든 복사 주문은 시장가 주문으로 체결됩니다.
- 사용자는 지정가 주문이 복사 거래에서 복사되지 않는다는 것을 알아야 합니다. 
- 복사된 주문의 레버리지는 트레이더와 동일합니다.
- 아래 표는 다양한 암호화폐에 대한 단일 카피 트레이딩 포지션의 증거금 범위를 보여줍니다. 

Crypto pair Maximum leverage for copy trading Fixed margin range 
BTC 150 1-5000
ETH 125 1-5000
Other  100 1-5000

 

 

6. 비트겟 설명

 

비트겟 거래소는 싱가포르에 본사를 두고 있으며 전 세계적으로 현물 거래, 파생상품 거래, 카피 트레이딩을 제공합니다. 또한 150만 명 이상의 등록 사용자를 보유하고 있으며 싱가포르, 캐나다, 미국, 호주에서 라이선스를 취득했습니다. 자세한 내용은 비트겟 리뷰를 확인해 보자. 

Bitget

 


7. 비트겟으로 카피 트레이딩하기

 

Bitget에는 여러 숙련된 트레이더가 있으며 이는 신규 트레이더에게 탁월한 이점입니다. 결과적으로 트레이더는 시장 데이터를 지속적으로 모니터링하고 분석하지 않고도 수익을 극대화할 수 있습니다.

또한 사용자는 웹 사이트와 Bitget 앱 (Android 및 iOS)에서 한 번의 클릭으로 복사 거래 기능에 액세스 할 수 있습니다. 마지막으로, 사용자는 숙련된 후보자의 프로필을 통해 전략, 방법, 역사 및 스타일을 철저히 이해해야 합니다.

비트겟 카피 트레이딩: 팔로워
- 먼저 팔로워는 모방하고자 하는 트레이더를 선택해야 합니다. 그런 다음 거래 내역, 실적, 승률, 순위 등을 기준으로 프로필을 정렬할 수 있습니다.
- 팔로워는 선택한 계약에 따라 설정을 수정할 수 있는 권한이 있습니다.
- 비트겟은 사용자가 수익을 보고 분석할 수 있도록 모든 카피 트레이딩 거래 기록을 보관합니다.
- 이 플랫폼은 완전히 투명합니다. 수백 명의 전문적이고 경험이 풍부한 트레이더 중에서 선택할 수 있습니다.
- 또한 팔로워는 한 번에 두 명 이상의 트레이더를 팔로우하여 수익을 확대하고 위험을 줄일 수 있습니다. 
- 마지막으로, 비트겟을 사용하면 팔로워가 필요에 따라 변경, 손절매, 이익 실현 등을 할 수 있습니다.

 

비트겟&nbsp;카피&nbsp;트레이딩:&nbsp;팔로워



비트겟 카피 트레이딩: 트레이더
- 사용자는 특정 요건을 충족한 후 트레이더가 되기 위해 신청할 수 있습니다.
- 요구 사항에는 필수 KYC가 포함되며, 계약에는 미체결 주문, 포지션, 스톱 한도가 없어야 하며 다른 트레이더를 팔로우하지 않아야 합니다.
- 비트겟의 모든 트레이더는 카피 트레이딩을 통해 팔로워 수익의 최대 10%를 차지할 수 있습니다.
- 비트겟에 존재하는 암호화폐 커뮤니티는 트레이더가 더 많은 팔로워를 확보하여 수익을 확대할 수 있도록 도와줍니다.
- 트레이더는 아래 표에 설명된 특정 입금 요건을 충족해야 팔로워가 복사를 시작할 수 있습니다.

 

Deposit requirement (USDT) Number of followers
More than equal to 500 and less than 10,000 50
More than equal to 10,000 and less than 5,000,000 100
More than equal to 5,000,000 150

비트겟(Bitget) 가입하기 => https://www.bitget.com/en-GB/referral/register?from=referral&clacCode=N16GFBVN

 

8. 빙엑스 설명


저렴한 수수료, 빠른 거래 속도, 안정적인 거래 환경, 백만 명 이상의 등록 사용자를 보유한 빙엑스 거래소는 현존하는 최고의 암호화폐 거래소 중 하나입니다. 이 거래소는 사용자에게 즉시 현물 교환, 암호화폐 거래를 위한 파생 상품 쌍과 같은 다양한 서비스를 제공합니다.  

빙본

 

9. BingX 카피 트레이딩

 

BingX는 사용자가 현명하게 투자하고 엘리트 트레이더를 팔로우하여 수익을 크게 확대하도록 초대합니다. 2018 년에 설립된 이 회사는 계약 거래를 실행하는 가장 빠르고 안전한 네트워크 중 하나를 제공합니다. 또한 사용자에게 카피 트레이딩 서비스를 제공하여 테스트된 전략을 복사하고 구현하여 좋은 포트폴리오를 구축하고 높은 수익을 얻을 수 있습니다. 

 

빙엑스 암호화폐 소셜 트레이딩


BingX 카피 트레이딩: 팔로워
- 팔로워는 BingX 커뮤니티의 도움을 받아 팔로우하고 싶은 트레이더의 프로필을 확인하거나 그들의 움직임을 복사할 수 있습니다.
- 순위, 팔로워, 총 자산, 수익률 등의 필터를 사용하여 검색 범위를 아래 이미지와 같이 좁힐 수 있습니다.
- 사용자는 일일 거래 한도를 포함하도록 설정을 수정할 수 있습니다.

 

BingX 가입하기 => https://bingx.com/invite/FUJCNKBG

 

BingX 카피 트레이딩: 트레이더
- BingX에서 트레이더는 팔로워 수익의 최대 8%를 공유할 수 있습니다. 
- 각 트레이더는 팔로워가 볼 수 있도록 아래와 같이 그래픽으로 거래 데이터를 기록합니다. 


Bingbon 카피 트레이딩: 트레이더

 

 

10. MoonXBT vs 비트겟 vs 빙엑스: 장단점

거래소 장점 단점
MoonXBT         팔로워의 선호도에 따라 트레이더를 정렬하기 위해 몇 가지 매개 변수가 제공됩니다.
트레이더가 되기 위한 간단한 절차. 
카피 트레이딩이 MoonXBT에서 막 시작되었습니다.
Bitget    수백 명의 베테랑 트레이더 중에서 선택할 수 있습니다.
트레이더는 팔로워의 수익에서 최대 10%의 지분을 차지할 수 있습니다.
트레이더가 되려면 KYC 인증이 필수입니다. 
BingX 빙엑스 커뮤니티는 사용자가 이상적인 트레이더를 찾을 수 있도록 지원합니다.
모든 트레이더의 거래 데이터는 완전히 투명합니다.
빙엑스  트레이더는 팔로워 수익의 8%만 받을 수 있으며, 이는 비교적 낮은 수준입니다.


BingX 가입하기 => https://bingx.com/invite/FUJCNKBG

 

11. 결론: MoonXBT vs 비트겟 vs 빙엑스

 

세 플랫폼 모두 비슷한 기능과 특징을 가진 카피 트레이딩 서비스를 제공합니다. 하지만 MoonXBT와 비트겟은 빙엑스 거래소보다 더 높은 수익 분배율을 제공합니다. 반면, 빙엑스는 사용자에게 빠른 거래 경험을 제공합니다. 또한 비트겟과 빙엑스는 모두 다른 국가의 당국에 의해 규제됩니다. 반면에 MoonXBT는 팔로워와 트레이더에게 많은 새로운 기능을 제공합니다.

 

 

12. 자주 묻는 질문

 

MoonXBT에서 카피 트레이딩을 취소하려면 어떻게 해야 하나요?
카피 트레이딩은 두 가지 방법으로 취소할 수 있습니다: 
활성 취소: 사용자가 설정을 통해 직접 복사 작업을 취소합니다.
수동 취소: 잔액 부족 또는 기타 이유로 주문을 세 번 복사하지 않으면 카피 트레이딩이 자동으로 취소됩니다. 

MoonXBT에서 카피 트레이딩의 한도는 어떻게 되나요?
MoonXBT 거래소의 일일 카피 트레이딩 한도는 50000 USDT입니다. 계정 잔액은 20 USDT 이상이어야 합니다.

 

호주인도 빙엑스 카피 트레이딩을 이용할 수 있나요?
예, 호주 사용자는 몇 가지 간단한 단계만 거치면 BingX에서 카피 트레이딩을 시작할 수 있습니다. 또한 BingX는 호주 금융감독청의 규제를 받으므로 사용자는 걱정 없이 플랫폼을 사용할 수 있습니다. 

 

BingX에서 새로운 경험을 해보세요 => https://bingx.com/invite/FUJCNKBG

반응형
반응형

[출처]

https://youtu.be/Uc7md60uAKM

1. Vscode에서 AICodeHelper 설치하고 셋팅

  - ChatGpt api key 받고 AICodeHelper 설정

2. AICodeHelper 기본적인 사용법

  - 프로그램 영역 설정하고 컨트롤 알트 쉬프트 콤마 눌러서 입력창에 요청사항 입력하기

  - 단축키로 미리 설정된 프롬프트 활용 : 코드 리뷰, 코드주석달기, 코드의 오류 수정, 만들고 싶은 것에 대한 묘사를 기반으로 코드 생성, 변수이름 작명, 코드 리팩토링

3. ChatGpt api 사용법

  - 원하는 출력을 위한 프롬프트 방식

  - 원하는 출력을 위한 퓨샷러닝 방식

 

<!DOCTYPE html>
<html>

<head>
    <title>여러줄 쓰는 입력란</title>
    <style>
        body {
            background-color: black;
            color: white;
            font-size: 20px;
            font-family: Arial, sans-serif;
        }

        input[type="submit"] {
            background-color: #3498db;
            color: white;
            font-size: 16px;
            padding: 8px 16px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <form>
        <textarea id="myInput" rows="5" cols="50"></textarea>
        <br><br>
        <input type="button" value="색 추천 요청" onclick="displayInput()">
        <br><br>
        <div id="output"></div>
    </form>

    <script>
    const chatGPT = async (messages, parameters = {}) => {
        const apikey = 'API-KEY';
        // messages가 문자열인 경우 배열로 변환
        if (messages[0].constructor === String) return await chatGPT([['user', messages[0]]]);
        // messages 배열의 요소들을 role과 content 속성을 가진 객체로 변환
        messages = messages.map(line => ({ role: line[0], content: line[1].trim() }))
        console.log(1)
        // OpenAI API에 요청을 보내기 위한 fetch 함수 호출
        const response = await fetch('https://api.openai.com/v1/chat/completions', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apikey}` },
            body: JSON.stringify({ model: 'gpt-3.5-turbo', messages, ...parameters }),
        });
        // 응답 데이터를 json 형태로 변환
        const data = await response.json();
        // 에러가 발생한 경우 에러 메시지 출력
        if (data?.error?.message) throw new Error(data.error.message);
        // OpenAI API에서 반환한 응답 데이터에서 추천 색상 코드와 이유를 추출하여 반환
        return data.choices[0].message.content.trim();
    };

    async function displayInput() {
        // 입력된 텍스트를 가져와서 불필요한 공백 제거
        var input = document.getElementById("myInput").value.trim();
        // 입력된 텍스트가 없는 경우 알림 메시지 출력
        if (!input) alert('묘사해주세요')
        // 입력된 텍스트를 OpenAI API에서 인식할 수 있는 형태로 변환
        input = `DESC::${input}`
        console.log(input)
        let response
        try {
            // OpenAI API에 요청을 보내서 추천 색상 코드와 이유를 가져옴
            response = await chatGPT([
                ['system', `The assistant's job is to recommend color codes that match what user's describing. Response JSONArray like ["","",...]. reasonForRecommendation to be in korean. Return only JSON Array. Remove pre-text and post-text.`],
                ['user', 'DESC::맛있는 딸기'],
                ['assistant', '{"reasonForRecommendation":"..","colorlist":["#000000","#000000","#000000","#000000","#000000"]}'],
                ['user', 'DESC::우거진 숲속의 소나무'],
                ['assistant', '{"reasonForRecommendation":"...","colorlist":["#000000","#000000","#000000","#000000","#000000"]}'],
                ['user', 'DESC::드넓은 사막의 모래'],
                ['assistant', '{"reasonForRecommendation":"....","colorlist":["#000000","#000000","#000000","#000000","#000000"]}'],
                ['user', input],
            ], { temperature: 0.8 })
        } catch (e) {
            // 에러가 발생한 경우 콘솔에 에러 메시지 출력
            console.log(e.message)
            return;
        }

        // 추천 색상 코드와 이유를 출력할 요소를 가져옴
        var outputText = document.getElementById("output");
        console.log(response)
        // OpenAI API에서 반환한 JSON 형태의 응답 데이터를 객체로 변환
        const color = JSON.parse(response);
        // 추천 색상 코드를 출력할 div 요소를 생성하여 색상을 적용하고 출력할 요소에 추가
        for (let i = 0; i < color.colorlist.length; i++) {
            const divElem = document.createElement('div');
            divElem.style.backgroundColor = color.colorlist[i];
            divElem.textContent = color.colorlist[i];
            outputText.appendChild(divElem);
        }
        // 추천 이유를 출력할 div 요소를 생성하여 출력할 요소에 추가
        const divElem = document.createElement('div');
        divElem.textContent = color.reasonForRecommendation
        outputText.appendChild(divElem);
    };

    </script>
</body>

</html>

반응형
반응형
import pyupbit
import pybacktest
import pandas as pd
import numpy as np

# 업비트 API 접속
access_key = "your_access_key"
secret_key = "your_secret_key"
upbit = pyupbit.Upbit(access_key, secret_key)

# 거래할 코인 설정
coin = "KRW-BTC"

# 트렌드를 정의하는 지표 설정 (볼린저 밴드)
def get_bbands(df):
    # 중심선: 20일 이동 평균선
    df['MA20'] = df['close'].rolling(20).mean()
    # 상단선: 중심선 + (2 * 표준편차)
    df['UB'] = df['MA20'] + (2 * df['close'].rolling(20).std())
    # 하단선: 중심선 - (2 * 표준편차)
    df['LB'] = df['MA20'] - (2 * df['close'].rolling(20).std())
    return df

# 매수/매도 전략 함수
def strategy(price, ub, lb):
    if price > ub:
        # 상승 트렌드일 경우 매수
        return 1
    elif price < lb:
        # 하락 트렌드일 경우 매도
        return -1
    else:
        return 0

# 백테스팅 함수
def backtest(ohlcv):
    # 볼린저 밴드 지표 계산
    df = get_bbands(ohlcv)

    # 매수/매도 전략 수행
    signals = pd.Series(index=df.index)
    for i in range(1, len(df)):
        signals.iloc[i] = strategy(df['close'][i], df['UB'][i-1], df['LB'][i-1])

    # 수익률 계산
    pf = pybacktest.Backtest(locals(), 'signals', commission=.0005, exclusive_orders=True)
    return pf.data

# OHLCV 데이터 가져오기
ohlcv = pyupbit.get_ohlcv(coin, interval='minute5')

# 백테스팅 실행
result = backtest(ohlcv)

# 결과 출력
print(result.head())

암호화폐 거래를 위한 퀀트 강좌

암호화폐는 전통적인 금융 시장과는 다른 특징과 규칙을 가진 새로운 자산 클래스입니다. 암호화폐 시장은 24시간 연중무휴로 운영되며, 가격 변동성이 높고, 규제가 부족하고, 정보 비대칭이 심각합니다. 이러한 특성 때문에 암호화폐 거래는 일반적인 투자 방식으로는 어려운 경우가 많습니다.

그래서 암호화폐 거래에는 퀀트(quant)라는 전문적인 기법이 필요합니다. 퀀트란 수학과 통계학을 기반으로 한 컴퓨터 프로그램을 이용하여 시장 데이터를 분석하고, 자동으로 거래 전략을 수립하고 실행하는 방식입니다. 퀀트는 인간의 감정이나 편견에 영향을 받지 않으며, 빠르고 정확하게 거래할 수 있습니다. 특히 암호화폐 시장에서는 퀀트가 큰 장점을 발휘할 수 있습니다.

이 강좌에서는 암호화폐 거래를 위한 퀀트의 기본 개념과 원리를 소개하고, 실제로 적용할 수 있는 예제와 코드를 제공합니다. 강좌의 목표는 다음과 같습니다.

- 암호화폐 시장의 특성과 동향을 이해한다.
- 퀀트의 역사와 정의를 안다.
- 퀀트의 주요 원칙과 방법론을 숙지한다.
- 퀀트에 필요한 수학과 통계학의 기초를 익힌다.
- 파이썬(python)과 판다스(pandas)와 같은 프로그래밍 언어와 라이브러리를 사용할 수 있다.
- 암호화폐 데이터를 수집하고 전처리하고 분석할 수 있다.
- 암호화폐 거래 전략을 설계하고 백테스팅(backtesting)하고 최적화할 수 있다.
- 암호화폐 거래 봇(trading bot)을 만들고 운영할 수 있다.

강좌는 총 10개의 단원으로 구성되어 있으며, 각 단원은 다음과 같은 내용을 다룹니다.

1. 암호화폐와 퀀트 소개
2. 암호화폐 거래를 위한 퀀트의 수학적 기초
3. 퀀트의 통계적 기초
4. 파이썬 프로그래밍 기초
5. 암호화폐 데이터 수집 및 전처리
6. 암호화폐 데이터 분석 및 시각화
7. 암호화폐 거래 전략 설계
8. 암호화폐 거래 전략 백테스팅
9. 암호화폐 거래 전략 최적화
10. 암호화폐 거래 봇 개발 및 운영

강좌를 수강하기 위해서는 다음과 같은 사전 지식이 필요합니다.

- 암호화폐에 대한 기본적인 이해: 암호화폐의 정의와 종류, 작동 원리와 장단점, 주요 용어와 개념 등을 알아야 합니다.
- 수학과 통계학에 대한 기본적인 이해: 대수학, 미적분학, 선형대수학, 확률론, 회귀분석, 시계열 분석 등의 개념과 공식을 이해하고 적용할 수 있어야 합니다.
- 컴퓨터 과학에 대한 기본적인 이해: 프로그래밍 언어(파이썬, R 등), 데이터베이스(SQL 등), 웹 스크래핑, API 사용법 등을 알아야 합니다.
- 금융 시장에 대한 기본적인 이해: 주식, 채권, 파생상품 등의 금융 상품의 특징과 가격 결정 요인, 시장의 구조와 참여자,

 

 

2. 암호화폐 거래를 위한 퀀트의 수학적 기초

- 암호화폐는 전자적인 방식으로 생성되고 전송되는 디지털 화폐이다. 암호화폐는 특정한 알고리즘에 의해 공급이 제한되고, 거래 내역은 분산된 네트워크에 기록되어 변조가 어렵다.
- 퀀트는 수학과 통계학, 컴퓨터 과학 등의 지식을 활용하여 금융 시장에서의 투자 전략을 개발하고 실행하는 전문가이다. 퀀트는 시장의 패턴과 규칙을 찾아내고, 미래의 가격 변동을 예측하고, 최적의 거래 타이밍과 포트폴리오를 결정한다.
- 암호화폐 거래를 위한 퀀트의 수학적 기초는 다음과 같은 주제들을 포함한다.

  - 확률론: 암호화폐의 가격은 불확실한 요인들에 의해 결정되므로, 확률론은 암호화폐의 미래 가격 분포를 모델링하고, 거래에 관련된 위험과 수익을 측정하는 데 필수적이다. 예를 들어, 베이즈 정리, 마르코프 체인, 브라운 운동 등의 개념들이 확률론의 중요한 도구들이다.
  - 선형대수학: 선형대수학은 다차원 공간에서의 벡터와 행렬 연산을 다루는 수학 분야이다. 선형대수학은 암호화폐 거래 데이터를 효율적으로 저장하고 처리하고, 다변량 데이터 간의 관계와 상관성을 분석하고, 차원 축소와 특징 추출 등의 기법을 적용하는 데 유용하다. 예를 들어, 고유값 분해, 특이값 분해, 주성분 분석 등의 방법들이 선형대수학의 핵심적인 알고리즘들이다.
  - 최적화: 최적화는 주어진 조건과 제약 하에서 목적 함수를 최대화하거나 최소화하는 문제를 해결하는 수학 분야이다. 최적화는 암호화폐 거래에서 최적의 포트폴리오 구성과 자산 배분을 결정하고, 거래 비용과 리스크를 최소화하고, 수익률을 극대화하는 데 필수적이다. 예를 들어, 라그랑주 승수법, 그래디언트 디센트, 콘벡스 최적화 등의 방법들이 최적화의 중요한 이론과 기법들이다.

 

3. 암호화폐 거래를 위한 퀀트의 통계적 기초

- 암호화폐 거래에서 통계적 기초를 이루는 요소는 다음과 같다.
  - 시계열 분석: 암호화폐 가격은 시간에 따라 변동하는 시계열 데이터이므로, 시계열 분석을 통해 가격의 추세, 계절성, 주기성 등을 파악하고 예측할 수 있다. 시계열 분석에는 ARIMA, GARCH, LSTM 등의 모델이 사용된다.
  - 기계학습: 암호화폐 가격은 다양한 요인에 영향을 받으므로, 기계학습을 통해 가격에 영향을 미치는 변수들을 찾고 가중치를 부여할 수 있다. 기계학습에는 회귀분석, 분류분석, 군집분석 등의 방법이 사용된다.
  - 최적화: 암호화폐 거래에서 퀀트는 수익을 극대화하고 위험을 최소화하는 최적의 포트폴리오를 구성해야 한다. 최적화에는 목적함수와 제약조건을 정의하고 수학적인 알고리즘을 적용하는 방법이 사용된다. 최적화에는 선형계획법, 동적계획법, 유전알고리즘 등이 사용된다.

 

암호화폐 거래에서 통계적 기초를 이루는 요소는 다음과 같습니다.

- 가격: 암호화폐의 시장에서의 교환 비율입니다. 가격은 수요와 공급에 따라 변동하며, 다른 암호화폐나 법정화폐와의 환율을 나타냅니다.
- 거래량: 일정 기간 동안 암호화폐가 거래된 총량입니다. 거래량은 암호화폐의 인기와 활동도를 반영하며, 가격 변동에 영향을 줄 수 있습니다.
- 시가총액: 암호화폐의 총 발행량과 현재 가격의 곱입니다. 시가총액은 암호화폐의 시장 점유율과 비중을 나타냅니다.
- 변동성: 암호화폐의 가격이 얼마나 빠르고 크게 변동하는지를 측정하는 지표입니다. 변동성이 높은 암호화폐는 위험도가 높지만 수익률도 높을 수 있습니다.
- 상관계수: 두 개 이상의 암호화폐의 가격 변동이 얼마나 비슷하게 움직이는지를 나타내는 수치입니다. 상관계수가 1에 가까우면 두 암호화폐는 같은 방향으로 움직이고, -1에 가까우면 반대 방향으로 움직이며, 0에 가까우면 서로 관련이 없습니다. 상관계수는 포트폴리오 구성과 리스크 관리에 유용합니다.

 

7. 암호화폐 거래 전략 설계

 

암호화폐 거래 전략 설계를 구체적으로 알아보자

암호화폐는 전통적인 금융 시장과는 다른 특징과 규칙을 가진 새로운 자산 클래스입니다. 따라서 암호화폐 거래에 성공하기 위해서는 적절한 전략을 설계하고 실행하는 것이 매우 중요합니다. 이번 글에서는 암호화폐 거래 전략을 설계하는 과정에 대해 구체적으로 알아보겠습니다.

암호화폐 거래 전략을 설계하는 데에는 다음과 같은 단계가 필요합니다.

1. 목표와 기대수익률 설정하기
2. 거래할 암호화폐와 시장 선택하기
3. 거래 방식과 스타일 결정하기
4. 거래 신호와 규칙 정의하기
5. 리스크 관리와 자금 관리 계획 수립하기
6. 백테스팅과 포워드 테스팅 실시하기
7. 실제 거래에 적용하고 성과 평가하기

각 단계에 대해 자세히 살펴보겠습니다.

1. 목표와 기대수익률 설정하기

암호화폐 거래 전략을 설계하기 전에 가장 먼저 해야 할 일은 자신의 목표와 기대수익률을 설정하는 것입니다. 목표는 단기적인 것과 장기적인 것으로 나눌 수 있으며, 기대수익률은 자신의 자본금 대비 얼마나 수익을 낼 수 있는지를 나타내는 지표입니다. 목표와 기대수익률을 설정할 때는 다음과 같은 점들을 고려해야 합니다.

- 자신의 자본금 규모와 리스크 허용도를 파악하고, 과도한 욕심을 부리지 않는다.
- 시장 상황과 변동성에 따라 목표와 기대수익률을 유연하게 조정한다.
- 목표와 기대수익률을 정량적으로 측정할 수 있는 지표로 설정한다.
- 목표와 기대수익률을 달성하기 위한 구체적인 행동 계획을 수립한다.

예를 들어, 자신의 자본금이 100만 원이고, 월 10%의 수익률을 목표로 한다면, 매월 10만 원의 수익을 내야 한다는 것입니다. 이를 위해 어떤 암호화폐를 얼마나 매수하고 매도할 것인지, 어떤 시점에서 진입하고 청산할 것인지, 어떤 리스크를 감수할 것인지 등의 구체적인 행동 계획을 세워야 합니다.

2. 거래할 암호화폐와 시장 선택하기

암호화폐 거래 전략을 설계할 때 다음으로 해야 할 일은 거래할 암호화폐와 시장을 선택하는 것입니다. 암호화폐는 비트코인, 이더리움 등의 메이저 코인부터 다양한 종류의 알트코인까지

 

-----------------

암호화폐 거래 전략 상세한 python code 예제

안녕하세요, 암호화폐 거래에 관심이 있는 분들을 위해 이번에는 암호화폐 거래 전략에 대해 상세하게 알아보고, python code 예제를 통해 실제로 구현해보는 방법을 소개하려고 합니다.

암호화폐 거래 전략이란 무엇일까요?

암호화폐 거래 전략이란, 암호화폐 시장에서 수익을 창출하기 위해 사용하는 일련의 규칙과 원칙을 말합니다. 암호화폐 시장은 매우 변동성이 높고 예측하기 어려운 시장이기 때문에, 잘 설계된 거래 전략을 갖는 것은 매우 중요합니다.

암호화폐 거래 전략은 크게 두 가지로 나눌 수 있습니다. 하나는 기술적 분석을 기반으로 하는 전략이고, 다른 하나는 기본적 분석을 기반으로 하는 전략입니다.

기술적 분석을 기반으로 하는 전략은, 과거의 가격, 거래량, 시간 등의 데이터를 차트나 그래프로 표현하고, 이를 분석하여 향후 가격 움직임을 예측하는 방법입니다. 이 방법은 시장에서 자주 발생하는 패턴, 추세, 지지선과 저항선 등을 파악하여 투자 결정을 위한 진입 및 퇴장 기회를 결정합니다.

기본적 분석을 기반으로 하는 전략은, 해당 자산이 발행된 기업이나 국가의 경제, 산업, 재무 등의 기본적인 요소를 분석하여 향후 가치를 예측하는 방법입니다. 이 방법은 기업의 재무제표, 경제지표, 산업 동향 등을 분석하여 해당 자산의 가치를 예측합니다. 이를 통해 기업이나 국가의 성장 가능성, 경쟁력, 재무 상황 등을 파악하며, 이를 바탕으로 향후 가치를 예측합니다.

기술적 분석과 기본적 분석은 서로 보완적인 관계에 있습니다. 즉, 어느 한 쪽만 사용하는 것보다 두 가지를 모두 고려하는 것이 더 좋은 결과를 가져올 수 있습니다.

암호화폐 거래 전략의 종류와 python code 예제

암호화폐 거래 전략은 다양한 종류가 있습니다. 여기서는 가장 대표적인 몇 가지를 소개하고, 각각에 대한 python code 예제를 제공하겠습니다.

1. 크립토 데이 트레이딩 (Crypto Day Trading)

크립토 데이 트레이딩은 같은 날에 포지션을 열고 닫는 단기 거래 전략입니다. 이 전략은 암호화폐 시장의 변동성을 활용하여 작은 이익을 내는 것을 목표

--------------------

암호화폐 거래 전략은 다양한 종류가 있습니다. 여기서는 가장 대표적인 몇 가지를 소개합니다.

- 트렌드 추종 전략: 이 전략은 암호화폐의 가격이 일정한 방향으로 움직이는 트렌드를 파악하고, 그 방향에 따라 매수 또는 매도하는 방식입니다. 예를 들어, 상승 트렌드에서는 저점에서 매수하고 고점에서 매도하며, 하락 트렌드에서는 고점에서 매도하고 저점에서 매수합니다. 트렌드 추종 전략은 장기적인 시각으로 시장을 분석하고, 변동성이 큰 시장에서 유리합니다.
- 반전 전략: 이 전략은 암호화폐의 가격이 트렌드의 반대 방향으로 움직일 것이라고 예상하고, 그 시점에 매수 또는 매도하는 방식입니다. 예를 들어, 상승 트렌드에서는 과매수 상태가 되면 매도하고, 하락 트렌드에서는 과매도 상태가 되면 매수합니다. 반전 전략은 단기적인 시각으로 시장을 분석하고, 변동성이 작은 시장에서 유리합니다.
- 스캘핑 전략: 이 전략은 암호화폐의 가격이 작은 범위 내에서 움직일 때, 그 범위의 상단과 하단에서 반복적으로 매수 또는 매도하는 방식입니다. 예를 들어, 가격이 10000원과 10100원 사이에서 움직인다면, 10000원에 매수하고 10100원에 매도하는 것을 반복합니다. 스캘핑 전략은 초단기적인 시각으로 시장을 분석하고, 수수료와 슬리피지에 주의해야 합니다.
- 아비트라지 전략: 이 전략은 암호화폐의 가격이 다른 거래소나 플랫폼에서 차이가 날 때, 그 차이를 이용하여 동시에 매수와 매도를 하는 방식입니다. 예를 들어, 거래소 A에서 비트코인의 가격이 10000원이고, 거래소 B에서 비트코인의 가격이 10100원이라면, 거래소 A에서 비트코인을 사고 거래소 B에서 비트코인을 팔아 100원의 이익을 얻습니다. 아비트라지 전략은 신속한 거래와 낮은 수수료가 필요합니다.

----------------------

- 암호화폐 거래 트렌드 추종 전략이란 시장의 방향성을 파악하고 그에 따라 매수 또는 매도를 결정하는 전략입니다.
- 트렌드 추종 전략은 장기적인 시장의 움직임을 반영하기 때문에 변동성이 높은 암호화폐 시장에서도 안정적인 수익을 낼 수 있습니다.
- 트렌드 추종 전략을 구현하기 위해서는 다음과 같은 요소들이 필요합니다.
  - 트렌드를 정의하는 지표: 예를 들어 이동 평균선, 볼린저 밴드, MACD 등이 있습니다.
  - 트렌드의 방향과 강도를 판단하는 규칙: 예를 들어 상승 트렌드일 때는 골든크로스, 하락 트렌드일 때는 데드크로스 등이 있습니다.
  - 진입과 청산을 결정하는 신호: 예를 들어 상승 트렌드에서는 저점에서 매수하고 고점에서 매도하며, 하락 트렌드에서는 고점에서 매도하고 저점에서 매수합니다.
  - 손절과 익절을 관리하는 방법: 예를 들어 스톱로스, 트레일링 스톱, 타겟 프라이스 등이 있습니다.
- 파이썬으로 트렌드 추종 전략을 구현하는 코드는 다음과 같습니다. (참고: )
  

 

안녕하세요. 이것은 파이썬으로 만드는 암호화폐 자동 거래 시스템에 대한 텍스트입니다. 텍스트는 다음과 같은 특징을 가집니다.

- 전문적인 어조로 작성되었습니다.
- 길이가 길어서 코드 블록 문법으로 감싸져 있습니다.
- 불릿 포인트 리스트 형식으로 구성되어 있습니다.

텍스트의 내용은 다음과 같습니다.

python
# 필요한 모듈 임포트
import pyupbit
import pandas as pd
import numpy as np
import time

# 업비트 API 접속
access_key = "your_access_key"
secret_key = "your_secret_key"
upbit = pyupbit.Upbit(access_key, secret_key)

# 거래할 코인 설정
coin = "KRW-BTC"

# 트렌드를 정의하는 지표 설정 (볼린저 밴드)
def get_bbands(df):
# 중심선: 20일 이동 평균선
df['MA20'] = df['close'].rolling(20).mean()
# 상단선: 중심선 + (2 * 표준편차)
df['UB'] = df['MA20'] + (2 * df['close'].rolling(20).std())
# 하단선: 중심선 - (2 * 표준편차)
df['LB'] = df['MA20'] - (2 * df['close'].rolling(20).std())
return df

# 트렌드의 방향과 강도를 판단하는 규칙 설정 (상승/

 

---------------------

openai 사이트에서 계속

 

코드의 일부가 누락되어 있어 완전한 동작을 확인할 수 없습니다. 그러나 제공된 코드 일부를 기반으로 일반적인 설명을 제공할 수 있습니다.

이 코드는 파이썬으로 작성된 업비트 API를 사용하여 코인 거래를 자동화하는 코드입니다.

pyupbit, pandas, numpy, time 등의 모듈이 사용되며, 업비트 API에 접속하기 위해 개인 API키가 필요합니다.

coin 변수는 거래하고자 하는 코인을 설정하는 변수이며, get_bbands 함수는 주어진 DataFrame에 대해 볼린저 밴드 지표를 계산합니다.

이 코드에서는 볼린저 밴드를 사용하여 트렌드의 방향과 강도를 판단합니다. 상승 또는 하락 트렌드를 판단하기 위해 상단선(UB)과 하단선(LB)을 계산합니다. 만약 현재 가격이 상단선을 돌파하면 상승 트렌드로 판단하고, 하락 트렌드로 판단하기 위해서는 하단선을 돌파하는지 여부를 확인합니다.

이 코드의 전체적인 동작은 다음과 같습니다.

  1. 업비트 API에 접속하여 계좌 정보 확인
  2. 설정된 코인에 대한 현재 가격 정보 확인
  3. 볼린저 밴드 지표 계산
  4. 현재 가격이 상단선을 돌파하는지, 하단선을 돌파하는지 여부 확인
  5. 상승/하락 트렌드에 따라 매수/매도 결정
  6. 일정 시간 간격으로 2~5번 과정 반복
 
 
위 코드를 매수 매도를 포함해서 완성시켜줘
 
 

코드를 완성하기 위해서는 몇 가지 추가 정보가 필요합니다. 예를 들어, 매수 및 매도 전략에 대한 규칙, 매수 및 매도 주문을 실행하는 방법, 주문 체결 상태를 모니터링하는 방법 등이 있습니다. 이러한 정보를 모두 고려하여 완전한 코드를 작성하는 것은 어렵기 때문에 대략적인 코드 예시를 제공하겠습니다.

다음은 간단한 매수/매도 전략과 주문 실행 방법을 포함한 코드 예시입니다.

import pyupbit
import time

access_key = "your_access_key"
secret_key = "your_secret_key"

# upbit 객체 생성
upbit = pyupbit.Upbit(access_key, secret_key)

# 거래할 코인 설정
coin = "KRW-BTC"

# 매수/매도 전략 설정
def strategy(df):
    # 현재 가격 정보 추출
    current_price = pyupbit.get_current_price(coin)

    # 볼린저 밴드 지표 계산
    df = get_bbands(df)

    # 상승/하락 트렌드 판단
    if current_price > df['UB'][-1]:
        # 상승 트렌드일 경우 매수
        buy_result = upbit.buy_market_order(coin, 50000)
        print("매수 주문 결과:", buy_result)
    elif current_price < df['LB'][-1]:
        # 하락 트렌드일 경우 매도
        sell_result = upbit.sell_market_order(coin, 50000)
        print("매도 주문 결과:", sell_result)

# 메인 루프
while True:
    try:
        # 가격 정보 불러오기
        df = pyupbit.get_ohlcv(coin, interval='minute5')

        # 매수/매도 전략 수행
        strategy(df)

        # 일정 시간 대기
        time.sleep(60)
    except Exception as e:
        print(e)
        time.sleep(1)

위 코드에서는 strategy 함수에서 볼린저 밴드 지표를 계산하고, 현재 가격이 상단선을 돌파하면 매수 주문을, 하단선을 돌파하면 매도 주문을 실행합니다. 매수/매도 주문에 대한 크기는 50000원으로 설정되어 있습니다. 루프에서는 일정 시간마다 가격 정보를 가져오고, 매수/매도 전략을 실행합니다. try/except 블록을 사용하여 오류가 발생할 경우 대응합니다.

 

------

 

위 코드를 백테스팅 실행하는 코드로 바꿔줘
 

위 코드를 백테스팅으로 바꾸기 위해서는, while 루프 대신에 백테스팅 라이브러리를 사용하여 백테스팅을 실행하는 함수를 작성해야 합니다.

다음은 pybacktest 라이브러리를 사용하여 간단한 백테스팅을 실행하는 코드입니다.

 
import pyupbit
import pybacktest
import pandas as pd
import numpy as np

# 업비트 API 접속
access_key = "your_access_key"
secret_key = "your_secret_key"
upbit = pyupbit.Upbit(access_key, secret_key)

# 거래할 코인 설정
coin = "KRW-BTC"

# 트렌드를 정의하는 지표 설정 (볼린저 밴드)
def get_bbands(df):
    # 중심선: 20일 이동 평균선
    df['MA20'] = df['close'].rolling(20).mean()
    # 상단선: 중심선 + (2 * 표준편차)
    df['UB'] = df['MA20'] + (2 * df['close'].rolling(20).std())
    # 하단선: 중심선 - (2 * 표준편차)
    df['LB'] = df['MA20'] - (2 * df['close'].rolling(20).std())
    return df

# 매수/매도 전략 함수
def strategy(price, ub, lb):
    if price > ub:
        # 상승 트렌드일 경우 매수
        return 1
    elif price < lb:
        # 하락 트렌드일 경우 매도
        return -1
    else:
        return 0

# 백테스팅 함수
def backtest(ohlcv):
    # 볼린저 밴드 지표 계산
    df = get_bbands(ohlcv)

    # 매수/매도 전략 수행
    signals = pd.Series(index=df.index)
    for i in range(1, len(df)):
        signals.iloc[i] = strategy(df['close'][i], df['UB'][i-1], df['LB'][i-1])

    # 수익률 계산
    pf = pybacktest.Backtest(locals(), 'signals', commission=.0005, exclusive_orders=True)
    return pf.data

# OHLCV 데이터 가져오기
ohlcv = pyupbit.get_ohlcv(coin, interval='minute5')

# 백테스팅 실행
result = backtest(ohlcv)

# 결과 출력
print(result.head())

 

위 코드에서는 backtest 함수에서 매수/매도 전략을 수행하고, 백테스팅 결과를 반환합니다. strategy 함수는 현재 가격이 상단선을 돌파하면 매수 주문을, 하락 트렌드일 경우 매도 주문을 실행합니다. 매수/매도 주문에 대한 크기는 1로 고정되어 있

 
----------------
 
google colaboratory에서 pybacktest 라이브러리 설치가 안되서...
 
다른 backtest 라이브러리를 사용하는 코드로 바꿔줘
 

다른 백테스팅 라이브러리인 bt 라이브러리를 사용하여 위 코드를 바꿔보겠습니다. bt 라이브러리는 pandas 데이터프레임과 유사한 bt.feeds.PandasData 객체를 사용하여 백테스팅 데이터를 처리하며, bt 클래스를 상속한 매매 전략 클래스를 작성하여 매매 전략을 구현합니다.

import pyupbit
import bt
import pandas as pd
import numpy as np

# 업비트 API 접속
access_key = "your_access_key"
secret_key = "your_secret_key"
upbit = pyupbit.Upbit(access_key, secret_key)

# 거래할 코인 설정
coin = "KRW-BTC"

# 트렌드를 정의하는 지표 설정 (볼린저 밴드)
def get_bbands(df):
    # 중심선: 20일 이동 평균선
    df['MA20'] = df['close'].rolling(20).mean()
    # 상단선: 중심선 + (2 * 표준편차)
    df['UB'] = df['MA20'] + (2 * df['close'].rolling(20).std())
    # 하단선: 중심선 - (2 * 표준편차)
    df['LB'] = df['MA20'] - (2 * df['close'].rolling(20).std())
    return df

# 매수/매도 전략 클래스
#class BBands(bt.Algo):
class BBands(bt.Strategy):
    def __init__(self, ub, lb):
        self.ub = ub
        self.lb = lb

    def __call__(self, target):
        if target.now > 0:
            if target.price > self.ub:
                target.order_target_percent(target=1)
            elif target.price < self.lb:
                target.order_target_percent(target=0)
        return True

# 백테스팅 함수
def backtest(ohlcv):
    # 볼린저 밴드 지표 계산
    df = get_bbands(ohlcv)

    # 데이터프레임을 bt.feeds.PandasData로 변환
    data = bt.feeds.PandasData(dataname=df)

    # 백테스팅 엔진 설정
    cerebro = bt.Cerebro()
    cerebro.adddata(data)

    # 매매 전략 설정
    cerebro.addstrategy(BBands, ub=df['UB'].iloc[-1], lb=df['LB'].iloc[-1])

    # 초기 자본금 설정
    cerebro.broker.setcash(1000000)

    # 수수료 설정
    cerebro.broker.setcommission(commission=0.0005)

    # 백테스팅 실행
    cerebro.run()

    # 결과 반환
    return cerebro

# OHLCV 데이터 가져오기
ohlcv = pyupbit.get_ohlcv(coin, interval='minute5', count=5000)

# 백테스팅 실행
result = backtest(ohlcv)

# 결과 출력
print(result.broker.getvalue())
 
 
 

 

반응형
반응형

암호화폐 트레이딩을 위한 퀀트 모델을 구축하자. 
퀀트 모델의 정의와 종류, 필요한 데이터와 도구, 모델 검증과 최적화 방법을 다룬다.
 
암호화폐 트레이딩을 위한 퀀트 모델을 구축하자. 퀀트 모델이란 수학적이고 통계적인 기법을 이용하여 시장에서 수익을 창출하는 알고리즘을 말한다. 퀀트 모델의 종류에는 기술적 분석, 기본적 분석, 머신러닝, 강화학습 등이 있다. 암호화폐 트레이딩을 위한 퀀트 모델을 구축하기 위해서는 다음과 같은 단계를 거쳐야 한다.

- 필요한 데이터와 도구를 준비한다. 암호화폐 시장의 가격, 거래량, 거래소 정보 등의 데이터를 수집하고, 데이터를 처리하고 분석할 수 있는 프로그래밍 언어와 라이브러리를 선택한다.
- 퀀트 모델을 설계하고 구현한다. 데이터를 기반으로 가설을 세우고, 적절한 모델을 선택하거나 개발한다. 모델의 입력과 출력, 매매 전략, 리스크 관리 등을 정의한다.
- 퀀트 모델을 검증하고 최적화한다. 모델의 성능과 안정성을 평가하기 위해 백테스팅과 포워드 테스팅을 수행한다. 모델의 파라미터를 조정하거나 새로운 요소를 추가하여 모델을 개선한다.
 
- 퀀트 모델의 정의와 종류
퀀트 모델이란 주식 시장에서 가격 변동을 예측하거나 투자 전략을 수립하는 데 사용되는 수학적 모델입니다. 퀀트 모델은 다양한 종류가 있으며, 각각의 목적과 방법에 따라 분류할 수 있습니다. 예를 들어, 퀀트 모델은 시계열 분석, 인공지능, 기계학습, 통계학 등의 기법을 적용할 수 있습니다. 또한, 퀀트 모델은 주가 움직임의 패턴을 찾는 기술적 분석 모델과 주식의 내재 가치를 평가하는 기본적 분석 모델로 나눌 수 있습니다. 퀀트 모델은 과학적이고 체계적인 접근 방식을 제공하지만, 모든 상황에 적용할 수 있는 완벽한 모델은 없으므로, 퀀트 투자자들은 자신의 모델을 지속적으로 검증하고 개선해야 합니다.
 
- 퀀트 필요한 데이터와 도구
퀀트 필요한 데이터와 도구에 대해 알아보겠습니다. 퀀트란 수학, 통계학, 컴퓨터 과학 등의 전문 지식을 활용하여 금융 시장에서 투자 전략을 개발하고 실행하는 전문가를 말합니다. 퀀트는 다양한 데이터를 수집하고 분석하여 시장의 흐름을 파악하고 예측하는 능력이 필요합니다. 따라서 퀀트에게 필요한 데이터는 주가, 거래량, 이자율, 환율, 경제 지표 등과 같은 금융 데이터뿐만 아니라 사회적, 정치적, 환경적 등의 비정형 데이터도 포함됩니다. 퀀트에게 필요한 도구는 데이터를 처리하고 분석할 수 있는 프로그래밍 언어와 소프트웨어입니다. 예를 들어 파이썬, R, 매트랩, SQL 등의 언어와 엑셀, SAS, SPSS 등의 소프트웨어가 흔히 사용됩니다. 또한 인공지능, 머신러닝, 딥러닝 등의 최신 기술도 퀀트의 도구로 활용될 수 있습니다. 이러한 데이터와 도구를 잘 활용하여 효과적인 투자 전략을 수립하고 실행하는 것이 퀀트의 역할입니다.
 
- 퀀트 데이터를 다루는 python 예제 코드
퀀트 데이터를 다루는 python 예제 코드

퀀트 투자란 데이터를 기반으로 주식시장에서 수익을 내는 투자 방식입니다. 파이썬은 퀀트 투자에 필요한 다양한 라이브러리와 도구를 제공하며, 쉽고 강력한 프로그래밍 언어입니다. 이번 글에서는 파이썬을 이용하여 퀀트 데이터를 다루는 예제 코드를 소개하겠습니다.

1. 주가 데이터 불러오기
파이썬에서 주가 데이터를 불러오기 위해서는 pandas_datareader 라이브러리를 사용할 수 있습니다. 이 라이브러리는 여러 가지 데이터 소스로부터 주가 데이터를 가져올 수 있습니다. 예를 들어, 네이버 금융에서 삼성전자의 2021년 1월부터 3월까지의 주가 데이터를 불러오려면 다음과 같은 코드를 작성할 수 있습니다.

python
import pandas_datareader as pdr
import datetime

start = datetime.datetime(2021, 1, 1)
end = datetime.datetime(2021, 3, 31)
df = pdr.DataReader('005930.KS', 'naver', start, end)
print(df.head())
```

결과는 다음과 같습니다.

```
Open High Low Close Volume
Date
2021-01-04 81000 84400 80200 83000 38655276
2021-01-05 81600 83900 81600 83900 35335669
2021-01-06 83300 84500 82100 82200 42089013
2021-01-07 82800 84200 82700 82900 32644642
2021-01-08 83300 90000 83000 88800 59013307
```
google colaboratory 에서 오류 발생해서 아래와 같이 다시 작성
# finance-datareader 설치
!pip install finance-datareader
 
# 금융 데이터 리더 사용하기
import FinanceDataReader as fdr

# 삼성전자(005930) 데이터 불러오기
df = fdr.DataReader('005930')

df.head()
 

2. 주가 데이터 분석하기
주가 데이터를 불러온 후에는 pandas 라이브러리를 이용하여 분석할 수 있습니다. pandas는 데이터프레임이라는 자료구조를 제공하며, 이를 통해 행과 열로 구성된 테이블 형태의 데이터를 쉽게 조작할 수 있습니다. 예를 들어, 삼성전자의 종가(Close)에 대한 기술적 분석 지표인 이동평균선(Moving Average)을 구하고 시각화하려면 다음과 같은 코드를 작성할 수 있습니다.

```python
import pandas as pd
import matplotlib.pyplot as plt

# 이동평균선 구하기
df['MA5'] = df['Close'].rolling(5).mean() #5일 이동평균선
df['MA20'] = df['Close'].rolling(20).mean() #20일 이동평균선

# 시각화하기
plt.figure(figsize=(10,6))
plt.plot(df.index, df['Close'], label='Close')
plt.plot(df.index, df['MA5'], label='MA5')
plt.plot(df.index, df['MA20'], label='MA20')
plt.legend()
plt.title('Samsung Stock Price with Moving Averages')
plt.show()
```

결과는 다음과 같습니다.

![Samsung Stock Price with Moving Averages](https://i.imgur.com/0yQwZ9r.png)

 

3. 주가 데이터 전략 구현하기

주가 데이터를 분석한 후에는 전략을 구현하여 실제로 수익을 낼 수 있는지 확인해야 합니다. 이를 위해 백테스팅이라는 방법을 사용합니다. 백테스팅이란 과거의 주가 데이터를 이용하여 내가 작성한 전략 알고리즘이 어느 정도 수익률을 낼 수 있는지 시뮬레이션하는 것입니다. 백테스팅을 통해 전략의 성능을 평가하고, 개선할 부분을 찾아볼 수 있습니다.

 

백테스팅을 하기 위해서는 다음과 같은 순서를 따릅니다.

 

1. 원하는 종목의 주가 데이터 가져오기

2. 주가 데이터를 원하는 형태로 가공하기

3. 사고, 파는 시점 적어두기

4. 종가 이용해서 수익률 구하기

5. 이 과정을 여러 종목 또는 파라미터 바꿔서 수행하기

 

이번 포스트에서는 파이썬의 backtrader라는 라이브러리를 이용하여 백테스팅을 해보겠습니다. backtrader는 주식, 선물, 외환 등 다양한 금융 상품에 대한 백테스팅을 지원하는 파이썬 라이브러리입니다. backtrader를 사용하면 쉽고 빠르게 전략을 구현하고, 결과를 시각화할 수 있습니다.

 

backtrader 설치하려면 다음과 같은 명령어를 입력합니다.

bash
pip install backtrader
```

backtrader를 사용하기 위해서는 다음과 같은 개념들을 알아야 합니다.

- Cerebro: 백테스팅 엔진의 핵심 클래스입니다. 데이터, 전략, 브로커, 분석기 등을 추가하고, 백테스팅을 실행합니다.
- Data Feed: 백테스팅에 사용할 데이터를 제공하는 클래스입니다. backtrader에서는 다양한 형식의 데이터를 지원합니다.
- Strategy: 백테스팅에 사용할 전략을 정의하는 클래스입니다. 매수, 매도 등의 로직을 작성합니다.
- Broker: 백테스팅에 사용할 거래소를 모사하는 클래스입니다. 자본금, 수수료, 슬리피지 등의 설정을 할 수 있습니다.
- Analyzer: 백테스팅 결과를 분석하는 클래스입니다. 수익률, 샤프 비율, MDD 등의 지표를 계산합니다.

이제 backtrader를 이용하여 삼성전자의 주가 데이터에 대해 변동성 돌파 전략을 적용해보겠습니다. 변동성 돌파 전략이란 다음과 같은 규칙으로 매매하는 전략입니다.

- 매수: 오늘 시가에 어제 고가와 저가의 차이인 변동폭의 k배만큼 상승하면 매수
- 매도: 다음 날 시가에 매도
- k값은 0.5로 설정

먼저, 삼성전자의 일별 시세 데이터를 가져오겠습니다. 네이버 금융에서 csv 파일로 다운로드 받아서 사용하겠습니다.

python
# backtrader를 임포트합니다.
import backtrader as bt

# 변동성 돌파 전략을 구현한 클래스를 정의합니다.
class VolatilityBreakout(bt.Strategy):
    # 전략에 사용할 파라미터를 설정합니다.
    params = dict(
        k = 0.5 # 변동폭의 k배
    )

    # 초기화 메서드입니다.
    def __init__(self):
        # 시가, 고가, 저가 데이터를 가져옵니다.
        self.open = self.data.open
        self.high = self.data.high
        self.low = self.data.low

        # 변동폭을 계산합니다.
        self.range = self.high(-1) - self.low(-1)

        # 매수가격과 매도가격을 저장할 변수를 만듭니다.
        self.buy_price = None
        self.sell_price = None

    # 매매 로직을 정의한 메서드입니다.
    def next(self):
        # 매수 주문이 없고, 시가에 변동폭의 k배만큼 상승하면 매수합니다.

        if not self.position and self.open > self.open(-1) + self.range * self.p.k:

        # 오류발생 -> 아래 링크에서 수정한 코드를 확인하세요.


            # 매수가격을 저장합니다.
            self.buy_price = self.open
            # 매수 주문을 보냅니다. 사이즈는 1로 고정합니다.
            self.buy(size=1)
            # 매수 시점을 로그로 출력합니다.
            print(f'매수: {self.data.datetime.date(0)}, 가격: {self.buy_price}')

        # 매수 주문이 있고, 다음 날이 되면 매도합니다.
        elif self.position and len(self) > 1:
            # 매도가격을 저장합니다.
            self.sell_price = self.open
            # 매도 주문을 보냅니다. 사이즈는 1로 고정합니다.
            self.sell(size=1)
            # 매도 시점과 수익률을 로그로 출력합니다.
            print(f'매도: {self.data.datetime.date(0)}, 가격: {self.sell_price}, 수익률: {(self.sell_price / self.buy_price - 1) * 100:.2f}%')

# 백테스팅을 위한 세팅을 합니다.
cerebro = bt.Cerebro() # 백테스터 객체를 생성합니다.
cerebro.addstrategy(VolatilityBreakout) # 전략을 추가합니다.
data = bt.feeds.PandasData(dataname=df) # 데이터를 로드합니다.
cerebro.adddata(data) # 데이터를 백테스터에 추가합니다.
cerebro.broker.setcash(10000000) # 초기 자본을 설정합니다.

# 백테스팅을 실행하고 최종 자본을 출력합니다.
print(f'초기 자본: {cerebro.broker.getvalue():,.0f}원')
cerebro.run()
print(f'최종 자본: {cerebro.broker.getvalue():,.0f}원')

 
이제 backtrader를 이용하여 삼성전자의 주가 데이터에 대해 변동성 돌파 전략을 적용해보았습니다. 이 코드는 간단한 예시이므로 실제 투자에 사용하기 전에는 더 많은 테스트와 검증이 필요합니다. backtrader는 다양한 기능과 확장성을 제공하는 파이썬 기반의 백테스팅 라이브러리입니다. 관심있는 분들은 공식 문서나 블로그를 참고하여 더 많은 정보를 얻으시기 바랍니다. 감사합니다.🙏

 
========= version 2 ===========
 
python
# backtrader를 임포트합니다.
import backtrader as bt

# 변동성 돌파 전략을 구현하는 클래스를 정의합니다.
class VolatilityBreakout(bt.Strategy):
    # 매개변수를 설정합니다. k값은 0.5로 고정합니다.
    params = dict(
        k = 0.5
    )

    # 초기화 메서드입니다.
    def __init__(self):
        # 시가, 고가, 저가 데이터를 가져옵니다.
        self.open = self.data.open
        self.high = self.data.high
        self.low = self.data.low

        # 변동폭을 계산합니다. 어제 고가와 저가의 차이에 k값을 곱합니다.
        self.range = (self.high(-1) - self.low(-1)) * self.p.k

        # 매수 신호를 정의합니다. 오늘 시가에 변동폭을 더한 값보다 현재 가격이 높으면 매수합니다.
        self.buy_signal = bt.ind.CrossUp(self.data.close, self.open + self.range)

        # 매도 신호를 정의합니다. 다음 날 시가에 매도합니다.
        self.sell_signal = bt.ind.CrossDown(self.data.close, self.open(1))

    # 다음 바 데이터가 들어올 때마다 실행되는 메서드입니다.
    def next(self):
        # 매수 신호가 발생하고 현재 포지션이 없으면 매수합니다.
        if self.buy_signal and not self.position:
            self.buy()

        # 매도 신호가 발생하고 현재 포지션이 있으면 매도합니다.
        if self.sell_signal and self.position:
            self.sell()

# 백테스팅을 위한 세팅을 합니다.
cerebro = bt.Cerebro() # 백테스터 객체를 생성합니다.
cerebro.addstrategy(VolatilityBreakout) # 전략 클래스를 추가합니다.
data = bt.feeds.PandasData(dataname=df) # 삼성전자 데이터를 불러옵니다.
cerebro.adddata(data) # 데이터를 백테스터에 추가합니다.
cerebro.broker.setcash(10000000) # 초기 자본을 1000만원으로 설정합니다.

# 백테스팅을 실행하고 결과를 출력합니다.
print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
cerebro.run()
print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())
 
이렇게 backtrader를 이용하여 삼성전자의 주가 데이터에 대해 변동성 돌파 전략을 적용해보았습니다. 이 전략은 단순하지만 효과적인 방법으로 시장의 흐름을 따라가는 방식입니다. 하지만 실제로 거래할 때는 수수료, 슬리피지 등의 요인을 고려해야 하므로 주의해야 합니다. backtrader는 다양한 기능과 유연성을 제공하는 파이썬 기반의 백테스팅 라이브러리입니다. 관심있는 분들은 공식 문서나 예제 코드를 참고하여 다른 전략이나 데이터에도 적용해보시기 바랍니다. 감사합니다.
 
여기까지 테스트
https://colab.research.google.com/drive/1T0lXYHUGrJbKYjAWCmpwk6ae45iAPWAh#scrollTo=tIp2LChll6-Z
 
 
퀀트관련 참고할만한 사이트
https://jonghyunho.github.io/
 

반응형
반응형

성공 습관, 성향, 의지력

 

나는 왜 그런 선택을 했을까?

 

목표와 계획을 이루기 위해 지속적인 선택에서 같은 결정을 유지해야 함

 

끝까지 해보는 경험이 중요함

 

끝까지 해보지 않은 경험과 기억은 이후 의사결정에도 부정적인 영향을 미침

아비투스


[출처] https://namu.wiki/w/%EC%95%84%EB%B9%84%ED%88%AC%EC%8A%A4

 

사회학자 피에르 부르디외가 만든 개념. 원어는 'Habitus'인데, 프랑스어 발음대로 읽으면 'u'가 전설 원순 고모음 /y/으로 발음되어 '아비튀스'에 가깝지만, 외래어 표기가 복잡해져서 라틴어식 표기인 '하비투스'와 짬뽕이 되어 무슨 언어의 어휘인지도 모를 어정쩡한 표기가 되어버렸다. [1] 한국에서는 보통 '아비투스'라고 하며, 영어 발음은 '해비터스'에 가깝다. 습관을 의미하는 habit과 같은 어원임을 알 수 있다.

 

Habitus. 개인의 취향은 배경과 환경, 가치관, 분위기, 종교, 사상, 권력이나 계층과 같은 사회문화적 환경에 의해 결정된다는 이야기 혹은 그런 것을 모두 포괄하는 용어. 이것이 하루아침에 형성되지 않고, 짧게는 20~30년, 심하면 수세대간 내려온 경험과 문화가 축적된 것이라서 쉽게 바꾸거나 극복하기 어렵다는 개념이다.

 

아비투스뇌 속에 구조화된 성향체계를 말하는데 인간이 특정 행동에 대해 취하는 특정 제스처나 무언가를 다른 것에 비해 선호하는 경향도 이에 속한다.

 

개인의 습관 정도로 이해하면 편하다. 홍성민이 쓴 책인 '취향의 정치학'에서는 아비투스를 '습관'으로 썼는데 '아비투스'의 본 의미를 아주 대체하지는 못하나 어느 정도는 납득되는 번역이다. 


 

 

경험 -> 기억 -> 가치판단(의식, 무의식) -> 의사결정(선택)

 

우리가 목표한 것이 있고 그 결정을 지키기 위해 노력해야 한다면 지속적으로 같은 결정을 유지해야 한다.

 

많은 시간과 노력이 필요한 목표나 계획은 지속적으로 같은 결정을 유지할 수 있어야 한다.

 

그러기 위해서는 "끝까지 해보는 경험"이 필요한다.

 

https://youtu.be/XzZk3o_Ew5E

 

반응형

'생각' 카테고리의 다른 글

싱크 어게인(Think Again)  (1) 2024.02.27
GPT-3 프롬프트와 신경언어 프로그래밍(NLP)  (0) 2023.01.12
퍼스널 브랜딩  (0) 2022.12.27
집중과 몰입  (1) 2022.12.14
감정 훈련  (0) 2022.12.13

+ Recent posts