Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pykrx import stock
- import numpy as np
- import pandas as pd
- from pandas import Series
- def 장기_단기_이평선_수익률(df, Ns, Nl):
- df = df[ [ '종가' ] ].copy()
- df['ma_s'] = df['종가'].rolling( Ns ).mean( ).shift ( 1 )
- df['ma_l'] = df['종가'].rolling( Nl ).mean( ).shift ( 1 )
- cond = df['ma_s'] > df['ma_l']
- df['status'] = np.where(cond, 1, 0)
- df.iloc[-1, -1] = 0
- # 매수/매도 조건
- 매수조건 = (df['status'] == 1) & (df['status'].shift(1) != 1)
- 매도조건 = (df['status'] == 0) & (df['status'].shift(1) == 1)
- # 수익률 계산
- 수익률 = df.loc[매도조건, '종가'].reset_index(drop=True) / df.loc[매수조건, '종가'].reset_index(drop=True)
- 수익률 = 수익률 - 0.002
- return 수익률.cumprod().iloc[-1]
- df = stock.get_index_ohlcv_by_date("20200101", "20200831", "1001")
- df = df[ [ '종가' ] ]
- result = [ ]
- for i in range(2, 17):
- for j in range(30, 61):
- result.append(장기_단기_이평선_수익률(df, i, j))
- index = pd.MultiIndex.from_product([ range(2, 17), range(30, 61) ])
- s = Series(result, index)
- print(s.idxmax())
- print(s.max())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement