量化選股策略 聚寬

# 量化選股策略完整分析與優化建議

## 策略整體架構分析

這個量化交易策略主要由以下幾個核心部分組成:

1. **初始化設置**:配置基準指數、交易參數和全局變量
2. **選股邏輯**:通過財務指標篩選優質股票
3. **股票過濾**:排除新股和停牌股
4. **交易執行**:定期調倉和資金分配

## 代碼詳細解析與修正建議

### 1. 初始化函數 (initialize)

```python
def initialize(context):
? ? # 基準設置為滬深300指數(修正代碼)
? ? set_benchmark('000300.XSHG') ?# 原代碼有大小寫錯誤
? ??
? ? # 啟用真實價格模式
? ? set_option('use_real_price', True)
? ??
? ? # 設置成交量比例
? ? set_option('order_volume_ratio', 1)
? ??
? ? # 設置交易成本(修正格式)
? ? set_order_cost(OrderCost(
? ? ? ? open_tax=0,
? ? ? ? close_tax=0.001,
? ? ? ? open_commission=0.0003,
? ? ? ? close_commission=0.0003,
? ? ? ? close_today_commission=0,
? ? ? ? min_commission=5
? ? ), type="stock") ?# 修正type參數
? ??
? ? # 全局變量設置
? ? g.stocknum = 20 ? ? # 持倉股票數量
? ? g.days = 20 ? ? ? ? # 調倉周期(天)
? ? g.refresh_rate = 100 # 刷新率
```

**修正建議**:
1. 指數代碼統一為大寫
2. 補全交易成本參數
3. 建議增加日志記錄功能

### 2. 選股查詢 (query)

```python
q = query(
? ? indicator.code,
? ? valuation.market_cap, ?# 修正為market_cap
? ? indicator.roe,
? ? indicator.gross_profit_margin
).filter(
? ? valuation.market_cap > 50, ? ? ? ? ? ? ?# 市值>50億
? ? valuation.circulation_ratio > 0.95, ? ? ?# 流通比例>95%
? ? indicator.gross_profit_margin > 20, ? ? # 毛利率>20%
? ? indicator.roe > 20 ? ? ? ? ? ? ? ? ? ? ?# ROE>20%
).order_by(
? ? valuation.market_cap.desc() ? ? ? ? ? ? # 按市值降序
).limit(100) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 限制100只
```

**修正建議**:
1. 統一使用market_cap而非capitalization
2. 流通比例字段修正為circulation_ratio
3. 增加注釋說明各篩選條件的商業邏輯

### 3. 股票過濾函數

```python
def delete_stock(stocks, beginDate, n=750):
? ? """
? ? 排除上市不足n天的股票
? ? :param stocks: 待篩選股票列表
? ? :param beginDate: 當前日期
? ? :param n: 最小上市天數(默認750天)
? ? :return: 符合條件的股票列表
? ? """
? ? stockList = []
? ? for stock in stocks:
? ? ? ? start_date = get_security_info(stock).start_date
? ? ? ? if start_date < (beginDate - timedelta(days=n)).date():
? ? ? ? ? ? stockList.append(stock)
? ? return stockList

def filter_paused_stock(stock_list):
? ? """
? ? 過濾停牌股票
? ? :param stock_list: 待篩選股票列表
? ? :return: 正常交易的股票列表
? ? """
? ? current_data = get_current_data() ?# 修正函數名
? ? return [stock for stock in stock_list if not current_data[stock].paused]
```

**修正建議**:
1. 修正get_current_date()為get_current_data()
2. 增加函數文檔字符串
3. 統一上市天數參數為750天(3年)

### 4. 交易執行函數

```python
def trade(context):
? ? if g.days % g.refresh_rate == 0:
? ? ? ? # 獲取目標股票列表
? ? ? ? stockList = check_stocks(context)
? ? ? ??
? ? ? ? # 獲取當前持倉
? ? ? ? sell_list = list(context.portfolio.positions.keys())
? ? ? ??
? ? ? ? # 確定需要賣出的股票(持倉但不在目標列表中的)
? ? ? ? sells = list(set(sell_list).difference(set(stockList)))
? ? ? ??
? ? ? ? # 執行賣出
? ? ? ? for stock in sells:
? ? ? ? ? ? order_target_value(stock, 0)
? ? ? ??
? ? ? ? # 資金分配邏輯
? ? ? ? if len(context.portfolio.positions) < g.stocknum:
? ? ? ? ? ? num = g.stocknum - len(context.portfolio.positions)
? ? ? ? ? ? cash_per_stock = context.portfolio.total_value / g.stocknum
? ? ? ? ? ? for stock in stockList[:num]:
? ? ? ? ? ? ? ? if stock not in context.portfolio.positions:
? ? ? ? ? ? ? ? ? ? order_target_value(stock, cash_per_stock)
```

