当前位置: 首页 > news >正文

网站分析总结搜狗优化排名

网站分析总结,搜狗优化排名,企业建设网站的需求分析,网站建设及解决方案背景 Background ​ 最近想学习一下量化金融,总算在盈透投资者教育(IBKRCampus)板块找到一篇比较好的算法交易入门教程。我在记录实践过程后,翻译成中文写成此csdn博客,分享给大家。 ​ 如果你的英语好可以直接看原文…

背景 Background

​ 最近想学习一下量化金融,总算在盈透投资者教育(IBKRCampus)板块找到一篇比较好的算法交易入门教程。我在记录实践过程后,翻译成中文写成此csdn博客,分享给大家。

​ 如果你的英语好可以直接看原文。原文在数据准备阶段,采用了 pandas_datareader.data 读取网络数据,实际中出现了很多问题,我换成了 yfinance。可以参考文末完整代码。

参考资料:https://www.interactivebrokers.com/campus/ibkr-quant-news/basic-trading-algorithms-in-python/

算法交易简介 Introduction

​ 算法交易的兴起改变了金融市场,让交易者能够在数据驱动下做出精确的决策。具备 Pandas 和 NumPy 等强大第三方库的 Python 语言是开发交易算法的首选。本文将指导您利用这些库在 Python 中创建基本的交易算法。

​ 算法交易,指的是使用远超过人类能力的计算机程序,去提升交易速度和频率,这些算法通过分析市场数据,观察交易时机,基于预先给定的规则去执行交易命令。

​ 算法交易有一些核心优势,包括

  • 速度:指令可以在低于百万分之一秒的时间内运行

  • 准确度:减少人类的操作误差

  • 连续性:持续操作,不会像人类一样感到疲倦

为什么使用 Python 进行交易 Why Use Python

Python的简洁语法和灵活性(支持大量不同种类的第三方库),使其成为交易算法的理想语言。这篇文章主要聚焦于两个主要的第三方库:Pandas和NumPy。

  • Pandas:对于数据管理和分析,提供了一系列数据结构和函数,可以毫不费力与这些结构化数据协同工作

  • NumPy:对于数学计算,处理巨大的、多维的数组和矩阵,有一系列配套的数学函数。

其他有用的Python库包括:

  • scikit-learning:用于在算法交易中加入机器学习内容
  • matplotlib:用于过程和结构的数据可视化

准备开发环境 Environment

创建 Conda 环境

在这里插入图片描述
在这里插入图片描述

安装 Pandas 和 NumPy 库

在这里插入图片描述
在这里插入图片描述

数据获取和预处理 Data preparation

import yfinance as yf
import datetime
import numpy as np
# data preparation
# Define the start and end date
start = datetime.datetime(2020, 1, 1)
end = datetime.datetime(2022, 1, 1)# Fetch data for a particular stockstock_data = yf.download('AAPL', start='2022-01-01', end='2022-12-31')
print(stock_data.head())

计算技术指标 Technical Indicators

移动均线 Moving Average(MA)

# technical indicator
# Simple Moving Average (SMA)
stock_data['SMA_20'] = stock_data['Adj Close'].rolling(window=20).mean()
# Exponential Moving Average (EMA)
stock_data['EMA_20'] = stock_data['Adj Close'].ewm(span=20, adjust=False).mean()

相对力量指数 Relative Strength Index(RSI)

# RSI
def calculate_rsi(data, window):delta = data['Adj Close'].diff(1)gain = (delta.where(delta > 0, 0)).rolling(window=window).mean()loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean()rs = gain / lossrsi = 100 - (100 / (1 + rs))return rsistock_data['RSI_14'] = calculate_rsi(stock_data, 14)

一个基础的交易算法 A Basic Trading Algorithm

定义策略 Define the Strategy

# Define a strategy
# Calculate longer-term SMA
stock_data['SMA_50'] = stock_data['Adj Close'].rolling(window=50).mean()# Create buy/sell signals
stock_data['Signal'] = 0
stock_data.loc[stock_data.index[20]:, 'Signal'] = np.where(stock_data.loc[stock_data.index[20]:, 'SMA_20'] > stock_data.loc[stock_data.index[20]:, 'SMA_50'], 1, 0)
stock_data['Position'] = stock_data['Signal'].diff()

回测策略 Backtesting the Strategy

# Backtest
initial_capital = 100000.0
stock_data['Holdings'] = stock_data['Adj Close'] * stock_data['Position'].cumsum()
stock_data['Cash'] = initial_capital - (stock_data['Adj Close'] * stock_data['Position']).cumsum()
stock_data['Total'] = stock_data['Cash'] + stock_data['Holdings']

分析结果 Analyzing the Results

