Search

IQEnvironment

목차

개요

IQEnvironment는 iQ 스튜디오 전략 코드에서 전역으로 접근 가능한 싱글톤 환경 설정 객체입니다.
시뮬레이션의 초기 예수금, 수수료·세금, 시작·종료일, 매매 체결 방식 등 핵심 파라미터를 읽거나 설정할 수 있습니다. simulationMethod처럼 설정 변경이 필요한 속성은 initialize() 함수 안에서 설정하는 것이 권장됩니다. initialize() 함수는 기본 계좌가 생성된 직후에 호출됩니다.
function initialize() { IQEnvironment.simulationMethod = SimulationMethod.normal; // 매매 방식 설정 logger.debug('초기 AUM: ' + IQUtil.getNumberWithCommas(IQEnvironment.aum.toFixed(0))); }
JavaScript
복사

속성 목록

속성
타입
기본값
읽기/쓰기
설명
aum
number
사용자 설정값
읽기
초기 예수금 (AUM)
stockCommission
number
0.0015
읽기/쓰기
주식 거래 수수료율
etfCommission
number
0.0015
읽기/쓰기
ETF 거래 수수료율
stockTax
number
0.003
읽기/쓰기
증권 거래세율
simulationStart
Date
사용자 설정값
읽기
시뮬레이션 시작일
simulationEnd
Date
사용자 설정값
읽기
시뮬레이션 종료일
simulationMethod
SimulationMethod
SimulationMethod.normal
읽기/쓰기
매매 체결 방식

aum

시뮬레이션 시작 시 사용자가 지정한 초기 예수금입니다. 기본 계좌(IQAccount.getDefaultAccount())의 초기 현금 잔고와 동일합니다.
Basket 생성 시 자산 배분 비율 계산의 기준값으로 주로 활용합니다.
function initialize() { // AUM의 80%를 주식 바스켓, 20%를 채권 바스켓에 배분 var stock_port = new Basket(IQAccount.getDefaultAccount(), 20, IQEnvironment.aum * 0.8); var bond_port = new Basket(IQAccount.getDefaultAccount(), 1, IQEnvironment.aum * 0.2); }
JavaScript
복사

stockCommission

주식 거래 수수료율입니다. 기본값은 0.0015 (0.15%).
매수·매도 시 자동으로 차감됩니다. 전략에 따라 현실적인 수수료율로 조정할 수 있습니다.
function initialize() { IQEnvironment.stockCommission = 0.00015; // 0.015%로 조정 (온라인 증권사 기준) }
JavaScript
복사

etfCommission

ETF 거래 수수료율입니다. 기본값은 0.0015 (0.15%).
function initialize() { IQEnvironment.etfCommission = 0.00015; // ETF 수수료 별도 설정 }
JavaScript
복사

stockTax

증권 거래세율입니다. 기본값은 0.003 (0.3%). 매도 시에만 부과됩니다.
한국 증권 거래세는 법 개정에 따라 변경될 수 있습니다. 시뮬레이션 기간에 맞는 세율을 적용하세요. (2025년 기준 코스피·코스닥 0.18%)
function initialize() { IQEnvironment.stockTax = 0.0018; // 0.18%로 조정 }
JavaScript
복사

simulationStart / simulationEnd

시뮬레이션 시작일·종료일입니다. 타입은 JavaScript Date 객체입니다. 읽기 전용이며 iQ 스튜디오 설정 화면에서 지정합니다.
logger.debug('시뮬레이션 기간: ' + IQEnvironment.simulationStart.toString() + ' ~ ' + IQEnvironment.simulationEnd.toString());
JavaScript
복사

simulationMethod

매매 체결 방식을 결정합니다. 당일 장 마감 후 종목을 결정한다는 가정 하에 기본값은 SimulationMethod.normal(익일 시가)입니다.

SimulationMethod 상수

상수
체결 가격
설명
SimulationMethod.normal
익일 시가 (기본값)
당일 onDayClose() 종료 후 다음 거래일 시가로 체결
SimulationMethod.average
익일 평균가
다음 거래일의 고가·저가·종가 평균으로 체결
SimulationMethod.day
당일 종가
당일 장 마감과 동시에 체결된다고 가정. 이상적 시나리오
주의: SimulationMethod.day(당일 종가)는 실제로 달성하기 어려운 이상적 가정입니다. 실전 전략 검증 시 SimulationMethod.normal(익일 시가)을 사용하는 것이 더 현실적입니다.
function initialize() { IQEnvironment.simulationMethod = SimulationMethod.normal; // 익일 시가 (기본값) // IQEnvironment.simulationMethod = SimulationMethod.average; // 익일 평균가 // IQEnvironment.simulationMethod = SimulationMethod.day; // 당일 종가 }
JavaScript
복사

활용 패턴

패턴 1: 현실적 비용 설정

온라인 증권사 기준의 수수료와 현행 거래세를 반영합니다.
function initialize() { IQEnvironment.stockCommission = 0.00015; // 0.015% (온라인 증권사 평균) IQEnvironment.etfCommission = 0.00015; IQEnvironment.stockTax = 0.0018; // 0.18% (2025년 기준) IQEnvironment.simulationMethod = SimulationMethod.normal; logger.debug('수수료: ' + (IQEnvironment.stockCommission * 100) + '%' + ' | 거래세: ' + (IQEnvironment.stockTax * 100) + '%' + ' | 초기AUM: ' + IQUtil.getNumberWithCommas(IQEnvironment.aum.toFixed(0))); }
JavaScript
복사

패턴 2: 시뮬레이션 기간 확인 후 분기 처리

function initialize() { var startYear = IQEnvironment.simulationStart.getFullYear(); logger.debug('시뮬레이션 시작 연도: ' + startYear); }
JavaScript
복사

관련 API

Account 객체 — aum 속성과 연계되는 계좌 초기 잔고
IQAccount 객체 — 계좌 컨테이너
Basket 객체 — IQEnvironment.aum을 기반으로 초기 예산 설정