TensorFlow를 스터디하면서 뭔가 응용을 해보고 싶은 마음에 주가 예측을 시도해봤다.

지금부터 기술할 내용은 단순히 응용을 해보고 싶었던 것일 뿐이므로, 실제 데이터 예측에는 도움이 되지 않음을 미리 알려둔다.


* TensorFlow 강의는 홍콩 과기대의 김성훈 교수님의 것을 들었으며, 아래 코드 또한 강의에서 참조한 것이다.

https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm )



1. 데이터 준비

주가 등락 예측을 위해서 필요한 데이터들은 아래에서 가져올 수 있다.



이번에 사용된 데이터는 2014년 12월 10일 ~ 2015년 9월 10일 까지의 KOSPI Index 이다.

Feed data는 총 8개의 항목이며, 이 중 1개는 bias를 없애기 위한 column이다. 


X0 : bias

X1: 전일 종가 대비 금일 종가 등락률

X2: 금일 시가 대비 금일 종가 등락률

X3: 금일 고가 대비 금일 종가 등락률

X4: 금일 저가 대비 금일 종가 등락률

X5: 전일 대비 5일 평균 종가 등락률

X6: 전일 대비 30일 평균 종가 등락률

X7: 전일 대비 60일 평균 종가 등락률


이렇게 Feed data를 정한 것은 큰 의미가 없고, krx에서 제공하는 데이터 기준이다.



목표가 등락 예측이었기 때문에 결과값은 + 또는 - 두가지 경우이다.

따라서 Label에 해당하는 Y 항목은 2개이다


Y1: 금일 종가 대비 내일 종가 상승 ( + )

Y2: 금일 종가 대비 내일 종가 하락 ( - )


(X 값에 1000을 곱해서 데이터를 만들었다.)

2015data.csv



2. Python Coding


앞에서 말한바와 같이, 김성훈 교수님의 강의에서 참조했기 때문에, 코드 수정이 거의 없었다.

코드는 다음과 같다.

 




3, 결과


  • Cost : 0.66944


총 20만번 반복하였으며, 반복 횟수가 8만번 이상이 되니 Cost의 변화가 없었다. 

정확성을 생각하기보다는 한번 테스트를 해본다는 의미가 컸기 때문에, 이정도로도 만족을 한다.


다만, 정확도는 대략 55% ~ 65% 정도로 큰 의미없는 결과를 확인할 수 있었다.




보통 iOS 앱은 Appstore에서 다운로드 받는다.
그런데, 기업에서 사용하기 위한 용도로 Enterprise Program에 가입하여 iOS 앱을 만들고, 배포한다.

iOS 앱을 빌드하는 것은 인증서의 차이이므로 크게 어려울 것은 없으나,
Enterprise Program의 앱을 배포하는 것에는 차이가 있다.
바로 웹을 통한 ipa 파일 다운로드이다.
이를 위해서는 3가지가 준비되어야 한다. (html 파일도 필요한데, 아래에서 확인!)

1. iOS앱을 배포할 수 있는 SSL 인증서 + 인증서가 적용된 웹서버
2. 신규로 Build된 iOS의 ipa 파일

3. 신규 Build된 iOS의 ipa파일에 맞는 plist 파일

 


ipa 파일과 plist 파일은 iOS 앱을 빌드하게 되면 생성되는 파일이다.

그런데 이 두개의 파일은 SSL 환경에서만 배포가 가능하다. 

(SSL 인증서 중, iOS 앱을 다운받지 못하는 인증서가 있으니, 미리 확인이 필요하다.)


위의 3가지가 준비되었으면, 



우선, .ipa 파일과 .plist 파일을 웹서버에 업로드한다. 

