본문 바로가기

전체 글

(56)
Parameter Optimization 블로그 포스팅을 안 하다가 이제 다시 꾸준히 작성해보려 한다.개발을 안 했던거는 아니고, 지난 1년동안 시스템 트레이딩을 개발했지만늘 열심히 했던 것도 아니고, 결과도 불투명했고, 방향도 못 잡아서 공개하기 부끄러운 부분이 있었다. 그래도, 최근 열심히 한 덕에 방향을 잡았고 결과까지 노력하는 과정도 이제 남겨보려 한다.아직 아는 것보다 모르는 게 더 많고, 실수도 많지만 어차피 블로그 아무도 안 보는데 일기처럼 남겨볼까 한다.오랜만에 진심으로 열심히 하고 좋아하는게 생겨서 좋다.현재 단계는 Data ETL, Trading Bot, Back Testing 프로세스를 구축했고실시간 데이터를 확보하며 Quant 전략을 보강하는 단계이다.오늘은 그 보강 단계 중 Parameter Optimization 과정을..
Kubernetes : Service 서비스 - 클라이언트 입장에서 늘 변하는 파드의 IP 주소를 알기 어렵기 때문에, Kubernets에서는 서비스라는 오브젝트가 존재한다. - 매니페스트에 서비스 타입을 지정함으로써 접근이 가능한 클라이언트의 범위를 한정한다 CluseterIP (기본) 클러스터 내부의 파드에서 서비스의 이름으로 접근 NodePort (+ClusterIP) 클러스터 외부에서도 노드 IP/포트로 접근 LoadBalancer (+NodePort) 클러스터 외부에서 대표 IP주소로 접근 ExternalName 클러스터 내의 파드에서 외부 IP 주소에 서비스 이름으로 접근 ## Deployment Manifest apiVersion: apps/v1 kind: Deployment metadata: name: web-deploy sp..
Kubernetes : Deployment 디플로이먼트 - 파드의 개수를 관리 : 시스템의 처리 능력, 서비스를 중단하지 않는 가용성, 비용 측면에서 매우 중요하다. - 레플리카셋과 함께 동작한다. - 서버 타입의 워크로드에 적합한 컨트롤러 - 기능 : 스케일 / 롤아웃 / 롤백 / 자동 복구 apiVersion: apps/v1 kind: Deployment metadata: name: web-deploy spec: replicas: 3 # 생성하고 유지할 파드의 개수 selector: matchLabels: # 컨트롤러와 파드를 대응시키는 라벨 app: web template: metadata: labels: app: web # 파드의 라벨. 컨트롤러의 matchLabels와 일치해야함. spec: containers: - name: nginx..
Kubernetes : Pod & Manifest 커맨드 동작 kubectl cluster-info K8s 클러스터의 엔드포인트를 표시 kubectl get no K8s 클러스터를 구성하는 노드 목록 표시 kubectl run 파드 실행 kubectl get po 파드 목록 출력 kubectl delete po 파드 이름 지정 후, 삭제 kubectl get all 모든 오브젝트 출력 kubectl logs 컨테이너 프로세스가 STDOUT / STDERR로 출력하는 로그를 표시 - 파드를 지우면 로그를 출력할 수 없다 kubectl get deploy,po 디플로이먼트와 파드 목록 표시 kubectl get deploy 디플로이먼트 목록 표시 kubectl delete deploy 디플로이먼트 및 관련 파드 일괄 삭제 kubectl get jobs 잡의..
Quant : Backtesting - 재무제표 기반 Load Data 데이터 출처 : 증권사 API, 네이버 금융, 금튜형, 유료 데이터 벤더 - 데이터의 cleaning, validation 必 - Missing Value 전처리 必 - 존재하지 않는 지표는 다른 지표로 대체 # 코드를 돌릴 때 warning이 안나오게 하기 import warnings warnings.filterwarnings('ignore') # Load df = pd.read_csv("my_data/fin_statement_new.csv") df.head() # Drop column df = df.drop(["상장일"], axis=1) # Rename Column df = df.rename(columns={ "DPS(보통주, 현금+주식, 연간)": "DPS", "P/E(Adj., ..
Quant : Visualization - Seaborn Seaborn - Python의 visualization 모듈 - Matplotlib 보다 디자인이 더 깔끔하고 다양하다. sns.countplot(x="size", data=df) 사용 예시 # figsize 조정 fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(18, 3)) ax = sns.barplot(data=df, x="date", y="수익률(%)", ax=ax); # x tick label 45도 돌리기 current_x_tick_label = ax.get_xticklabels() ax.set_xticklabels(current_x_tick_label, rotation=45); - matplotlib : tidy form data(raw data)에 ..
Quant : Visualization - Matplotlib 시각화 : Visualizaion Matplotlib !pip install matplotlib import matplotlib.pyplot as plt Matplotlib의 2가지 인터페이스 1. Stateful 인터페이스 - Matplotlib이 암묵적으로 현재 상태를 들고 있음 - 내부적으로 현재 타겟이 되는 figure, ax 등을 설정하고, operation이 발생하면 '내부'에서 해당 figure, ax에 적용함 - 사용은 비추 내부적으로 변화를 적용하기에 직관적이지 못함 다수의 plot을 한번에 그리기 어려움 x = [-3, 5, 7] y = [10, 2, 5] plt.figure(figsize=(15, 3)); # ; : semi-colon 각각의 함수들이 아웃풋창에 안 나오게 하기 위해 ..
Quant : Pandas - 데이터 합치기 1. Appending new rows to DataFrames 1.1 Append without using append() : using loc() - in-place 방식. 원본 데이터를 유지하며 데이터 변경 - 그 외의 방식은 메모리를 복제하는 과정이 추가되기에 비효율성 有 df = pd.DataFrame(columns=['a', 'b']) Add data as 'list' df.loc[0] = [1, 2] df.loc['ㅋㅋ'] = [1, 2] Add data as 'dict' df.loc[len(df)] = {'b' : 'ㅎ', 'a': 'ㅋ'} Add data as 'Series' df.loc["yay"] = pd.Series({'a': 'ㅋ', 'b' : 'ㅎ'}) 1.2 Append usi..