**優化建議**:
1. 增加風險控制邏輯(單只股票最大倉位限制)
2. 考慮交易滑點設置
3. 增加交易日志記錄

## 完整策略邏輯流程圖

1. 初始化設置 → 2. 定期檢查調倉條件 → 3. 執行財務數據查詢 → 4. 過濾新股和停牌股 → 5. 確定買賣清單 → 6. 執行交易 → 7. 等待下一周期

## 策略優化方向

1. **風險控制增強**:
? ?- 增加最大回撤控制
? ?- 設置單行業最大暴露比例
? ?- 加入黑名單機制

2. **選股指標擴展**:
? ?```python
? ?.filter(
? ? ? ?valuation.pe_ratio < 30, ? ? ? ? ? ? ?# 市盈率<30
? ? ? ?indicator.debt_to_assets < 0.6, ? ? ? # 資產負債率<60%
? ? ? ?indicator.dividend_yield > 0.01 ? ? ? # 股息率>1%
? ?)
? ?```

3. **交易執行優化**:
? ?- 引入VWAP/TWAP算法交易
? ?- 增加止盈止損邏輯
? ?- 考慮市場狀態判斷(牛市/熊市不同參數)

4. **績效分析**:
? ?- 增加夏普率計算
? ?- 跟蹤信息比率
? ?- 分析行業分布

這個策略框架已經具備了價值投資的基本要素,通過上述優化可以進一步提升策略的穩定性和風險調整后收益。建議在實際應用前進行充分的回測和模擬交易驗證。

9.4規模因子

總市值

價值因子

總資產凈利率

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87024.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 數據分析:numpy,抽提,布爾索引2。

目錄 1 示例代碼2 歡迎糾錯3 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右S…

解決leetcode第3597題分割字符串

3597. 分割字符串 難度&#xff1a;中等 問題描述&#xff1a; 給你一個字符串 s&#xff0c;按照以下步驟將其分割為 互不相同的段 &#xff1a; 從下標 0 開始構建一個段。 逐字符擴展當前段&#xff0c;直到該段之前未曾出現過。 只要當前段是唯一的&#xff0c;就將其…

電源芯片之DCDC初探索ING

1. 概述 DC-DC轉換器的意思是直流變直流&#xff08;不同的直流電源值得轉換&#xff09;&#xff0c;是一種在直流電路中將一個電壓值的電能變為另一個電壓值的電能裝置。 DC-DC轉換器一般由控制芯片、電感線圈、二極管、三極管、電容器構成。 2. 基本拓撲結構 2.1 非隔離…

JavaEE:分布式session

一、使用Redis存儲分布式session&#xff1a; 1.SpringBoot整合Redis&#xff0c;見如下地址&#xff1a; JavaEE&#xff1a;SpringBoot整合Redis_a526001650a-CSDN博客 2.代碼實現分布式session存儲(此處以token為例)&#xff1a; Autowired private RedisTemplate<St…

OpenCV CUDA模塊設備層-----“大于閾值設為零” 的圖像處理函數 thresh_to_zero_inv_func()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模塊&#xff08;cudev&#xff09; 中的一個仿函數生成器&#xff0c;用于創建一個 “大于閾值設為零” 的圖像處理函數對象。 …

FastGPT與MCP:解鎖AI新時代的技術密碼

一、AI 浪潮中的新星&#xff1a;FastGPT 與 MCP 登場 在當今科技飛速發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;已成為推動各行業變革的核心力量。從智能語音助手到復雜的圖像識別系統&#xff0c;AI 的應用無處不在&#xff0c;而其中的關鍵技術 —— 語言模…

browser-tools-mcp + excel-mcp-server + cursor 實現讀取網頁信息自動寫入Excel

browser-tools-mcp excel-mcp-server cursor 實現讀取網頁信息自動寫入Excel 文章目錄 browser-tools-mcp excel-mcp-server cursor 實現讀取網頁信息自動寫入Excel一、安裝node.js和npm1、安裝nvm2、安裝最新版本的node.js 二、安裝browser-tools-mcp1、安裝 BrowserTools…

Linux安裝JDK和Maven

Linux安裝JDK和Maven 安裝JDK1.8 oracle官網 https://www.oracle.com 下載包地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 步驟1&#xff1a;官網下載壓縮包 點擊想要下載的版本&#xff0c;需要登錄Oracle的賬號&#xff0c;沒有的話需要…

MySQL主從復制與數據庫集群深度解析

