import requests

# Solactive API 엔드포인트 및 클라이언트 ID 설정
BASE_URL = "https://clients.solactive.com/api/rest/v1/indices"
CLIENT_ID = "your_client_id"  # Solactive에서 제공받은 클라이언트 ID
ISIN = "DE000SL0J6Z8"

def fetch_index_data():
    try:
        # API 요청 URL 구성
        url = f"{BASE_URL}/{CLIENT_ID}/{ISIN}/index"
        
        # GET 요청 보내기
        response = requests.get(url)
        
        # 응답 데이터 확인
        if response.status_code == 200:
            data = response.json()
            print("Index Data:")
            print(data)
        else:
            print(f"Failed to fetch data. HTTP Status Code: {response.status_code}")
    except Exception as e:
        print(f"An error occurred: {e}")

# 실행
fetch_index_data()

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

볼린저밴드  (0) 2025.02.02
샤프비율  (0) 2025.02.02
변동성  (0) 2025.02.02
MDD (Maximum Draw Down)  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02

# 20_볼린저밴드_01

import FinanceDataReader as fdr
df = fdr.DataReader('005380', '2015')
df

 

df = df.loc[:, ['Close']].copy()
df

 

 

df['center'] = df['Close'].rolling(window=20).mean()
df
df['up_band'] = df['center'] + 2*df['Close'].rolling(window=20).std()
df
df['low_band'] = df['center'] - 2*df['Close'].rolling(window=20).std()
df

 

 

df = df.dropna()
df

 

# 21_볼린저밴드_02 : 볼린저밴드 지표만들기

book = df[['Close']].copy()
book['trade'] = ''
book

 

 

for i in df.index:
    if df.loc[i, 'Close'] > df.loc[i, 'up_band']:
        book.loc[i, 'trade'] = ''
    elif df.loc[i, 'low_band'] > df.loc[i, 'Close']:
        book.loc[i, 'trade'] = 'buy'
    elif df.loc[i, 'up_band'] >= df.loc[i, 'center'] and df.loc[i, 'low_band'] <= df.loc[i,'Close']:
        if book.shift(1).loc[i, 'trade'] == 'buy':
            book.loc[i, 'trade'] = 'buy'
        else:
            book.loc[i, 'trade'] = ''
            
book

 

23_볼린저밴드_03 : 수익률평가

rtn = 1.0
buy = 0.0
sell = 0.0
book['rtn'] = 1

for i in book.index:
    if book.loc[i, 'trade'] == 'buy' and book.shift(1).loc[i, 'trade'] == '':
        buy = book.loc[i, 'Close']
        print('진입일 : ', i, '매수가격 : ', buy)
    elif book.loc[i, 'trade'] == '' and book.shift(1).loc[i, 'trade'] == 'buy':
        sell = book.loc[i, 'Close']
        rtn = (sell - buy) / buy + 1
        book.loc[i, 'rtn'] = rtn
        print('청산일 : ', i, '매수가격 : ', buy, ' 매도가격 : ', sell, '수익률 : ', round(rtn, 4))
    if book.loc[i, 'trade'] == '':
        buy = 0.0
        sell = 0.0
acc_rtn = 1.0
for i in book.index:
    rtn = book.loc[i, 'rtn']
    acc_rtn = acc_rtn * rtn
    book.loc[i, 'acc_rtn'] = acc_rtn
print('누적수익률 : ', round(acc_rtn, 4))

 

~~ 중략 ~~

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

Solactive US Big Tech Top 7 Plus Price Return Index 차트만들기_파이썬  (0) 2025.04.12
샤프비율  (0) 2025.02.02
변동성  (0) 2025.02.02
MDD (Maximum Draw Down)  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2000')
df

 

start_date = '2021-02-04'
end_date = '2022-03-03'
tmp_df = df.loc[start_date:end_date]
tmp_df
tmp_df['daily_rtn'] = tmp_df['Close'].pct_change()
tmp_df
import numpy as np
VOL = np.std(tmp_df['daily_rtn']) * np.sqrt(252.0)
VOL

결과출력 :

np.float64(0.2467837803080943)

SHARP = np.mean(tmp_df['daily_rtn']) / VOL
SHARP

결과출력:

np.float64(0.0033381487604064093)

 

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

Solactive US Big Tech Top 7 Plus Price Return Index 차트만들기_파이썬  (0) 2025.04.12
볼린저밴드  (0) 2025.02.02
변동성  (0) 2025.02.02
MDD (Maximum Draw Down)  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02
import FinanceDataReader as fdr
import numpy as np
df = fdr.DataReader('AAPL', '2000')
df
start = '2021-06-13'
end = '2022-02-03'
tmp_df = df.loc[start:end]
tmp_df

 

 

tmp_df['Change'] = tmp_df['Close'].pct_change()
tmp_df

 

VOL = np.std(tmp_df['Change']) * np.sqrt(252.)
VOL

