알고리즘 트레이딩에서의 파이썬 - 페이지 24

 

Python, NumPy 및 Pandas로 주식 투자 포트폴리오 변동성을 계산하는 방법


Python, NumPy 및 Pandas로 주식 투자 포트폴리오 변동성을 계산하는 방법

이 비디오에서 발표자는 Python을 사용하여 투자 포트폴리오의 변동성을 계산하는 방법을 시연하고 그 뒤에 수학 방정식을 포함합니다. 휴대용 계산기에서 쉽게 계산할 수 있기 때문에 두 가지 보안 포트폴리오에 중점을 둡니다. 그러나 발표자는 증권이 3개 이상인 포트폴리오의 경우 변동성을 계산하기 위해 행렬 곱셈을 사용한다고 언급합니다. 발표자는 NumPy 라이브러리 및 기타 지원 라이브러리를 활용하여 계산을 수행합니다.

비디오는 Python 환경을 설정하고 필요한 모듈을 가져오는 것으로 시작됩니다. 그런 다음 발표자는 프로세스 전체에서 사용될 변수를 정의합니다.

포트폴리오에 대한 실시간 데이터를 얻기 위해 발표자는 API 사용에 대해 언급하고 특히 하루가 끝나는 과거 데이터를 사용하여 시연합니다. 데이터에 액세스하려면 API 키가 필요하다고 설명하고 키를 등록하고 얻는 방법에 대한 지침을 제공합니다. 데이터의 시작 날짜는 약 1년 전으로 설정됩니다. 발표자는 포트폴리오를 설정하고 각 증권에 동일한 가중치를 할당하고 다운로드한 데이터를 저장할 빈 목록을 만듭니다.

프리젠터는 for 루프를 사용하여 포트폴리오의 각 심볼에 대한 API 호출을 수행하고 데이터를 검색합니다. 데이터 공급자의 웹사이트에서 엔드포인트 URL을 얻고 필요한 수정을 가하여 API 호출을 구성하는 방법을 보여줍니다. 데이터는 추가 처리를 위해 pandas DataFrame으로 변환되는 JSON 문자열로 검색됩니다. 종가는 DataFrame에서 추출되어 데이터 목록에 추가됩니다.

for 루프를 완료한 후 프리젠터는 데이터 목록을 DataFrame으로 변환하고, 변환하고, 기호 이름으로 열 이름을 바꾸고, 인덱스를 날짜로 변경합니다. 그런 다음 각 증권의 종가를 포함하는 결과 DataFrame을 표시합니다.

발표자는 변동성을 계산하기 위해 순간 수익률을 계산해야 한다고 설명합니다. 종가에 대한 NumPy의 로그 함수를 사용하여 새 DataFrame을 만든 다음 연속 값 간의 차이를 계산합니다. 결과 DataFrame은 각 증권에 대한 즉각적인 수익률을 나타냅니다. 발표자는 DataFrame의 첫 번째 행을 제거하여 NaN 값을 처리하고 각 보안에 대한 분산 계산을 보여줍니다.

발표자는 각 증권의 변동성을 계산하기 위해 분산의 제곱근을 사용합니다. 결과 변동성을 백분율로 표시합니다.

포트폴리오 변동성에 대해서는 각 증권의 변동성에 대한 가중평균으로 계산할 수 있다고 발표자는 설명한다. 예제의 유가 증권은 동일한 가중치를 갖기 때문에 발표자는 변동성의 평균만 필요합니다. 백분율로 형식을 지정합니다.

다음으로 발표자는 공분산 행렬의 개념을 소개하고 반환 DataFrame을 사용하여 계산하는 방법을 보여줍니다. 일일 공분산을 연간 공분산으로 조정하고 결과 공분산 행렬을 표시합니다.

마지막으로 발표자는 매트릭스 곱셈을 사용하여 포트폴리오 변동성을 계산합니다. 가중치에 공분산 행렬을 곱하고 결과의 제곱근을 취합니다. 포트폴리오 변동성은 표준 편차를 나타내는 백분율로 표시됩니다.

