오르비 AI-based trading bot Sindbad 수익률
1. Overview
개요
2017. 11. 오르비는 무엇을 하는 회사인가라는 글을 통해, 지난 2016. 상반기부터 1년 반 가량의 연구 기간을 거쳐 우리가 인공지능 방법론을 이용하여 자동으로 자산 거래를 하는 기계를 만들었고, 코스피200 지수 선물에 대해 운용을 시작했음을 공개한 바 있다.
이 글에서는 가장 최근 검증된 알고리즘을 지속적으로 채택해 업그레이드하며 실제 현금 10억원을 2018. 4. 투입해 운용해온 계정의 최근 성과를 업데이트한다. 이하 이 계정은 Sindbad라 부르기로 한다.
이 계정에서는 코스피200 선물 근월물만을 거래하며 그 외 다른 어떤 자산도 거래하지 않는다.
After 1.5 years of research, we started AI-based trading in November 2017, increased the size of fund to one billion won (approximately one million dollars) in April 2018. We like to update the return and metrics of the account Sindbad which actively adopts the most recent research and models. Sindbad only trades the front-month future of KOSPI 200 index.
2. Profitability, PNL
최근 수익률
파란색 선 그래프는 실제 현금 잔고이고, 회색 선 그래프는 같은 날짜에 같은 금액을 KOSPI 200 인덱스 펀드에 투자했을 경우 잔고이다. 수직방향으로 올라간 하늘색 막대 그래프는 Sindbad의 일별 거래량이다. 주황색으로 강조된 원은 선물 만기일이다. 이 그래프는 실제 현금을 운용해온 실계좌의 거래 기록을 바탕으로 그린 것으로, 해당 계좌의 거래내역은 milliseconds 단위로 모두 제시할 수 있다.
Blue line: fiat balance, Gray line: KOSPI 200 as a benchmark, faint sky blue vertical histogram: daily trading volumes(in number of contracts). The last trading days of the future are emphasized with orange circles. The trading records can be presented in milliseconds resolution.
표시 기간 : 2018-04-05 ~ 2019-01-09
Trading period
거래일 : 184
Trading days
기간중 Sindbad 수익률 : 147.1%
Sindbad return
vs
동기간 KOSPI 200 수익률 : -14.7%
KOSPI 200 return as a benchmark
2018-04-05에 1,000,000,000 원으로 시작한 Sindbad의 현재 잔고는 2,470,758,190 원이다.
Sindbad, launched on April 5, 2018 with AUM 1,000,000,000 KRW, of which the balance now is:
같은 시기 인덱스 펀드에 1,000,000,000 원을 투자했다면 현재 잔고는 853,408,180 원이다.
Meanwhile, if you put the same money into the index fund, the balance now should be:
*인덱스 펀드의 운용 수수료를 0%라고 가정하였으므로, 실제 인덱스 펀드들의 잔고는 어떤 기간 동안에는 그보다 더 낮을 수 있다.
The balance of the index fund may actually be lower due to fees.
따라서 지수 대비 outperformance는 161.7%p이며,
We outperformed the benchmark by
이를 기하평균하면 거래일당 수익은 52.43bp이다.
which is geometric average return of, per trading day
(1 bp is equivalent to 0.01%p)
Outperformance를 연간화하면 269.6%p = 2.617^(250/184)-1 이다.
or annualized rate of outperformance of
*유효숫자를 제한하기 위한 반올림으로 인해 등식의 양변이 정확히 일치하지 않을 수 있다.
Numbers presented on both sides of equations may not always coincide due to rounding.
3. Sharpe Ratio
이것은 파생상품의 큰 레버리지를 이용해 일시적으로 얻은 큰 수익이 아닌가?
단순히 선물의 레버리지만으로 높은 수익을 기록한 것이라면 변동성 대비 무위험초과수익률로 계산되는 Sharpe Ratio 값이 오르지 않는다. 큰 손실을 볼 위험을 지는 대신 큰 이익을 가져가는 것(Sharpe Ratio가 유지됨)과 손실을 볼 위험을 제한하면서 큰 이익을 가져가는 것(큰 Sharpe Ratio를 가짐)은 본질적으로 매우 다르며, 위험을 제한하며 수익을 높여서 Sharpe Ratio를 높이는 것이 실질적으로 모든 투자의 목표라고 할 수 있다. Sharpe Ratio는 무위험초과수익률 즉, 포트폴리오의 수익률에서 국채수익률을 뺀 값을 무위험초과수익률의 표준편차로 나누어 계산하는데, 이렇게 계산해 보면,
Sharpe Ratio, developed by Nobel laureate W. F. Sharpe, measures the average return against the risk(volatility) of the portfolio or fund. In case Sindbad just utilized the leverage or effective gearing of the derivatives to earn excessive profit, the Sharpe Ratio remained low due to high volatility. It is essentially different to just record extraordinary profit rate and to do so while limiting the risk of the portfolio. It is Capitalism 101 that you earn profit as a reward for risk. The higher the ratio, the more efficiently the portfolio utilizes the risk.
임의의 연속된 20거래일(약 1개월에 해당)에 대해
For any given 20 consecutive trading days (~one month)
Sindbad의 Annualized Sharpe Ratio를 계산하면 3.1086
The Annualized Sharpe Ratio of Sindbad is:
= (9.71% - 0.144%) / (10.88%) * sqrt(250/20) 이다.
이 값은 backtesting결과 혹은 추정값이 아니라 실제 거래 기록에 따라 연산된 값이며 거래수수료에 따른 손실도 모두 반영되어 있다.
This value is calculated by real trading records and trading fees are already excluded from the return.
그리고 우리 포트폴리오는 선물만을 거래할 뿐 옵션과 같은 형태의 파생상품이 없으므로 fat tails로 인한 특이 kurtosis/skewness로 인해 Sharpe Ratio가 과대평가될 위험도 없다.
There is little risk of overvaluation of the ratio due to fat tails, because the account does not trade options or other exotic delivatives, but only futures.
상기 표시된 Sharpe Ratio가 어느 정도인지에 대해서는 다음 자료들을 참조해 보라.
You may compare the Sharpe Ratio above to the following documents or papers:
* The Dow Jones Credit Suisse Hedge Fund Indexes Performance data for Oct 2011
* The Statistics of Sharpe Ratios
* Generalized Sharpe Ratios and Portfolio Performance Evaluation
Annualized Sharpe Ratio of Sindbad
calculated as:
{ (average return) - (risk free rate) } / (standard deviation of the excess return)
times
square root of ( 250 / trading days )
where
Tdays : trading days (any given consecutive sessions)
임의의 연속된 n거래일
CumAvg : the average of cumulative profit rates of the session
해당 기간 중 누적 수익률
RiskfrRt : risk free rates, calculated as geometric average of 3 year Korean treasury bond rate.
해당 기간 동안의 무위험수익률, 국채 3년물로 계산
Stdev : the standard deviation of the profit rates
수익률의 표준편차 (변동성)
SharpeR : the Sharpe ratio of the trading days
해당 거래일 동안의 Sharpe Ratio
AnnSR : annualized Sharpe ratio, which is the Sharpe ratio multiplied by the square root of (250 / trading days)
연간화한 Sharpe Ratio, 250/거래일 의 제곱근을 곱함으로써 계산
4. Turnover Ratio and Maximum Drawdown
회전율과 최대낙폭
대상 기간 : 2018-04-05 ~ 2019-01-09
Trading period
거래일 : 184
Trading days
명목금액 기준 자본회전율 : 271% per day
(equivalent to 67,750% per annum)
Turnover Ratio calculated by Notional Value or Exposure
Maximum Drawdown (MDD) of Sindbad : -20.2%
from 1,295.67M (June 14, 2018) to 1,033.72M (July 5, 2018) KRW
vs
동기간 KOSPI 200의 MDD : -20.5%
from 1,035.45M (April 30, 2018) to 823.09M (January 3, 2019) KRW
MDD of KOSPI 200 as a benchmark
5. Scalability
운용규모가 커지면 현재의 수익률을 유지할 수 없는 것이 아닌가?
거래방식 그리고 시장의 크기를 고려할 때, 이론적으로 운용규모(AUM: asset under management)가 2~3천억원 단위일 때까지는 유동성 부족이나 시장 마찰로 인한 거래 비용 증가가 거의 우려되지 않기 때문에, 운용 규모를 현재의 수십배 이상으로 늘려도 수익률은 훼손되지 않을 것으로 추정된다. 오히려 그 규모에서는 단기적인 시장의 움직임을 주도하면서 수익률이 더 오를 수 있을지도 모른다. 즉 운용규모에 따른 수익률 변화 방향에 대해서는 중립이다.
The market size and the transaction method considered, in theory the fund would not suffer additional transaction costs due to illiquidity or market friction unless the asset under management of Sindbad is less than 200~300 billion won (equivalent to $.2~.3B). Therefore it is speculated the profit rate, the Sharpe Ratio or whatever metrics would remain unchanged even though the size of the fund is increased dozens of times. The profit rate, preferably, might have increased in case the fund had been a thousand times bigger, which might have enabled the fund to lead the movement of the market in the time horizon of seconds or sometimes milliseconds. In conclusion, the relation between the AUM and the profit rate is, as for now, neutral.
만약 1조원 이상의 더 큰 규모로 운용을 한다면 현재의 Sharpe Ratio를 유지하면서 수익률의 변동성과 크기를 낮추는 방향으로 운용 전략을 어렵지 않게 조절할 수 있다.
Even though the AUM is more than 1T KRW, we may adjust the excess return and the volatility with ease preserving the current level of Sharpe Ratio.
운용 전 예측/계산되었던 비정상적으로 높은 수익률은 실제로도 유지되었다. 그런데 큰 운용규모에 대한 이런 예측도 실현될 수 있을지는 실제 그 돈을 넣고 운용을 해봐야 알 수 있다.
We realized the abnormal profit rate of the fund predicted and calculated before the operation. The speculation above on the large AUM, in the same manner, should gain confidence through the vintage.
6. Sustainability
이 수익률이 유지될 수 있나?
상식을 벗어나는 수준의 높은 수익률이기 때문에, 신뢰를 얻으려면 매우 긴 운용기록이 필요할 것이다. 그러나 운용 기간 동안 지수의 폭락을 포함해 시장상황은 큰 부침을 겪었음에도 불구하고, 수익률은 큰 변동 없이 안정된 수준을 유지하였다.
The rates and ratios are extraordinary outliers, which call for the vintage. That said, Sindbad remained resilient and gained profit with stability while the market suffered massive volatility, ^VIX hitting 36.10.
아래는 임의의 시점에 Sindbad에 자본을 투입했을 때, 그로부터 n거래일이 지난 후 기대 수익률을 정리한 표이다. 이를 통해 이익의 지속성, 안정성을 추정해 볼 수 있다.
Following tables summarize the average return in the time horizon of days and weeks.
임의의 시점으로부터 n일이 경과했을 때의 평균 수익률
The average return of any given n consecutive trading days
(처음 184거래일로부터 계산된 값)
calculated by the trading records of first 184 trading days
*AvgCumPrf: average cumulative return of n consecutive trading days. 해당 기간 동안의 누적 수익률. 예를 들어 임의의 20거래일(약 1개월) 동안 기대 수익률은 평균적으로 9.71%이었다는 의미이다.
*GeoAvg: geometric average return per trading day. 해당 거래일 동안 발생한 수익률의 기하평균. 예를 들어 20거래일의 GeoAvg가 0.46% 였다면, 일평균 0.46%의 수익을 기록했다는 의미다. 산술평균이 아니라 기하평균으로 계산한 것은 복리를 고려했기 때문임. 예를 들어 (1+0.46%)^20 ~ (1+9.71%)가 된다. (정확히 숫자가 맞지 않는 것은 반올림 때문) 매 거래일 평균 0.46%의 이익을 기록하면 복리로 20거래일 후에는 9.71%의 이익이 된다는 의미다.
계산 방법: 예를 들어 10거래일 후의 평균 수익률이 4.95%라고 할 때, 이 값은 다음과 같은 방식으로 계산된 것이다:
2018년 4월 5일로부터 10거래일 후인 2018년 4월 19일까지의 누적 수익률 8.09%
2018년 4월 6일로부터 10거래일 후인 2018년 4월 20일까지의 누적 수익률 5.79%
2018년 4월 7일로부터 10거래일 후인 2018년 4월 21일까지의 누적 수익률 3.34%
....
2018년 12월 19일로부터 10거래일 후인 2019년 1월 7일까지의 누적 수익률 13.35%
2018년 12월 20일로부터 10거래일 후인 2019년 1월 8일까지의 누적 수익률 9.52%
2018년 12월 21일로부터 10거래일 후인 2019년 1월 9일까지의 누적 수익률 12.14%
의 174세션 각각의 누적 수익률을 산술평균한 값이 4.95%라는 의미다.
참고로 거래일이 길어질수록 GeoAvg가 떨어지는 것은, Sindbad가 꾸준히 수익을 기록해 최근으로 올수록 자본이 늘어났지만 (10억원 ==> 24억원) exposure 총량은 비슷한 수준으로 유지하면서 effective gearing(~leverage)이 점차 떨어졌기 때문임.
7. Significance
혹시 이 모든 것이 다 우연이 아닌가?
선물은 방향성에 대한 예측으로서, 만약 예측의 정확도가 없다면, 이론적으로 50.00%의 승률을 기록하게 된다. (공)매도를 하면 지수가 떨어질 때 수익을 기록하고, 지수가 오를 때에는 손실을 보기 때문에, 지수가 오르거나 내려가는 것과 관련 없이, 선물 거래의 기대 승률은 50.00%이다. 예를 들어 원숭이로 하여금 "매수" 버튼과 "매도" 버튼을 마음대로 누르게 하면 이론적으로 50.00%의 승률을 기록하게 된다. (실제로는 거래 수수료 때문에 승률은 더 낮아짐) 50.00%로부터 어느 방향으로든지(0%로든지, 100%로든지) 더 멀어질수록 방향성 예측이 우연일 가능성은 낮아진다.
Sindbad가 운용되어 온 임의의 시점에 자본을 투하했다면, 그 자본이 시간이 경과함에 따라 이익을 기록하고 있을 확률은 아래와 같다.
임의의 시점으로부터 n일이 경과했을 때 이익을 기록하고 있을 확률
The probabilities of positive profit after any n consecutive trading days
(처음 184거래일로부터 계산된 값)
calculated by the trading records of first 184 trading days
승률에 대한 해석: 임의의 시점에 자본을 투하하고, 1거래일 후에 (+) 수익률을 기록함으로써 투하 자본보다 더 많은 자본을 보유하게 될 확률은 52.72%이다. 완전한 우연, 즉 control의 경우 50.00%의 수익률을 기록한다. 하루하루의 판단은 맞을 확률이 52.72%, 틀릴 확률이 47.28%이지만, 이러한 확률이 꾸준히 쌓이면서, 20거래일 이후에는 (+) 수익률, 즉 이익을 기록하고 있을 확률이 88.48%까지 올라간다. 만약 "매수", "매도"에 대한 판단이 완전한 우연이라면 20일 후에도 승률은 50.00%를 유지해야 할 것이다.
For any inquiries or questions regarding Sindbad, contact: cfo@move.is
------
* January 2020 Update
이 글 이후 저희가 기존 오르비를 운영하던 Move Inc.로부터 Sindbad를 운영하는 부문을 spin-off해서 SIndbad Inc.를 설립했고,
회사 설립 이후의 track record는 아래와 같습니다.
2018 v. 2019 비교를 해 보면, 2019에 와서 MDD(maximum drawdown)가 커져서 심장이 덜컥덜컥하는 상황이 몇개월에 한 번씩 있었고, volatility 커질 때 그걸 견디는 게 심리적으로 너무 힘들어서 Sharpe ratio와 return을 희생하더라도 volatility, drawdown를 줄이는 연구를 하는 데 한 해를 보냈습니다.
제가 오르비에 가끔 나타나면 Sindbad를 궁금해 하시고 (절반은 진짜 호기심인 것 같고, 절반은 빈정거림인 것 같고) 그 이후 update가 없냐는 질문을 많이 받아 이렇게 update를 남깁니다.
예전에 자주 track record를 update하고 이따금 오르비를 통해서도 우리가 하는 일을 알리고 했던 것은 꾸준히 그렇게 글을 쓰고 알리면 오르비를 통해서도 혹시나 의미있는 연을 찾을 수 있을까 기대해서였는데 그런 일은 없고 결과적으로는 감정 소모만 하게 되는 것 같아서 감정 소모까지는 상관이 없는데 그게 일에 지장을 주면 안 되니, 일에 집중하기 위해서 더 이상 업데이트도 하지 않고 사람들의 질문이나 빈정거림도 무시했습니다.
그런데 계속 대응을 안 하니 제가 또 병신이 되는 것 같아서, 애초에 Sindbad를 게시판을 통해 공개한 것을 지금 후회하듯이 이 update를 후회하게 될 것임을 알면서도 약물중독자가 약에 손대듯 이렇게 update를 남깁니다. 뒤집어 생각해 봐도 남이 돈 잘 벌고 있다는 얘기가 나한테 기분 좋을 이유가 없는데 + 지금 다시 봐도 이 수익률이 나도 늘 의심스러운데 나는 그때 왜 이런 글을 썼을까라는 생각도 듭니다.
지금 와서 곰곰 돌이켜보면 그때는 사람이 너무 고팠던 것 같습니다. 내가 가는 길이 맞는지도 몰랐었고 그래서 확신 - 까지는 아니어도 무언가 믿음을 줄 수 있는 말을 더 듣고 싶었고, 누군가 도움의 손이 있으면 더 빨리 성장할 수 있지 않을까 그런 생각도 있었던 것 같은데 지금은 사람이 고프지 않습니다. 우리가 번 돈은 그대로 잘 있으니 수익률도 사실이 맞고요. 그렇게 사라진 미련과 익명 플랫폼에 대한 냉소의 배합이 이 update를 남길 수 있게 한 힘이 되지 않았나 생각합니다.
------
* August 2020 Update
이제 prop 으로 100억원 이상을 운용하고 있고, 지난 약 3년간 모든 계좌의 CAGR은 70%를 초과했습니다. 단지 COVID-19로 인한 폭락장을 잘 버텨내는 것을 넘어서 폭락장의 변동성을 모두 현금으로 치환했습니다. 3월에 작동 개시한 계좌는 5개월 간 270%의 수익을 기록했습니다. 알고리즘은 계속 업데이트하고 있으며, 처음에는 시간이 지나고 AUM이 커지면 return도 wear out 될 거라 추측했는데 오히려 수익률은 계속 좋아지고 있습니다. 결국 이것이 Billion dollar business가 될 것이라는 믿음이 있습니다. Top tier 로펌들을 통해 compliance consulting 중입니다.
예전에는 우리가 outsider 라고 생각해서 좀 더 main stream 모양새를 갖추려면 무엇을 해야 할까 고민했는데 우리가 outsider 가 아니라 outlier 라는 것을 알게 되어 이제 그런 고민은 더 이상 하지 않습니다. 2020년의 그래프들은 기울기가 훨씬 가파르고 더 섹시하게 생겼는데 큰 틀에서 결국 다 비슷한 모양 (지수는 지지부진한데 신드바드 계좌는 계속 불어난다는) 이어서 더 이상 그래프 업데이트는 하지 않으려 합니다. 큰 변화가 있거나 중요한 국면을 지날 때에만 1년에 1~2번 정도 업데이트를 남기겠습니다.
------
* December 2020 Update
이제 prop 으로 200억원 이상을 운용하고 있습니다.
가장 최근에 개시한 account는 9개월 되었고, 그 기간 동안 수익률은 578% 입니다.
더 이상 수익률 업데이트는 없습니다.
0 XDK (+9,730)
-
5,100
-
10
-
10
-
50
-
10
-
1,000
-
10
-
100
-
1,000
-
미적 84인데 0
걍 2등급인거 받아들였음 나는
-
택시타고 가는데 빠듯하다
-
여그로 ㅈㅅ 국수영사문지구 93 84 81 47 36 1 2 2 1 3 서성한 경엉...
-
1타 관계없이 자신한테 잘 맞는 강사 들으면 되는거 알구있는데그래도 추천...
-
어제 하고 싶은 말 다하고 쳐자서 내 이미지가.. 내 착한 이미지 돌려내..
-
ㅈㄱㄴ
-
가천의 고사실 0
그냥 정해진거 없이 가라는대로 가면됨?
-
맞다면 우리 주변엔 공룡이 아닌 것이 없겠지.... 우린 공룡들 속에서 살고 있다
-
가천의 201호 4
ㅎㅎ
-
다 줘 패야겠어
-
얼버기 4
좋은 하루 보내세요
-
얼부기 6
온앤온
-
그렇다고 30분 늦게 나왔으면 늦었겠지,,,
-
얼버기 4
깨면안되는데 깨버렸어요... 다시잠이안와...
-
왜깼지 2
-
누구 더 추천함?
-
걍 빈 자리가 없는데 최저가 어떻게 됐더라.....
-
얼버기 0
인나자마자 핸드폰 중
-
연대 현재상황 8
그냥 노답 이제 ㄹㅇ 스카이라는 단어도 한물간듯함 의치한약수가 이 스카이서성한이라는...
-
학교 때매 늦는 거 봐주나요..? 시대 강대 둘 다 전화로 물어봤을 땐 안봐준다고...
-
왜 고민하는 지 모르겠누? 강대 시대 둘 다 해봤고 독재도 해봤지만… 시대가… 아...
-
2년 째 듣고 있는 노래인데 진심 고트
-
이번역반포 0
세종대사수
-
대부분 육군들은 지원하면 무작위로 보직이 결정되던데 차라리 운전병을지원하면...
-
재밌겠군
-
확통 경우의 수 문제 나오면 경우 다 세서 답안지에 적어볼게요
-
저는 보니까 m=3 최소인 거 안 걸러냈음 21번은 a+b=11로 답 냈음 진짜 왜...
-
가천대학교 5
학교 좋다
-
좀 ㅈ같고 하 사람 만나기도 싫고 건강 박살내가면서 공부했는데 결과가 그러니까 난...
-
풀이는 다 기억하니까 답만은 써도되나
-
시대 강대 6
먼저 확통사탐이고요... 나이가 좀 있는 할미입니당 ㅠㅠ s2랑 시대 중에...
-
아마토포 쏘는거임? 으히히
-
늦은나이에 약대 기적적으로 붙게돼도 문제네
-
세종대로가자 0
사당역가는중
-
병신마냥
-
아 ㅈㄴ 졸린디 0
가는 길에 잠들거 같다는 이상한 느낌이,,,
-
얼버기 3
-
다리떠는거 정도는 참을 수 있죠? 예..
-
목적지는? 0
외대앞역.
-
작년 합격자 평균 75.4점. 올해는 작년보다 계산도 많고 좀 복잡한 편. 작년보다...
-
요약 : 만1세 메이져한 선천성 심장기형 수술후 대동맥 캐뉼라가 이탈하여 발생한...
-
밤샘 주술회전 시청 ㅋㅋ
-
의대증원분 대부분은 수시 지역인재 전형이라서 이미 수학 2-3등급 맞은 애들이 꿀...
-
얼버기 0
냥대 논술 두개재
-
내년 고3이고 고2 물1화1지1 고3 물2화2 선택했는데 수능 화2지1 할까요 생1지1할까요
-
ㅇㅈ 5
펑
-
군대에서 수능을 2번 보는데 , 군대 첫수능 보고 합격만하고 다시 군대인데 이...
-
ㅇㅈ 1
나만큼 한사람은 없을거야
-
비문학 문학 상관없이 추천좀여 라노벨x 수능교재x