오르비 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
-
세상은 올바른 선택을 하는 것이 그 무엇보다도 중요하다는 것.
-
슬슬 자볼까 1
겉날개얻고 몬스터팜 만들었으니 꿀잠자러 고고
-
얼버기 2
인녕하세요
-
지금까지는 맞는말같긴함 작수때 언매미적물1지1으로 89 89 2 88 95 맞았는데...
-
워드마스터2000 끝냈고(3회독) 암기율은 80정도? 제가 단어가 약헤서 다른...
-
오늘은 뻘글 안 쓰고 일만 할 겁니다
-
힘을 좀 내줘 씨발럼아!!
-
영어 과외 질문 0
고등학교 3년 내내 모고 1등급은 놓친 적이 없고 수능은 97점 나왔습니다. 올해...
-
아침 먹으면서 쿵짝짝 쿵짝짝 하면서 토스어플 딱 까봤는데 떡락한 거 보고 나이스...
-
진단서 써줌? 기말 끝나고 링거 맞을건데 병원에서 진단서 써주는지 궁금함
-
군대 안가면 좋겠다는 말도 안되는 망상을 해본다
-
저 남르비예요.. 오해하시는 분들이 많으신 것 같길래
-
침대에 종이판때기 세워놨는데 자다가 내가 건드린건지 앞으로 넘어져서 이마를 강타당한 건에 대하여
-
하나 사고싶은데... 비싸...
-
얼버기 0
우헤헤
-
아 어제 할껄 4
비 오고난 후 추워질텐데 역시 할 일은 바로바로 해야 해
-
사실 출근안했고 아침먹는중임 가기싫다
-
이거 좀 답해줘 3
9시 수업있는데 원래 2시 수업도 있는데 싸강됨.. 귀찮은데 걍 모자쓰고 갈까??...
-
아학교가기싫어 6
비는 또 왜 오는건데ㅠㅠ 지금 결석할지말지 고민즁잉대ㅜㅜㅜ
-
헤헤
-
7시가 되어가기 때문입니다 파이팅
-
뻘소린데 0
요즘 물가에 질식할 것 같음 걍 날 죽여라
-
밤 왜 샜지..... 수시러들 암튼 존경함
-
일어나
-
쿠팡 힘들다 1
이걸 연속으로 뛰는 사람은 대단하네 ㄷㄷ
-
근데 그 시절이 너무 그리워 꼴에 첫 대학생활이라고 마음이 조금 부푼 것도 있었고...
-
결국 5수를 하나. 사탐런 진지하게 고민해봐야되나
-
트리플에스 끝!
-
동덕여대보다 더 처참함
-
죄는 없는데 죄책감생김
-
https://naver.me/5YFRHw2t 어디든 민주 한숟갈 올리는게 요즘 여대에서 유행인가봄
-
속보 0
우옹애
-
기상 완료 예비군 2일차 갔다오겟음 아...
-
일단 지방의대 바이탈과 교수들은 인서울로 많이 옮기거나 그만둠 지방의대 교수들이...
-
생활패턴 망했다 1
오전 7시 취침 오후 4시 기상 이게 뭐야 대체
-
김상훈T 0
독서 독해 방식이 어떻게 되나요? 그읽그풀 느낌이면 좋겟는데..
-
잠이 안와 씨바 3
나 자고 싶다고........ ㅅㅂㅅㅂㅅㅂㅅㅂ 어젯밤도 샜는데 왜 잠이 안오는데ㅜ
-
ㄱㄱ
-
기차지나간당 2
부지런행
-
진짜 잔다.. 2
다들 자요 빨리
-
으으
-
밤샐까.. 0
수면패턴 박살났는디 초기화나 시키게
-
양악하고싶다 0
-
선착순1명 18
가장 빠른 사람이라는 뜻
-
12시 이후부터만 ㅇㅇ.. 자야지이제
-
97점 99 76점 85 93점 1 45점 96 42점 96 언미생지 나는 이과지만 수학이 밉다..
-
에구구
-
18수능 국,수(가형),영,한국사,물2,화2,중국어 응시 각 원점수...
-
ㅇㅈ 10
마스크업으면무서웅