오르비 AI-based trading bot Sindbad 수익률
게시글 주소: https://orbi.kr/00014196521
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
-
사실 수열만큼은 그냥 정직하게 풀고싶은데.. 이상한거 생각할수록 수열이 더 어려워져요
-
고능아 풀이 힘드노... 머리깨지면서 푸는중임
-
수잘알분들만 이정도 양으로 2025 미적 백분위 89면 어떤편? 0
수1수2미적 공통으로 다 푼건 세젤쉬 미친개념 미친기분 뉴런 시냅스 드릴1권...
-
초밥집 혼밥은 빡쎄네 11
눈치보여서 사이드도 하나 시켰는데 나가라고안하겠지....
-
자기가 처방전 써서 약사한테 약 타기 ㄱㄴ?
-
컴공을 가면 1
애니프사로 바꾸세요 컴퓨팅 실력이 올라갑니다
-
밤새워서 마시고 또 놀러 나간다 이거 맞냐
-
현우진 뉴런이랑 수강평이 거의 비슷하네요 김기현 좋아하는 사람이 만쿤요
-
첨 듣는데 3/8일 개강하는 시즌2부터 들어도 괜찮나요??
-
장영진 개념테제 듣는데 내용적으로 얻어가는 건 있어도 새로운 문제를 만나면 적용...
-
아빠가 찍어준 페라리 f8 ㅎㅎ
-
좀 내려주시면 안될까요 이렇게 빌게요 ㅠㅠ
-
자꾸 문제 풀다 필름이 끊기네
-
으르렁 컹컹 9
컹컹왈왈왈
-
힘내라 샤미코
-
제곧내
-
지하철 에스컬레이터 밑에서 직원분이 걷거나 뛰지말라 팻말 들고 있는데 2
다들 걸어서 내려오네 ㅋㅋ
-
홈런볼 먹는중 2
-
말이 아 다르고 어 다른걸 교묘하게 이용해서 사람 매장시키는거 매니저가 아일릿에게...
-
제목 그대로입니다. 막 사업체를 만드는 것은 아니고.. ㅋㅋㅋ 기존에 같이 작업해온...
-
과외알바를 생각하시는 분들을 위한 매뉴얼&팁입니다. 미리 하나 장만해두세요~~...
-
네....ㅠㅠ
-
강의 몇개 듣고 혼자 복습 조금 했더니 4시간이 후딱지나가버림
-
엔화 환율ㅠㅠ 8
거의 1000원 가겠는데
-
내 정신은 아직도 2018년에 머물러 있는데..
-
과목은수학
-
제 친구가 올해 현역인데 고2 모고 국수영 323인가 그랬는데 올해 정신적으로...
-
내가 지금 이시기에 기출을 보든 실모를 보든 아니 심지어 개념을 하든 니가...
-
ㅇㅂㄱ 3
나도 해보고 싶었어 헤헤
-
맞아요??
-
애초에 수능 시험장에서는 새로운 지문이 나오고 소재가 나오는데 기존 나왔던 소재들을...
-
근데 너무 힘듬 나처럼 입 잘 못터는 사람들은 다른 알바가 더 적성에 맞는듯
-
어려워보이네..
-
어느순간 마음을 고쳐서 남들 다 행복햇으면좋겟다고 생각하니까 마음이 편안해짐 눈에...
-
.. 2
♡♡♡
-
항상 그거먼저풀다 틀리면 버리고 맞으면 딴것까지 풂 어차피 사라진 유형인데 알빠노
-
[속보] 연세대 의대, 미등록 후 휴학 신청한 학생 `제적` 조치한다 2
"24일 이후 추가 복귀 일정 없어" 의과대학들이 학생들의 복귀를 설득하고 있는...
-
하루이틀이면 끝낼 수 있는거 하나만 알려주세요ㅠㅠ 자습하고싶은데 쌤이 아예안된다해서 뭐라도해야함..
-
본인은 작수 국어 6 맞고 재수하고 있는데 독서 BIS 지문 읽고 푸는데 거의...
-
안보이는데 ㅅㅂ
-
너무 피곤하네 7
수업 하나 남았는데 너무 피곤하다
-
돼지로 돌아가고 있어
-
카시테쿠레
-
어떻게 한결같이 독서만 못하지 그와중에 원점수 보존법칙은 또 성립함
-
qNv 30번 4
어지럽다 그져
-
1~2일 걸리네 난 바로 오른쪽 유닛 주는 줄 알았는데 ㅈ됐노
-
냄새 말이 안돼 그냥 아오
-
검토알바 합격 4
예아 기분 좋노
-
무휴반 0
수시러이고 최저 맞춰도 안 될 가능성 있어서 수필 3합4 목표로 무휴반 하고 싶음...
-
이번 수능은 망했어 안해!!