결론적으로 비디오는 Python을 사용하여 포트폴리오 변동성을 계산하는 방법에 대한 단계별 데모를 제공합니다. 발표자는 필요한 계산을 설명하고 NumPy와 같은 관련 라이브러리를 소개하며 포트폴리오 변동성을 줄이는 다각화의 이점을 강조합니다.

How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
  • 2021.08.18
  • www.youtube.com
#python #numpy #pandaslearn how to use Python and NumPy to calculate investment portfolio volatilityhttps://alphabench.com/data/python-portfolio-volatil...
 

Python용 Steamlit 시작하기 - 몇 분 안에 작동하는 웹 앱 구축



Python용 Steamlit 시작하기 - 몇 분 안에 작동하는 웹 앱 구축

이 비디오에서는 Streamlit for Python을 사용하여 웹 앱을 만드는 방법을 시연합니다. Streamlit은 무료로 사용할 수 있는 웹 기반 UI로 프런트 엔드 개발 경험 없이도 고품질 앱을 빌드하고 공유할 수 있습니다. API를 사용하여 주가 데이터를 다운로드하고 그래프로 표시할 수 있는 간단한 앱을 만들 것입니다. 시작하자!

먼저 PyCharm을 IDE로 사용하지만 원하는 IDE를 사용할 수 있습니다. PyCharm에 익숙하지 않은 경우 "PyCharm 시작하기" 비디오에 대한 링크를 비디오 설명에 제공했습니다. 더 자세히 알고 싶다면 언제든지 확인하십시오.

이미 PyCharm에서 "Streamlit Demo"라는 새 프로젝트를 설정하고 Python 파일을 추가했습니다. 새로운 가상 환경에서 시작하기 때문에 일부 종속 항목을 설치해야 합니다. Pandas, 요청 라이브러리 및 Streamlit이 필요합니다. PyCharm 구성에 따라 Pandas 및 Requests가 이미 설치되어 있을 수 있지만 Streamlit을 설치해야 합니다. 또한 앱에 "종료 기록 데이터" API를 사용하여 하루에 약 20회로 제한되는 무료 API 호출을 허용합니다. 그 이상이 필요한 경우 웹 사이트에서 구독 옵션을 제공합니다.

Streamlit이 설치되면 샘플 애플리케이션을 살펴보겠습니다. 터미널을 열고 명령줄에서 Python을 호출한 다음 Streamlit 명령을 실행하여 Streamlit을 실행합니다. 샘플 애플리케이션은 "hello"라는 파일에 있습니다. 몇 초 후 응용 프로그램이 시작되고 헤더, 일부 텍스트 및 하이퍼링크가 있는 웹 페이지가 표시됩니다. 왼쪽에는 탐색할 수 있는 다양한 데모가 있습니다. 데모의 좋은 점은 출력을 생성하는 데 사용되는 코드를 제공한다는 것입니다. 예를 들어 차트가 있는 데모가 있고 그 아래에서 해당 차트를 생성하는 데 사용된 코드를 볼 수 있습니다. Streamlit은 서식을 지정하고 웹 페이지에 콘텐츠를 배치하므로 원하는 출력을 생성하기 위한 코드 작성에만 집중하면 됩니다.

애플리케이션이 만족스러우면 Streamlit에 허가를 요청하여 라이브로 게시할 수 있습니다. 여전히 무료 게시를 제공하지만 설정하려면 연락해야 합니다. 그런 다음 파일을 GitHub에 푸시하고 몇 초 안에 라이브 애플리케이션을 공유할 수 있습니다.

이제 우리 자신의 응용 프로그램을 만드는 것으로 넘어 갑시다. 애플리케이션 코드 작성을 시작하기 전에 Streamlit의 몇 가지 기능을 보여드리겠습니다. Streamlit은 버튼, 색상 선택기, 사이드바, 텍스트 상자, 날짜 선택기 등 사용할 수 있는 다양한 요소를 제공합니다. 가장 일반적으로 사용되는 요소는 웹 페이지에 텍스트를 표시할 수 있는 "쓰기" 기능입니다. "쓰기" 함수 내에서 마크다운 구문을 사용하여 텍스트 서식을 지정할 수도 있습니다. 또한 자유 형식 텍스트를 표시하려는 경우 독스트링을 사용하면 Streamlit이 이를 마크다운으로 렌더링합니다.

