첫 번째 시도QuantX(목표, 개발 환경 구축 등)

자기 소개


이번에 스마트트레이드에서 인턴으로 일한 제이입니다.
샤오제에 대해서 알고 싶은 사람이 여기 있어요.
https://www.investor-gon.com/

QuantX란


그럼 바로 소개해드릴게요.

주식회사 Smart Trade의 서비스
QuantX 팩토리는 자동 매매 알고리즘을 개발, 실행, 판매할 수 있는 클라우드 서비스(개발자 대상)
퀀트X는 방대한 주식 품목에서'가격이 오르고 가격이 하락하는 주식'을 예측하는 알고리즘을 구매해 활용할 수 있는 서비스다.(일반인을 향해)
회사 소개 여기 있습니다.

먼저 등록하세요!!


https://factory.quantx.io/

샘플 코드는 이런 느낌이에요.


간단하게 설명해 드릴게요.
1:주가 읽기(주식 선택)
2:전략서 쓰기(매매서명)
3: 실행
오직~
갑자기 보니까 좀 쉽네 웃어
############################################################################
# Sample Algorithm

def initialize(ctx):
    # 設定
    ctx.logger.debug("initialize() called")
    ctx.configure(
      channels={          # 利用チャンネル
        "jp.stock": {
          "symbols": [
            "jp.stock.1305",
            "jp.stock.9984",
            "jp.stock.9983",
            "jp.stock.7201",
            "jp.stock.9201",
            "jp.stock.9202",
            "jp.stock.7203"
          ],
          "columns": [
            #"open_price_adj",    # 始値(株式分割調整後)
            #"high_price_adj",    # 高値(株式分割調整後)
            #"low_price_adj",     # 安値(株式分割調整後)
            #"volume_adj",         # 出来高
            #"txn_volume",         # 売買代金
            "close_price",        # 終値
            "close_price_adj",    # 終値(株式分割調整後) 
          ]
        }
      }
    )

    def _my_signal(data):
        return {
        }

    # シグナル登録
    ctx.regist_signal("my_signal", _my_signal)

def handle_signals(ctx, date, current):
    '''
    current: pd.DataFrame
    '''

    done_syms = set([])
    for (sym,val) in ctx.portfolio.positions.items():
        returns = val["returns"]
        if returns < -0.03:
          sec = ctx.getSecurity(sym)
          #sec.order(-val["amount"], comment="損切り(%f)" % returns)
          done_syms.add(sym)
        elif returns > 0.05:
          sec = ctx.getSecurity(sym)
          #sec.order(-val["amount"], comment="利益確定売(%f)" % returns)
          done_syms.add(sym)


    #buy = current["buy:sig"].dropna()
    #for (sym,val) in buy.items():
    #    if sym in done_syms:
    #      continue
    #    
    #    sec = ctx.getSecurity(sym)
    #    #sec.order(sec.unit() * 1, comment="SIGNAL BUY")
    #    #ctx.logger.debug("BUY: %s,  %f" % (sec.code(), val))
    #    pass

    #sell = current["sell:sig"].dropna()
    #for (sym,val) in sell.items():
    #    if sym in done_syms:
    #      continue
    #
    #    sec = ctx.getSecurity(sym)
    #    #sec.order(sec.unit() * -1, comment="SIGNAL SELL")
    #    #ctx.logger.debug("SELL: %s,  %f" % (sec.code(), val))
    #    pass

백 테스트


백 테스트
시스템 거래(매매 규칙)의 유효성을 검증할 때 과거의 데이터를 사용하여 일정 기간 얼마나 많은 성능을 얻었는지 시뮬레이션한다.
이런 느낌으로 나오네요~

알파치는 알고리즘의 수익률에서 시장 전체 운동(기준)과 연동된 수익을 뺀 것으로, 이 수치가 높을수록 기준 수익률이 높을수록 그에 상응하는 수익이 높다는 뜻이다.
베타값은 알고리즘의 수익이 증권시장 전체의 운동에 얼마나 민감하게 반응하고 변동하는지를 나타내는 수치다.이 수치가 높을수록 전체 증시의 변동폭(증감폭)이 크다는 의미다.
무승부는 일시적으로 최대 자산에서 떨어질 때의 하락률을 가리킨다.간단하게 말하면 계좌 안의 자산이 얼마나 손실되었는가.

향후 목표

  • 이동평균선의 매매
  • MACD 사용 매매
  • RSI 사용 거래
  • 균형표를 사용한 매매
  • 브린대를 이용한 거래
  • 이 신호 하나만 사용해서 주식 투자 알고리즘을 개발한다.
    각자 개발할 수 있으면 조합해서 쓰면 대단할 것 같아.
    5개밖에 없는데 조합이
    5c1 (5) + 5c2 (10) +5c3 (10)+ 5c4 (5) + 5c5 (1)
    = 21
    이렇게 하면 많은 돈을 벌 수 있다.웃다 웃다
    이번엔 여기까지.
    다음부터는 알고리즘 기사를 제작한다.

    좋은 웹페이지 즐겨찾기