# Analizing results
cumulative_returns = (stock_data['Total'].iloc[-1] - initial_capital) / initial_capital
average_daily_returns = stock_data['Returns'].mean()
volatility = stock_data['Returns'].std()print("Cumulative Returns: {:.2f}%".format(cumulative_returns * 100))
print("Average Daily Returns: {:.4f}".format(average_daily_returns))
print("Volatility: {:.4f}".format(volatility))

在这里插入图片描述

结论 Conclusion

​ 利用Python的Pandas和NumPy库,开发基础交易算法,是一个有利的手段,去驱使数据为交易决定增加信息。这篇文章提供了一个基础的指导去准备数据、计算技术指标、完成一个简单的交易策略和评估其表现。

​ 当你继续探索和试图打磨你的算法的时候,记住金融市场是复杂和持续变化的。

​ 不断的学习和适应市场环境,是在算法交易中取得成功的关键。

完整代码 Code

import yfinance as yf
import datetime
import numpy as np
# data preparation
# Define the start and end date
start = datetime.datetime(2020, 1, 1)
end = datetime.datetime(2022, 1, 1)# Fetch data for a particular stockstock_data = yf.download('AAPL', start='2022-01-01', end='2022-12-31')
print(stock_data.head())# technical indicator
# Simple Moving Average (SMA)
stock_data['SMA_20'] = stock_data['Adj Close'].rolling(window=20).mean()# Exponential Moving Average (EMA)
stock_data['EMA_20'] = stock_data['Adj Close'].ewm(span=20, adjust=False).mean()# RSI
def calculate_rsi(data, window):delta = data['Adj Close'].diff(1)gain = (delta.where(delta > 0, 0)).rolling(window=window).mean()loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean()rs = gain / lossrsi = 100 - (100 / (1 + rs))return rsistock_data['RSI_14'] = calculate_rsi(stock_data, 14)# Define a strategy
# Calculate longer-term SMA
stock_data['SMA_50'] = stock_data['Adj Close'].rolling(window=50).mean()# Create buy/sell signals
stock_data['Signal'] = 0
stock_data.loc[stock_data.index[20]:, 'Signal'] = np.where(stock_data.loc[stock_data.index[20]:, 'SMA_20'] > stock_data.loc[stock_data.index[20]:, 'SMA_50'], 1, 0)
stock_data['Position'] = stock_data['Signal'].diff()
# Backtest
initial_capital = 100000.0
stock_data['Holdings'] = stock_data['Adj Close'] * stock_data['Position'].cumsum()
stock_data['Cash'] = initial_capital - (stock_data['Adj Close'] * stock_data['Position']).cumsum()
stock_data['Total'] = stock_data['Cash'] + stock_data['Holdings']# Calculate returns
stock_data['Returns'] = stock_data['Total'].pct_change()# Print final portfolio value
print("Final Portfolio Value: ${}".format(stock_data['Total'].iloc[-1]))# Analizing results
cumulative_returns = (stock_data['Total'].iloc[-1] - initial_capital) / initial_capital
average_daily_returns = stock_data['Returns'].mean()
volatility = stock_data['Returns'].std()print("Cumulative Returns: {:.2f}%".format(cumulative_returns * 100))
print("Average Daily Returns: {:.4f}".format(average_daily_returns))
print("Volatility: {:.4f}".format(volatility))
http://www.hkea.cn/news/607026/

相关文章:

  • 电商网站开发服务全网营销骗局揭秘
  • 个人网站怎么做互联网营销师培训课程免费
  • 微信网站建设价格网站开发报价方案
  • wordpress utc时间慢8小时大连seo关键词排名
  • 中国建设承包商网站创建软件平台该怎么做
  • 中小企业网站建设费用海外推广服务
  • 企业名称的英文做网站名seo是怎么优化推广的
  • 手机在线建站西安seo服务公司
  • 网站开发有前途吗我也要投放广告
  • 备案 网站名称怎么写crm软件
  • 扁平式网站模板b2b网站推广优化
  • 做外贸网站网络营销咨询服务
  • 江门网站建设方案报价淘宝seo优化怎么做
  • 盘龙城做网站推广网站推广
  • 如何做电子书网站域名站长工具
  • 物联网平台有哪些排名优化外包公司
  • 秦皇岛汽车网站制作数字营销工具
  • 培训教育的网站怎么做东莞做网站的联系电话
  • 云南做网站的公司外贸谷歌优化
  • 网页设计学徒培训可试学巢湖seo推广
  • 让顾客心动的句子seo模拟点击软件源码
  • 设计类专业包括哪些kj6699的seo综合查询
  • 手机网站制作哪家好查关键词
  • 米拓企业网站管理系统电商培训机构排名前十
  • 做效果图有哪些网站seo点击排名
  • 网络营销推广网站收录seo推广排名平台有哪些
  • 产品经理如何看待网站开发广州软件系统开发seo推广
  • wordpress 忘记管理员如何做网站seo
  • app和网站哪个有优势淘宝关键词排名
  • wordpress该域名宁波网站seo公司