기본 앱을 작성하여 이러한 기능 중 일부를 테스트해 보겠습니다. 몇 가지 종속성을 정의한 다음 Streamlit 요소를 사용하는 방법을 보여 드리겠습니다. "st" 함수부터 시작하여 다양한 기능을 살펴보겠습니다. 예를 들어 "st.button"을 사용하여 버튼을 표시하고 "st.color_picker"를 색상 선택기, "st.sidebar"를 사용하여 사이드바를 만들 수 있습니다. "쓰기" 기능은 텍스트를 표시하는 데에도 매우 유용하며 그 안에 마크다운 구문을 사용할 수 있습니다. 이러한 일반적인 기능을 설명하지만 Streamlit이 더 많은 옵션을 제공한다는 점을 명심하십시오.

응용 프로그램을 실행하려면 현재 Streamlit 서버를 중지하고 이름으로 Python 명령을 실행하여 다시 시작합니다.

다음은 주가 데이터를 다운로드하고 그래프로 표시할 수 있는 간단한 Streamlit 앱의 예입니다.

import streamlit as st
import pandas as pd
import requests

# Set the title and page layout
st.title( "Stock Price Data" )
st.sidebar.header( "Settings" )

# Create input fields in the sidebar
symbol = st.sidebar.text_input( "Enter a stock symbol (e.g., AAPL)" , value= "AAPL" )
start_date = st.sidebar.text_input( "Enter the start date (YYYY-MM-DD)" , value= "2022-01-01" )
end_date = st.sidebar.text_input( "Enter the end date (YYYY-MM-DD)" , value= "2022-12-31" )

# Create a button to trigger the data retrieval
if st.sidebar.button( "Get Data" ):
     # Make an API request to retrieve the stock price data
    url = f " https://api.example.com/stock/ {symbol}/history?start_date={start_date}&end_date={end_date}"
    response = requests.get(url)
    
     # Check if the API request was successful
     if response.status_code == 200 :
        data = response.json()
        df = pd.DataFrame(data)
        
         # Display the downloaded data
        st.write(df)
        
         # Create a line chart of the stock prices
        st.line_chart(df[ "close" ])
     else :
        st.write( "Error retrieving data from the API" )

# Add some additional information to the sidebar
st.sidebar.info( "This is a simple app to download and graph stock price data." )
st.sidebar.info( "Enter the stock symbol and date range, then click 'Get Data' to retrieve the data." )

이 예에서는 먼저 필요한 라이브러리인 Streamlit, Pandas 및 Requests를 가져옵니다. 그런 다음 st.title() 및 st.sidebar.header() 함수를 사용하여 제목과 페이지 레이아웃을 설정합니다.

다음으로 st.sidebar.text_input() 함수를 사용하여 사이드바에 입력 필드를 만듭니다. 사용자는 이 필드에 주식 기호, 시작 날짜 및 종료 날짜를 입력할 수 있습니다.

그런 다음 st.sidebar.button() 함수를 사용하여 버튼을 만듭니다. 버튼을 클릭하면 데이터 검색 프로세스가 트리거됩니다. 입력한 기호, 시작 날짜 및 종료 날짜를 사용하여 API 요청 URL을 구성합니다. requests.get() 함수를 사용하여 API에 GET 요청을 합니다.

API 요청이 성공하면(상태 코드 200) 응답에서 데이터를 검색하고 Pandas DataFrame을 생성합니다. st.write() 함수를 사용하여 다운로드한 데이터를 표시한 다음 st.line_chart() 함수를 사용하여 주가의 라인 차트를 만듭니다.

API 요청이 실패하면 st.write() 함수를 사용하여 오류 메시지를 표시합니다.

마지막으로 st.sidebar.info() 함수를 사용하여 사이드바에 추가 정보를 추가합니다.

이 앱을 실행하려면 Python 파일(예: stock_app.py)에 저장하고 터미널에서 streamlit run stock_app.py 명령을 사용하여 실행할 수 있습니다.

