커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

Stock 객체의 시뮬레이션 시작 날짜 이전 데이터 활용 문의

fred1114 2020.02.18 15:16 조회수  179 추천 0

도움말-API 레퍼런스-Stock 항목을 읽다 보니


각종 재무 데이터의 설명에 대해


'시뮬레이션이 시작된 날짜 이전 데이터는 참조할 수 없습니다'


라는 말이 있더군요.


제가 제대로 이해한 것이 맞다면 

알고리즘 시뮬레이션 시작일을 2017년 1월 1일로 했다면

2016년, 2015년 데이터를 로딩할 수 없다는 말 같은데..

예를 들어, '매출액의 4분기 과거값'과 같은 지표는 시뮬레이션 시작일로부터 대략 1년 후가 되어야 제대로 값을 불러온다는 말인가요?


시뮬레이션 시작일을 바꿔가며 몇 번 돌려봤더니, 시뮬레이션 시작일과 데이터의 로딩 여부가 관련 없는 것 같긴 한데...

'시뮬레이션이 시작된 날짜 이전 데이터는 참조할 수 없습니다' 라는 말이 틀린건지, 제가 이해한 것이 틀린건지...

찜찜해서 문의 드립니다.



+)

재무 데이터 항목의

'지배기업주주지분의 자본총계'

'지배기업주주지분의 당기순이익'

자회사의 자본총계/당기순이익을 

모회사의 자회사 지분만큼 반영한 자본총계/당기순이익

에 해당하는 것 맞나요?


댓글 4
안녕하세요 fred1114 님

시뮬레이션 시작 일자 이전의 데이터를 참고하려면
stock.loadPrevData(1, 5, 0);
로 과거치 데이터를 로드시키면 됩니다.
인자는(년, 월, 일)입니다.
위 예시로 시작일자로부터 1년5개월 전부터 데이터를 가지고 오란 뜻입니다.
최대 영업일수 300일까지 가능합니다.
(인자를 일수로 주면 최대 비영업일수 300일이라 년, 월 인자 사용을 권고합니다)

getFundamentalEquity_ownersOfParent(index)
getFundamentalProfit_ownersOfParent(index)
질문하신것과 같이 모회사의 지분만큼 반영된 재무데이터 입니다.

감사합니다.
푸른주전자 2020.02.18 15:40
답변 감사합니다! 추가로 질문이 더 있어 여쭙니다.
1. loadPrevData 함수가 선행되지 않은 경우 데이터 로드가 안된단 말씀이신가요?
예를들어, loadPrevData를 작성하지 않고
stock.getFundamentalRevenue(4) 와 같이 작성한 경우, 시뮬레이션 시작일로부터 4분기가 지나야 적절한 값을 출력하게 되나요?
2. 만약 그렇다면, 시뮬레이션 시작일로부터 4분기가 지나기 전 stock.getFundamentalRevenue(4)의 값은 어떤 값으로 출력되나요? 예를 들어, stock.getFundamentalRevenue(0)과 같은 값으로 출력된다던지?
3. 제가 실험해본 바에 따르면 loadPrevData 없이도 과거의 데이터를 정상적으로 가져오는 것 같아서요.
4. 그리고 말씀하신대로라면, 시뮬레이션 시작일로부터 약 6분기 이상 과거의 데이터는 애초에 로드가 불가능한건가요..?
5. IQ Live의 경우에도 이와같은 문제가 있나요?
(IQ Live의 시뮬레이션 시작일이 언제로 정해지는지에 따라 과거 데이터를 이용할 수 있냐 없냐가 갈릴 것 같아서요.)
fred1114 2020.02.19 13:16
네 질문하신 내용에 대해 답변 드리겠습니다.
1 ~ 3 에 대한 답변을 한꺼번에 드리자면, 작년 10월말에 블록 알고리즘 환경을 업그레이드하면서 과거 데이터를 블록에서도 사용하게 하다 보니, loadPrevData(...) 함수를 사용하지 않아도 동작에 문제가 되지 않도록 플랫폼 레벨에서 수정, 보완했습니다. 그래서, 지금은 사실상 loadPrevData를 사용하지 않아도 아무 문제는 없습니다. 다만, loadPrevData 사용을 하지 않은 채로 현재부터 과거까지 반복문을 돌면서 과거 데이터를 사용하는 경우에는 실행 속도가 현저히 느려질 수 있어서 가급적 loadPrevData 함수를 명시적으로 사용하시는 것을 계속 권장합니다.
4. 일별로 과거데이터를 참조하는 시장데이터들은 300일이 최대이지만, 재무데이터는 20분기, 즉 약 과거 5년치까지 로드 가능합니다.
5. IQ Live도 실행 엔진은 동일하기 때문에 모든 상황은 같습니다. 그리고, IQ Live는 시뮬레이션할 때와 비교하자면, 등록일(최초투자일)부터 무조건 실행하도록 되어 있습니다. 금액이나 소스코드 변경이 있으면, 변경된 날짜가 시뮬레이션 시작일의 역할을 하게 됩니다.

의문이 모두 풀리셨는지 모르겠네요. 추가로 궁금하신 것 있으시면 또 질문 주시기 바랍니다. 감사합니다.
인텔리퀀트 2020.02.19 19:48
상세한 답변 정말 감사드립니다~ 궁금하던 점 모두 해결됐어요!
댓글로 추가 질문드린거라, 답변 받지 못할까 걱정했는데 이렇게 신경을 많이 써주시니.. 정말 감사해요~~
fred1114 2020.02.19 20:49
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글