(ex. https://www.chohyunsu.com/iosPub/target_ios.plist)

(ex. https://www.chohyunsu.com/iosPub/target_ios.ipa)



그리고  .plist 파일에서 ipa 파일의 위치를 수정한다.

 



.pist 파일 수정이 완료되었으면, 또다시 plist 파일을 가리키는 html 파일을 생성하고, 아래의 script를 삽입하고, body의 onload시에 호출한다.

( 사용자 → .html → .plist → .ipa   의 순서로 호출하는 방식이다.)

 


이때, html 파일의 위치는 plist와 ipa 파일의 SSL 웹서버에 위치하지 않아도 된다.

즉, plist와 ipa 파일만 SSL 웹서버에 있으면 http 파일은 다른 도메인이어도 문제가 없다.

(관리를 위해서 같은 위치에 있는 것도 나쁘진 않다)



이제 iOS Enterprise Program에서의 앱 배포 준비는 모두 끝났다.
iPhone이나 iPad에서 방금 만들었던 html 의 주소로 입력하게 되면 앱 설치를 물어본다.
설치하겠냐는 것에 승인을 클릭하면 앱 설치가 시작된다.
(html 화면이 자동적으로 닫히진 않으므로, 홈 버튼으로 바탕화면을 확인하면 된다.)


* plist 파일로 바로 접근해서 다운로드 받으면 편할텐데, 지금은 html 파일로 접근하는 방법밖에 모르겠다.
* iOS 9.0 이상 버전의 기기에서는 html로 앱 다운로드 후, 설정→일반→기기관리 에서 승인을 해줘야 한다.


VPP (Volume Purchase Program)란 Apple에서 제공하는 기업용 앱스토어라고 생각하면 된다.

기존의 AppStore는 판매자의 동의가 없어도 다운로드가 되지만, VPP는 조금 다르다.

우선 앱을 사용하겠다는 것을 판매자에게 요청하고, 판매자가 사용자의 iTunes ID를 등록해야지만 사용자는 앱을 사용할 수 있다.

https://volume.itunes.apple.com/us/store )


하지만, 가장 중요한 것은, VPP는 한국에서 지원되지 않는다는 것이다.

( VPP 대상 국가 http://www.apple.com/business/vpp/ )

VPP의 존재를 처음 알았을 때는 B2B 솔루션 판매가 가능할 것으로 생각되었는데, 안타깝게도 한국은 대상이 아니었다.
( Apple Developer Program Support에 문의를 하니, 아직까지는 대상이 아니라는 답변만 받았다. )

나중에 한국에도 VPP가 적용될 때를 대비해서 iOS의 Enterprise Program과 비교한 것을 정리해본다.



VPP 

-하나의 계정 (iOS Developer Program) 을 사용하며, 고객사별 Enterprise Program 불필요

-Business AppStore에 배포하며, AppStore보다 낮은 앱 검토

-배포 서버를 별도로 운영하지 않아도 되며, 회사별 배포용 인증서 연별 갱신 불필요



Enterpris Program

-보안 검토 없는 개발. 개발의 자유도가 높음 (Customizing)

-업데이트 버전 즉시 사용자에게 배포 가능

-회사별 Enterprise 계정 갱신 (1년 주기 갱신) 및 앱 갱신 필요 (앱의 유지보수 필수!)





* 웹에서 Apple VPP 프로그램을 확인하면, 적용 대상 국가가 아니라고 한다. 

( https://deploy.apple.com/qforms/open/register/index/avs )

*VPP 개발 가이드

( https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Appendices/B2B.html )


프로젝트를 하다보면 보안 이슈로 인해서 SSL을 사용하는 경우가 많다.

SSL은 해당 사이트를 인정받는 목적이 가장 크지만, 웹 패킷이 종단간에 암호화되는 것도 SSL 적용에 큰 이유가 되기도 한다.


외부망에서만 SSL 서버에 접근한다면 문제가 없겠지만, 내부망에서도 SSL을 사용해서 통신을 하는 경우가 있다.

내부망에서 사설 IP로 접근하게되면 아래와 같은 경고 문구가 표시된다.





SSL 인증서가 확인되지 않았지만, 브라우저에서는 이를 무시하고 해당 경로로 이동할 수 있다. 

하지만 매번 접근하기에는 매우 번거롭고 귀찮다.


이 상황에서 SSL 인증서를 정상적으로 인식되도록 하는 방법은 여러가지가 있다.

1. Loopback을 지원하는 스위치 (공유기)를 사용한다

2. 사설 대역에서의 DNS 서버 구축 후, SSL 인증서의 도메인 주소를 사설 IP로 지정한다.

3. Window 네트워크 어댑터에서 제공하는 Microsoft Loopback Adapter를 설정한다

4. Windows의 Hosts 파일에 도메인을 추가한다.


이중에 가장 간단한 것은 아무래도 4. Host 파일 설정이다.



현재 내가 가지고 있는 도메인은 http://www.chohyunsu.com 이다.

SSL 인증서 또한 www.chohyunsu.com 의 주소로 인증을 받았다.


동일한 사설망에서 위 도메인으로 접근하려면 현재 상황에서는 주소를 찾을 수 없다고 표시된다.




그렇다면 C:\Windows\System32\drivers\etc 경로에서 hosts 파일을 텍스트 에디터로 수정한다. (관리자 권한)

작성법은 간단하다.

왼쪽에 사설 IP를 입력하고, 스페이스나 탭으로 공간을 띄운 다음, 도메인 주소를 입력한다.

(파일 수정 전, 원본 파일은 항상 백업하는 습관을 가지자)



수정이 완료되었으면 수정 사항을 저장하고 닫는다.

그리고 CMD 창에 아래와 같은 명령어를 입력한다.


ipconfig /flushdns



이렇게 해서 아래와 같이 사설 대역에서도 SSL 인증서 오류 없이, 깔끔하게 웹페이지에 접속할 수 있다.






* Loopback이라는 기술은 자기 자신의 공인 IP를 입력하면 공유기에서 패킷을 자기 자신으로 인식하는 기술이다.

* Hosts파일을 수정함에 있어서 포트까지 지정할 수는 없다. 만약 지정하려면 스위치에서 PortForwarding하는 방법이 있다.

+ Recent posts