결과출력:

np.float64(0.23523418290202477)

'Python > 파이썬_자동매매' 카테고리의 다른 글

볼린저밴드  (0) 2025.02.02
샤프비율  (0) 2025.02.02
MDD (Maximum Draw Down)  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02
수익률 계산  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2000')
df
start_date = '2024-01-22'
end_date = '2025-01-21'
tmp_df = df.loc[start_date:end_date]
tmp_df

 

historial_max = tmp_df['Close'].cummax()
historial_max
daily_mdd = tmp_df['Close'] / historial_max - 1.0
daily_mdd

 

mdd = daily_mdd.cummin()
mdd
mdd.plot()
daily_mdd.plot()

 

 

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

샤프비율  (0) 2025.02.02
변동성  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02
수익률 계산  (0) 2025.01.30
resample  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2000')
df
df['daily_rtn'] = df['Close'].pct_change()
df

 

# cumprod 누적곱, cumsum 누적합
df['st_rtn'] = (df['daily_rtn'] + 1).cumprod()
df

 

start_date = '2018-10-08'
end_date = '2022-01-12'
tmp_df = df.loc[start_date:end_date, ['st_rtn']] / df.loc[start_date, 'st_rtn']
tmp_df

 

 

CAGR = tmp_df.loc['2022-01-12', 'st_rtn'] ** (252./len(tmp_df.index)) -1
CAGR

 

결과출력 :

np.float64(0.4192544059773151)

'Python > 파이썬_자동매매' 카테고리의 다른 글

변동성  (0) 2025.02.02
MDD (Maximum Draw Down)  (0) 2025.02.02
수익률 계산  (0) 2025.01.30
resample  (0) 2025.01.30
rolling  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2001-1-20')
df
df['daily_rtn'] = df['Close'].pct_change()
df
# cumprod 누적곱, cumsum 누적합
df['st_rtn'] = (1+df['daily_rtn']).cumprod()
df
start_date = '2001-01-22'
end_date = '2024-05-06'
tmp_df = df.loc[start_date:end_date, ['st_rtn']] / df.loc[start_date, ['st_rtn']]
tmp_df
tmp_df.loc[end_date, 'st_rtn']

 

import matplotlib.pyplot as plt
tmp_df.plot(figsize=(16,9))

 

 

 

 

 

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

MDD (Maximum Draw Down)  (0) 2025.02.02
CAGR (연평균수익률)  (0) 2025.02.02
resample  (0) 2025.01.30
rolling  (0) 2025.01.30
diff  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('NAVER:005930', '2024-1-23')
df

 

day => week, month, year 를 down-sampling 이라고 하고,

주로 사용하는 방식 day => time, minute 를 up-samping 이라고 함

 

# 1년치 일데이터를 가져온 것을 
# 월(ME:날짜를 어떤날짜로 출력할것인지를 정하는 옵션임
# , MS도 있음 > 이 내용 아래 코딩참조)
df.resample(rule='ME').mean() # mean : 한달치 평균
df.resample(rule='MS').mean()
df.resample(rule='ME').max() # max : 한달치 최대값

 

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

CAGR (연평균수익률)  (0) 2025.02.02
수익률 계산  (0) 2025.01.30
rolling  (0) 2025.01.30
diff  (0) 2025.01.30
pct_change  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2024-1-20')
df
# 5일 이동평균 구하기
df['MA_5'] = df['Close'].rolling(window=5).mean()
df
# 3일치 최대값 구하기
df['MAX_3'] = df['Close'].rolling(window=3).max()
df.iloc[0:20]

 

 

'Python > 파이썬_자동매매' 카테고리의 다른 글

수익률 계산  (0) 2025.01.30
resample  (0) 2025.01.30
diff  (0) 2025.01.30
pct_change  (0) 2025.01.30
shift  (0) 2025.01.30
import FinanceDataReader as fdr
df = fdr.DataReader('AAPL', '2024-1-20')
df

 

# 당일 종가 - 하루전 종가 구하기!
df['Close_diff'] = df['Close'].diff()
df
df['Close_diff_2'] = df['Close'].diff(2)
df
df['Close_diff_-1'] = df['Close'].diff(-1)
df
# diff 함수의 인자값 디폴트값은 (1, axis=0) 의미 
# ( 한칸전을 계산, raw 단위로 계산 ) 만약 axis=1이면 column 단위로 계산함
df['Close'].diff(axis=1)

df['Close']는 시리즈 타입 데이터라서 열이 1개이므로 axis=1로 연산을 위해

옆 열을 보니 없어서 에러가 나는 것임

'Python > 파이썬_자동매매' 카테고리의 다른 글

resample  (0) 2025.01.30
rolling  (0) 2025.01.30
pct_change  (0) 2025.01.30
shift  (0) 2025.01.30
결측치(데이터 정제) 처리  (0) 2025.01.30

+ Recent posts