一、主從復制核心架構與復制模式 MySQL主從復制是構建分布式數據庫的基礎技術&#xff0c;通過日志同步機制實現數據冗余與讀寫分離。其核心架構分為三層&#xff1a; 日志記錄層&#xff1a;主庫將數據變更寫入二進制日志&#xff08;Binlog&#xff09;網絡傳輸層&#xff…

安裝emsdk 4.0.10報Connection reset by peer解決

出錯如下: 使用瀏覽器下載所需文件 https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-v22.16.0-darwin-x64.tar.gz 移動到到emsdk/downloads下 修改emsdk.py download_even_if_exists=True 設置環境變量

win11,visual studio 2022,配置dcmtk,opencv

一、配置dcmtk 1 文件下載---地址&#xff0c;Software Development based on DCMTK - dicom.offis.de 源文件下載&#xff0c;選擇.zip下載&#xff0c;.tar.gz為Linux和macOS下面常見的壓縮包 支持庫下載 解決 DCMTK 在 Windows 上編譯時所需的依賴庫問題 libiconv GNU有…

2025 最新 Appium Inspector 環境搭建教程

1 環境搭建背景 版本升級&#xff1a;Appium 2.0 版本替代 1.x&#xff0c;原 Appium Desktop 因安全漏洞和功能廢棄不再適用。需求痛點&#xff1a;Android Studio 僅支持 debug 程序元素定位&#xff0c;需通過 Appium Inspector 實現通用 APK 元素定位。 2 環境搭建步驟 …

Vue 安裝使用教程

一、Vue 簡介 Vue&#xff08;讀作 /vju?/&#xff0c;類似于“view”&#xff09;是一款用于構建用戶界面的漸進式 JavaScript 框架。它易于上手&#xff0c;輕量高效&#xff0c;適合快速構建前端界面&#xff0c;廣泛應用于各類 Web 項目中。 二、Vue 安裝方式 2.1 直接通…

通過http調用來訪問neo4j時報錯,curl -X POST 執行指令報錯

curl -X POST ^ More? http://localhost:7474/db/neo4j/tx/commit ^ More? -H Authorization: Basic bmVvNGo6MTIzNDU2Nzg ^ More? -H Content-Type: application/json ^ More? -d { \"statements": [{\"statement": \"MATCH (n) RETURN n, label…

Node.js到底是什么

我想像是npm、vite這些名詞大家都很熟悉&#xff0c;對它們的作用也有大致印象&#xff0c;但是可能都像我一樣不明白Node.js到底是什么&#xff0c;這里給大家帶來一個簡單介紹。 Node.js 詳解&#xff1a;歷史發展、生態構建與底層原理 一、Node.js 的起源與歷史發展 誕生背…

Rust與Go:GAN實戰對決

Rust與Go生成對抗 GAN概念 GAN的全稱是Generative Adversarial Network,中文翻譯為生成對抗網絡。這是一種深度學習模型,由兩部分組成:生成器(Generator)和判別器(Discriminator)。生成器的任務是創建數據,而判別器的任務是區分生成器創建的數據和真實數據。這兩部分…

pyspark driver 上傳pod本地文件到對象存儲

前提: pyspark driver on k8s,環境變量或者spark_home/jars 下有相關對象存儲的包,報錯包問題就這里添加jar即可 from py4j.java_gateway import java_import from pyspark.sql import SparkSession# ----------------------------------------------------------------------…

使用GeoServer發布地圖shapefi(.shp)數據

1.創建新的工作區 2.添加新的數據存儲&#xff0c;選擇Shapefile - ESRI? Shapefiles (*.shp) 如果這個發布頁面退出了 可以這樣找回來 點擊發布返回圖層我們發布的數據在圖層顯示 點擊Layer Preview 預覽 現在前端就可以用 OpenLayers地圖來調用這個服務了

python+uniapp基于微信小程序的PS社區系統

文章目錄 具體實現截圖本項目支持的技術路線源碼獲取詳細視頻演示&#xff1a;文章底部獲取博主聯系方式&#xff01;&#xff01;&#xff01;&#xff01;本系統開發思路進度安排及各階段主要任務java類核心代碼部分展示主要參考文獻&#xff1a;源碼獲取/詳細視頻演示 ##項目…

設計模式 - 組合思維_Unix 設計哲學三大原則

文章目錄 引言Unix 哲學本質三大啟示總覽啟示一&#xff1a;保持簡單清晰性軟件復雜度來源實踐方法 啟示二&#xff1a;借鑒組合理念Unix 組合示例避免“定制驅動”爛設計 啟示三&#xff1a;重拾數據思維數據驅動編程演進案例分析 總結 引言&#xff1a;介紹 Unix 與 Unix 哲學…