이는 기본적인 예일 뿐이며 필요에 따라 추가로 사용자 정의할 수 있습니다. Streamlit은 드롭다운, 확인란, 슬라이더 등을 포함하여 대화형 웹 앱을 만들기 위한 더 많은 기능을 제공합니다. 자세한 내용과 예제는 Streamlit 문서( https://docs.streamlit.io/ )를 탐색할 수 있습니다.

Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
  • 2021.10.18
  • www.youtube.com
#python #streamlitHow to use streamlit - full-featured GUI for Pythonhttps://alphabench.com/data/python-streamlit-app.html*Please SUBSCRIBE:https://www.yo...
 

EOD(End of Day) 과거 데이터 API를 사용하여 일일 고가/저가 시간 찾기



EOD(End of Day) 과거 데이터 API를 사용하여 일일 고가/저가 시간 찾기

이 비디오에서는 주식의 일일 고가 및 저가 거래 가격을 추출할 수 있는 End of Day Historical Data API를 살펴보겠습니다. 이 API는 금융 데이터를 위한 프리미엄(Freemium) 모델의 일부로 매일 20번의 무료 API 호출을 제공합니다. 이 API의 장점은 70개가 넘는 글로벌 거래소의 데이터에 대한 액세스를 제공한다는 것입니다. 비디오 설명에서 해당 웹 사이트 링크 및 특별 가격을 찾을 수 있습니다.

시작하려면 환경을 설정해야 합니다. datetime 모듈을 사용하여 날짜를 조작하고, 기록 데이터에 액세스하기 위한 도우미 라이브러리, 데이터 조작 및 필터링을 위한 pandas, API 호출 요청을 사용할 것입니다. 다음으로 API 키를 가져와야 합니다. 이 키는 간단하게 파일에 저장하거나 노트북에 직접 저장할 수 있습니다.

또한 데이터의 시작 날짜를 정의합니다. 일반적으로 약 10일 전으로 거슬러 올라갑니다. API는 데이터 유형에 따라 다른 제한이 있으며 분 단위 데이터는 120일로 제한되고 5분 간격 데이터는 600일로 제한됩니다. API는 1970년 1월 1일 이후 경과된 초 수를 나타내는 Unix 타임스탬프를 사용하여 데이터를 인덱싱합니다. API 요청에 대해 원하는 시작 날짜를 Unix 타임스탬프로 변환합니다.

필요한 설정이 완료되면 API 키를 사용하여 "End of Day Historical Data" 객체의 인스턴스를 생성할 수 있습니다. 이 개체를 사용하면 필요한 데이터를 검색할 수 있습니다. 헬퍼 라이브러리는 다양한 유형의 데이터를 탐색할 수 있는 다양한 엔드포인트를 제공합니다. 이 예에서는 지정된 시작 날짜부터 시작하여 1분 간격으로 Tesla의 장중 가격을 검색하는 데 중점을 둘 것입니다.

데이터를 시각화하기 위해 Pandas DataFrame의 생성자에서 API 호출을 래핑할 수 있습니다. 이를 통해 데이터 작업 및 시각화가 더 쉬워집니다. Unix 타임스탬프, 날짜 및 시간을 포함하여 검색된 데이터를 확인하기 위해 DataFrame의 처음 몇 행을 표시합니다.

도우미 라이브러리를 사용하지 않으려면 요청 라이브러리를 사용하여 API 엔드포인트에 직접 액세스하고 JSON 데이터를 검색하는 대체 방법을 동영상에서 제공합니다.

다음으로 일부 데이터 정리를 수행합니다. 정수 기반 인덱스를 데이터의 날짜 및 시간으로 바꿉니다. 시간과 날짜에 대해 별도의 열을 추가하고 GMT 오프셋 및 원래 날짜 시간과 같은 불필요한 열을 제거합니다. 결과 DataFrame은 열이 추가된 수정된 구조를 보여줍니다.

정규 거래 시간에 집중하기 위해 원본 데이터의 복사본을 만듭니다. 인덱스는 datetime 개체이므로 between_time 메서드를 사용하여 원하는 시간을 필터링할 수 있습니다. 비디오에서 언급했듯이 이 데이터의 시간대는 GMT-5이므로 그에 따라 시간을 조정합니다. 또한 이해하기 쉽도록 시간을 동부 표준시(ET)로 변환합니다.

datetime 열에서 시간만 필터링하기 위해 몇 가지 추가 단계를 수행합니다. 이미 계산을 수행했기 때문에 datetime 메서드를 적용하여 시간을 추출하기 전에 데이터 형식을 다시 지정해야 합니다. 결과 DataFrame은 뉴욕시의 조정된 시간을 표시합니다.

마지막으로, 우리는 거래일 동안 최고점과 최저점이 언제 발생하는지에 대한 원래의 질문을 다룹니다. 먼저 groupby 함수와 min 및 max 메서드를 사용하여 매일 일반적인 고가와 저가를 검색합니다. 이러한 최고점과 최저점의 특정 시간을 결정하기 위해 각각 DataFrame 내에서 최소값과 최대값의 인덱스를 찾습니다. 이를 통해 이러한 가격대의 시기에 대한 통찰력을 얻을 수 있으므로 패턴이나 추세를 관찰할 수 있습니다.

전반적으로 이 동영상은 End of Day Historical Data API 사용, 주가 데이터 검색, 고가 및 저가 거래 시점 분석에 대한 단계별 가이드를 제공합니다.

Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
  • 2021.11.22
  • www.youtube.com
@MattMacarty #python #pandas #EODHistoricalDataUse a financial services API to find the time a stock trades at it lowest or highest each dayUse a financi...
 

Python 및 QuantStats를 사용하여 거래 알고리즘 및 포트폴리오 지표를 백테스트하는 방법



Python 및 QuantStats를 사용하여 거래 알고리즘 및 포트폴리오 지표를 백테스트하는 방법

오늘은 포트폴리오 프로파일링 도구로 구축된 광범위한 재무 지표 라이브러리인 Quant stats에 대한 포괄적인 개요를 안내해 드리겠습니다. Quant stats를 사용하면 간단한 한 줄로 상세한 보고서를 손쉽게 생성할 수 있습니다. 이 도구를 사용하면 포트폴리오 성과 및 백테스트 거래 알고리즘을 효과적으로 측정할 수 있습니다.

Quant stats는 이미 익숙하고 사용할 수 있는 잘 알려진 데이터 과학 라이브러리에 의존합니다. 이 데모를 위해 저는 PyCharm에서 작업 중이며 새 프로젝트를 시작했습니다. 따라하고 있다면 필요한 종속성이 설치되어 있는지 확인하십시오. Quant 통계가 약 6개월 동안 업데이트되지 않았고 최신 Pandas 버전과의 호환성 문제가 있을 수 있기 때문에 약간 이전 버전의 Pandas를 사용하고 있습니다.

필요한 종속성이 있는지 확인하려면 requirements.txt 파일에 추가하고 Pip을 사용하여 설치할 수 있습니다. 또한 Quant 통계는 통계, 플롯 및 보고서의 세 가지 모듈로 구성됩니다. 광범위한 기능으로 인해 이 단일 비디오에서 모든 것을 다룰 수는 없습니다. 그러나 개요를 제공하고 시작하는 방법을 안내해 드리겠습니다. 그런 다음 특정 요구 사항과 관심사에 따라 추가로 탐색할 수 있습니다.

자세한 내용을 살펴보기 전에 잠시 스폰서의 이야기를 들어보겠습니다. Python으로 거래 알고리즘을 생성하는 방법을 배우는 데 관심이 있다면 Looming Wealth에서 알고리즘 거래 과정을 통해 도움을 받을 수 있습니다. 이 과정에서는 귀하를 대신하여 자동으로 거래하는 봇을 만들고, 기술 및 재무 지표를 구현 및 활용하고, 기계 학습을 사용하여 고유한 거래 알고리즘을 개발하는 방법을 배웁니다. 자신의 속도에 맞춰 학습하거나 공동 학습 경험을 위해 실시간 수업에 참여할 수 있습니다. 아래 링크를 따라 Looming Wealth에 대해 자세히 알아보고 모든 거래 과정에서 15% 할인을 받으십시오.

이제 Quant 통계로 돌아가 보겠습니다. 새 빈 파일에서 Quant stats 라이브러리를 가져와서 시작합니다. 다음으로 분석할 주식 기호를 설정합니다. 이 예에서는 S&P 500 ETF(SPY)를 사용하겠습니다. Quant 통계를 사용하여 지난 3년 동안의 성능을 조사합니다.

반품 데이터를 다운로드하기 위해 Yahoo Finance 데이터에 의존하는 Quant 통계 유틸리티를 활용합니다. 원하는 데이터 소스를 사용할 수 있습니다. 여기에는 마법이 없습니다. 우리가 얻는 것을 보기 위해 반품을 인쇄해 봅시다. 출력은 지정된 기간에 걸쳐 일일 수익이 있는 Pandas 시리즈가 됩니다.

반품 데이터가 있으면 Quant 통계를 사용하여 다양한 통계를 계산할 수 있습니다. 이 비디오에서 다룰 수 있는 것보다 훨씬 더 많은 사용 가능한 기능이 있습니다. available_stats 속성을 인쇄하여 사용 가능한 통계 목록을 얻을 수 있습니다. 개인 기능을 제외하고 사용 가능한 통계의 목록 이해를 표시해 보겠습니다.

간결하게 유지하기 위해 목록 이해력 중 일부를 주석 처리하겠습니다. 지난 3년 동안 S&P 500에 대한 몇 가지 일반적인 통계를 인쇄할 것입니다. qs.stats.sharp_ratio()를 사용하여 샤프 비율을 계산해 봅시다. 또한 각각 qs.stats.best_day() 및 qs.stats.best_month()를 호출하여 최상의 요일과 월을 찾습니다. 필요한 경우 이러한 호출을 수정하여 데이터를 다르게 집계할 수 있습니다.

또는 Quant stats는 Pandas용 래퍼를 제공하여 포트폴리오 개체에서 직접 메서드를 호출할 수 있도록 합니다. Pandas를 확장하면 원라이너를 사용하여 다양한 통계에 액세스할 수 있습니다. 예를 들어, Quant stats.extend_pandas()를 호출한 다음 포트폴리오 개체를 사용하여 복합 연간 총 수익 및 최대 하락률과 같은 통계를 검색할 수 있습니다.

통계 외에도 Quant stats는 포트폴리오를 구축할 수 있는 기능도 제공합니다.

다음으로 이동 평균 교차 전략을 기반으로 신호를 계산하겠습니다. 빠른 이동 평균이 느린 이동 평균 위에 있으면 매수 신호입니다. 그렇지 않으면 매도 신호입니다. 이 신호를 데이터 프레임에 추가하겠습니다.

그런 다음 신호를 기반으로 위치를 계산할 것입니다. 매수 신호라면 포지션을 1(롱 포지션)으로 설정하고, 매도 신호라면 포지션을 -1(숏 포지션)으로 설정하겠습니다. 다른 모든 경우는 0으로 설정됩니다(위치가 없음을 나타냄).

이제 포지션을 파악했으므로 전략 수익을 계산하겠습니다. 이를 위해 포지션에 자산의 일일 수익률을 곱합니다. 이것은 우리에게 일일 전략 수익을 줄 것입니다.

다음으로 일일 수익률의 누적 곱을 취하여 전략의 누적 수익률을 계산하겠습니다. 이것은 우리에게 시간이 지남에 따라 전략의 성장을 제공할 것입니다.

마지막으로 quantstats.reports.html 함수를 사용하여 보고서를 생성하겠습니다. 이 기능은 누적 반품 데이터를 가져와 다양한 성능 메트릭 및 시각화가 포함된 HTML 보고서를 생성합니다. 보고서를 HTML 파일로 저장하겠습니다.

보고서를 자동으로 보려면 웹 브라우저를 사용하여 파일을 열겠습니다. 이것이 코드의 전부입니다.

이제 선택한 매개변수로 이 코드를 실행하면 이동 평균 교차 전략이 생성되고 성능 메트릭이 계산되며 결과가 포함된 HTML 보고서가 생성됩니다. 필요에 따라 이동 평균 기간 또는 시간 창과 같은 전략 매개변수를 사용자 정의할 수 있습니다.

How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
  • 2022.12.07
  • www.youtube.com
​@MattMacarty #python #trading #algotrading How to Backtest Trading Strategies and Algorithms, Generate Portfolio Metrics✅ Please SUBSCRIBE:https://w...