728x90
๋ฐ์ํ
๐ ์ค๋์ ๋ชฉํ ๐
๐ชจ ์๋์ ๋ฐฐ์ดํ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฆฝ๋ ์ด ๋ฐ์ดํฐ๋ก ๋ง๋ค์!!
{
"Sharpe": 0.49486577087259837,
"Returns": 0.09653658218825922,
"Risk": 0.19507629719072297,
"idx": 999,
"code": ["008770.KS", "010620.KS", "011170.KS", "024110.KS", "192820.KS"],
"rate": [0.027731564480966874, 0.056647087277405216, 0.5564385158412494, 0.0045145824210048, 0.35466824997937374],
"date": "2021-01-11"
}
๐ชจ ์ํ๋ ๊ฒฐ๊ณผ
index="monte"
| head 1
| rename code{} as codes
| rename rate{} as rates
| eval fields_value=mvzip(codes, rates)
| mvexpand fields_value
| eval fields_value = split(fields_value, ",")
| eval code = mvindex(fields_value, 0)
| eval rate = mvindex(fields_value, 1)
| rex field=code "^(?<code>\\d+).KS"
| lookup kospi_200 code OUTPUT name
| table date, idx, code, Sharpe, Returns, Risk, rate
- ์ ๋ช ๋ น์ด๋ฅผ ๋ฝ๊ฐ๋ณด์!
๐ head ๐
- ์ด๋ ฅ ๊ฒ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต๊ทผ์ ์ด๋ฒคํธ N๊ฐ๋ฅผ ๋ํ๋
- ์ค์๊ฐ ๊ฒ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋จผ์ ์์ง๋ ์ด๋ฒคํธ N๊ฐ๋ฅผ ๋ํ๋
๐ rename ๐
- ํ๋ ์ด์์ ํ๋ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๋ค.
- ์์ผ๋์นด๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ด ์ ์ฌํ ํ๋์ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๋ค.
๐ eval ๐
- ์์ ๊ณ์ฐํ๊ณ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฒ์ ๊ฒฐ๊ณผ ํ๋์ ๋ฃ๋๋ค.
- ์ง์ ํ๋ ํ๋ ์ด๋ฆ์ด ๋ฐ์ดํฐ์ ์์ ๋, ๊ฒ์ ๊ฒฐ๊ณผ์ ์ ํ๋๊ฐ ์ถ๊ฐ๋จ
- ์ง์ ํ๋ ํ๋ ์ด๋ฆ์ด ๋ฐ์ดํฐ์ ์์ ๋, ํด๋น ํ๋ ๊ฐ์ eval ์์ ๊ฒฐ๊ณผ๋ก ๋ฎ์ด์
- ์ซ์, ๋ฌธ์์ด ๋ฐ ๋ถ์ธ์์ ํ๊ฐํ๋ค.
- ํ ๊ฒ์์์ ์ผํ๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ eval ์์ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ดํ์ ์์ ๊ตฌ๋ถํ ์ ์์.
- ๊ฒ์์์๋ ์ฌ๋ฌ eval ์์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก,
์ดํ ์์์ ์ด์ ์ ํ๊ฐํ ํ๋๋ฅผ ์ฐธ์กฐํ ์ ์๋ค. - eval์์ ์๋ก ์์ฑ๋ ํ๋๋ ๊ด์ฌ ํ๋์์ ํ์ธํ ์ ์๋ค.
โ๏ธ eval ๋ช ๋ น์ ํจ์ : mvzip(X, Y, "Z") โ๏ธ
- ๋ ๊ฐ์ ๋ค์ค๊ฐ ํ๋( X, Y )๋ฅผ ์ฌ์ฉํ๊ณ X์ ์ฒซ ๋ฒ์งธ ๊ฐ๊ณผ Y์ ์ฒซ ๋ฒ์งธ ๊ฐ,
X์ ๋ ๋ฒ์งธ ๊ฐ๊ณผ Y์ ๋ ๋ฒ์งธ ๊ฐ์ ์ฐ๊ฒฐํ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ํ๋๋ฅผ ๊ฒฐํฉํ๋ค. - ์ธ ๋ฒ์งธ ์ธ์ Z๋ ์ ํ ์ฌํญ์ด๋ฉฐ, ๋ ๊ฐ์ ์กฐ์ธํ๊ธฐ ์ํ ๊ตฌ๋ถ์๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ
๊ธฐ๋ณธ๊ฐ์ ์ผํ์ด๋ค.
โ๏ธ eval ๋ช ๋ น์ ํจ์ : split(X, "Y") โ๏ธ
- ์ด ํจ์๋ ๋ ๊ฐ์ ์ธ์์ธ ํ๋ X์ ๊ตฌ๋ถ์ Y๋ฅผ ์ฌ์ฉํ๊ณ , X์ ๊ฐ์ ๊ตฌ๋ถ์ Y๋ก ๊ตฌ๋ถํ๊ณ X๋ฅผ ๋ค์ค๊ฐ ํ๋๋ก ๋ฐํ
โ๏ธ eval ๋ช ๋ น์ ํจ์ : mvindex(MVFIELD,STARTINDEX, ENDINDEX)โ๏ธ
- ์ด ํจ์๋ ์์ ๋ฐ ์ข
๋ฃ ์ธ๋ฑ์ค ๊ฐ์ ์ฌ์ฉํ์ฌ ๋ค์ค๊ฐ ํ๋์ ๋ถ๋ถ ์งํฉ์ ๋ฐํ
- MVFIELD: ๋ค์ค๊ฐ ํ๋ (ํ์)
- STARTINDEX: ์ซ์ (ํ์)
- ENDINDEX: ์ซ์ (์ ํ ์ฌํญ)
- ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์
- STARTINDEX ์ธ์๋ง ์ง์ ๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ๋ง ๊ฒฐ๊ณผ์ ํฌํจ๋จ
- ENDINDEX ์ธ์๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ STARTINDEX๋ถํฐ ENDINDEX๊น์ง์ ๊ฐ ๋ฒ์๊ฐ ๊ฒฐ๊ณผ์ ํฌํจ๋จ
- STARTINDEX์ ENDINDEX๋ชจ๋ ์์์ผ ์ ์๋ค.
- -1 ์ธ๋ฑ์ค๋ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๊ฐ์ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉ
- ์ธ๋ฑ์ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ๊ฑฐ๋ ์ ํจํ์ง ์์ผ๋ฉด NULL์ ๋ฐํ
| eval code = mvindex(fields_value, 0)
| eval rate = mvindex(fields_value, 1)
๐ mvexpand ๐
- ๋ค์ค๊ฐ ํ๋์ ๊ฐ์ ๋ค์ค๊ฐ ํ๋์ ๊ฐ ๊ฐ์ ๋ํด ํ๋์ฉ ๊ฐ๋ณ ์ด๋ฒคํธ๋ก ํ์ฅ
- ๊ฐ ๊ฒฐ๊ณผ์ ๋ํด mvexpand ๋ช ๋ น์ด๋ ๋ชจ๋ ๋ค์ค๊ฐ ํ๋์ ๋ํด ์ ์ด๋ฒคํธ๋ฅผ ๋ง๋ ๋ค.
๐ rex ๐
- ์ด ๋ช
๋ น์ด๋ ์ ๊ท์ ๋ช
๋ช
๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ํ๋๋ฅผ ์ถ์ถํ๊ฑฐ๋
sed ์์ ์ฌ์ฉํ์ฌ ํ๋์ ๋ฌธ์ ๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ๋์ฒดํ๊ธฐ ์ํด ์ฌ์ฉ - ์ง์ ๋ ํ๋์ ๊ฐ์ ๊ณ ์ ๋์ง ์์ ์ ๊ท์๊ณผ ์ผ์น์ํค๊ณ ,
๋ช ๋ช ๋ ๊ทธ๋ฃน์ ํด๋น ์ด๋ฆ์ ๊ฐ์ง ํ๋๋ก ์ถ์ถ - ํ๋ ์์ธํ๊ฒ ํฌ์คํ ํ ์์
| rex field=code "^(?<code>\\d+).KS"
- ์ฌ๊ธฐ์๋ ๊ธฐ์กด code field์์ ๋๋ผ ์ฝ๋ ".KS"๋ฅผ ์ง์๋ฒ๋ฆฐ
์ซ์๋ก๋ง๋ code๋ก ๋ฐ๊พธ๊ธฐ ์ํด์ ์ฌ์ฉ๋จ.
๐ lookup ๐
| lookup kospi_200 code OUTPUT name
- kospi_200์ด๋ผ๋ ๋ฃฉ์ ํ์ผ์ name์ด๋ผ๋ ํ๋๋ฅผ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ์ code ํ๋๋ ๋งคํํด์ค
- ์ฝ๋์ ๋ง๋ ํ์ฌ ์ด๋ฆ์ด ์ ๋งตํ๋์ด ๋ค์ด๊ฐ ๊ฒ์ ํ์ธํ ์ ์๋ค.
728x90
๋ฐ์ํ