오르비 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
-
100킬로 투하 0
-
외출 할 때마다 피방 들어가는 상상을 오천번함 지금도 스카 대신 피방 가려던 거 참고 자리 앉앗다
-
학교에서 가오잡는 ㅅㄲ들 다 어깨빵하고 꼬라봐도 ㄱㅊ?? 3
애새끼들 참교육 마려운데
-
전 수능보고 12월 3일부터 독재 다녔어요.. 그동안 재수한만큼 지나면 수능이라는개...
-
나만 멈춰있네
-
담배 살면서 한 번도 안 펴봤는데 갑자기 피고싶어짐 6
오늘 메가 사이트에서 우연히 같은 반이었던 애가 목표달성 장학생 됐다는데 ㄹㅇ...
-
대성패스 구매자는 구할수 없나요???
-
뭐 하면 되나요..?? 예습??
-
n티켓 좋은 점 1
뒤에 2회독 문제 있어서 편함
-
ㅈㄱㄴ?
-
불쌍한 재수생을 위해 배송비이벤트 한번만 더해주세요
-
이거 진짜 잘낸거같음…..나같은 애들 변별하기 너무좋네 ㅋㅋㅋㅋ ㅜㅜ
-
실복무 10
커뮤니티 보면 실복무 시간 30분, 1시간,2시간 이러는거 방금 처음 알았는데 나는...
-
생각만 잘 하면 고등학교 교육과정 안에서 구할 수 있기는 한데ㅋㅋㄱㅋㄱㅋ
-
231122 부분역함수로 풀어보기 ※근의 공식 아님!! 0
요약: 1. 비효율적 2. 근데 수학적 관점을 넓히고 싶으면 해볼 만함
-
안녕하세요. 현재 금융권에서 일하고 있는 직장인입니다.어학연수를 2012년에 갔다온...
-
ㅈㄱㄴ
-
발바닥 핥기 10
미소녀 발바닥 할짝할짝
-
외대는 갈수록 떨어지냐 왜..
-
교수님 진짜 착하신듯 20
말도 안했는데 제가 굶은줄 어떻게 아시고 수업을 한시간 일찍 끝내서 저에게...
-
…..
-
[속보] 민주 "李장남 젓가락 댓글은 남성 대상"…이준석 "남성 혐오는 괜찮나" 4
이준석 개혁신당 대선후보가 3차 TV토론에서 이재명 더불어민주당 대선후보의 아들이...
-
열받는sns goat 그냥뭔가화가남
-
다음 강의에 한시간 일찍온거다
-
F6키를 누르시고 글자 모양에 들어가서 기준 크기: 11.5pt 장평: 95 자간:...
-
[짧은 칼럼] 국어강사가 말하는 국어는 집을 팔아도 안되는 이유 (팩폭 주위) 0
안녕하세요, 국어가르치는 사람입니다. 6월 모의평가 이후에 올릴지 고민하다가 그냥...
-
아 한화생명 (LCK) 팬분들의 마음을 이해했습니다 0
젠장 이렇게 당하고서야 깨달아갑니다..
-
“동물병원 영수증, 이제 마음 졸이지 않아도 되나요?”[대선, 내삶을 바꿀까⑪] 1
[커버스토리 : 대선, 내삶을 바꿀까] 경기도 외곽의 아파트에서 혼자 사는 정...
-
수학 +1h
-
[속보] 제21대 대선 사전투표율, 오후 1시 기준 10.51%⋯역대 최고치 2
제21대 대통령선거 사전 투표 첫날인 29일 오후 1시 투표율이 동시간대 역대...
-
내신 미적분 84명중에 48등했는데(5등급 끝자락) 모고는 196명중에 23등함...
-
그 함수는 무조건 다항함순가요?
-
기권하고 싶네 3
그냥 유독 천박한 해다
-
지들끼리 저거 딮기임 ㅇㅇ ㅇㅈㄹ해놓고 좋아요 다다다닥 눌러놓은 수준보소 진짜...
-
중간고사 언매4(문닫음) 미적5(얘도 문닫음) 한국사2 ㅋㅋ깔끔히포기하고정시갈게...
-
삼차함수와 그 접선이 다시 만나는 유형(암산 가능) 간단히 보기 2
접선이라는 단어를 보면 무얼 해야 하는가? 의식을 잃어야 한다. 그리고 5 초 정도...
-
제발.
-
시발 목소리 데시벨 60못넘으면 애미뒤지는 병이라도 걸림??
-
제시문 ㅈㄴ 불친절하고 보기도 없고 앞부분 줄거리도 거의 안줌 문제도 일상언어로 뚫어야됨
-
술뚜껑으로 2
읍읍
-
난 분명 툐깽이인데… 10
일 하고 이쏘ㅜㅜㅜㅜ
-
수학 3 인강 4
이제 공부 시작하는 재수생입니다. 선택은 공부 안해도 되서 공통만 빡세게 하려는데...
-
공부좀해볼가 3
해놓고 안한지 며칠째냐..할 의지가 안나내
-
청소부는 안 뽑나 기가막히게 하는데
-
프사를 바꿈뇨 6
잘생긴 남자 1명서 2명으로 늘어남뇨
-
손고운샘 개념강의 듣는데 손고운샘 도표강의는 20강이 넘어가길래…
-
천일문 핵심은 끝냈는데 다음에 뭐해야되요? 메가패스 있어요