A. 怎樣用 Python 寫一個股票自動交易的程序
股票自動交易助手提供了一個 Python 自動下單介面,參考代碼
#股票自動交易助手Python自動下單使用例子
#把此腳本和StockOrderApi.pyOrder.dll放到你自己編寫的腳本同一目錄
fromStockOrderApiimport*
#買入測試
#Buy(u"600000",100,0,1,0)
#賣出測試,是持倉股才會有動作
#Sell(u"000100",100,0,1,0)
#賬戶信息
print("股票自動交易介面測試")
print("賬戶信息")
print("--------------------------------")
arrAccountInfo=["總資產","可用資金","持倉總市值","總盈利金額","持倉數量"];
foriinrange(0,len(arrAccountInfo)):
value=GetAccountInfo(u"",i,0)
print("%s%f"%(arrAccountInfo[i],value))
print("--------------------------------")
print("")
print("股票持倉")
print("--------------------------------")
#取出所有的持倉股票代碼,結果以','隔開的
allStockCode=GetAllPositionCode(0)
allStockCodeArray=allStockCode.split(',')
foriinrange(0,len(allStockCodeArray)):
vol=GetPosInfo(allStockCodeArray[i],0,0)
changeP=GetPosInfo(allStockCodeArray[i],4,0)
print("%s%d%.2f%%"%(allStockCodeArray[i],vol,changeP))
print("--------------------------------")
B. 輕松上手FAM五因子模型(附python源碼)
探索投資領域的新維度,讓我們深入理解Fama-French五因子模型(FF5)的強大之處。自CAPM的提出,模型界一直在尋找更全面的解釋股票收益的方法。FF5模型超越了傳統的β,引入了市值(SMB)、賬面市值比(HML)、盈利(RMW)、和投資(CMA)四個關鍵因子,提供了一個更為精準的股票收益分析框架。
因子的構建巧妙地融合了市值規模(SMB)與公司估值(HML),以及企業的盈利能力和投資策略(RMW與CMA)。FF5模型的回歸目標在於,通過這些多元化的因子揭示收益率背後的驅動因素,同時承認誤差項可能包含無風險收益α和風險因子,以更全面地刻畫市場動態。
實戰過程中,五因子模型的應用需要細致入微的步驟。首先,確定每隻股票在不同組合中的權重,然後乘以預期收益,接著對所有股票的收益進行加權和,得出策略的收益率。選擇中證500作為基準,股票池則廣泛取自wind全A的股票,每年5月底進行一次策略調整,使用流通市值進行加權。
在回測階段,我們回溯至2017年1月3日至2020年12月3日,對因子進行檢驗,確保其與Fama-French因子有良好的相關性。通過導入必要的模塊和數據,如pandas、numpy等,對市值、賬面市值比、盈利能力等關鍵數據進行預處理,構建出一個剔除不可交易股票的高效股票池(ALLapool)。
具體操作上,我們定義了一個get_score函數,通過市值加權計算各組合的股票持倉,同時處理缺失值。接著,針對每個因子,我們依據百分位選取股票組合,如70%和30%,並計算每日收益變化因子。最後,將這些因子與中證500收益進行對比,驗證模型的有效性。
通過嚴謹的數據處理和可視化,FF5模型為我們揭示了股票收益的多元驅動,而不僅僅依賴於單個指標。這個模型的實踐性,不僅限於理論研究,它能幫助投資者在實際交易中制定更精細的策略。讓我們一起探索這個模型的魅力,提升投資決策的精確度。
【參考文獻】Fama & French, A Five Factor Asset Pricing Model, J. Financial Economics, 2015
欲了解更多詳情或深入學習,請關注QuantX量化團隊,我們期待您的反饋:[email protected]
C. 什麼是日內T+0交易
T+0,是國際上普遍使用的一種證劵(或期貨)交易制度。凡在證劵(或期貨)成交當天辦理好證劵(或期貨)和價款清算交割手續的交易制度,就稱為T+0交易。
通俗說,就是當天買入的證劵(或期貨)在當天就可以賣出。T+0交易曾在中國證劵市場實行過,由於證券市場不成熟,造成市場價格異常波動,為了保證證劵市場的穩定,中國上海證券交易所和深圳證券交易所對股票和基金交易實行「T+1」的交易方式。
T是英文Trade的首字母,是交易的意思。「回轉交易」是指當日(T日)買入的股票可於成交後當日賣出其買入的全部或部分股票;若當日(T日)不賣出,T+1日或以後的任何一個交易日也可以進行賣出申報。
就是說,在「T+0」回轉交易條件下,申報買入股票確認成交後,不限制投資者在哪個交易日進行賣出申報,投資者既可以把當天買入的股票當天賣出,也可以用當天賣出股票返回的資金當天再買進股票。「T+0」回轉交易能減少投資人的持倉風險、增強股票的流動性。
(3)python如何計算股票持倉時間擴展閱讀:
「T+0」的特點:
1、交易方式,雙向交易,買漲買跌,現買現拋。
2、短線投機,股票操作15分鍾後就可以平倉。
3、投機性增強,投機機會增多,適合短線投機者的操作方式。
4、投資者交易次數和交易費用的增加會導致交易成本的增加從而引起投機風險的增大。
T+0交易是深交所1993年底推出的一種交易辦法,意思是,投資者買(賣)股票(或期貨)當天確認成交後,當天買入股票可當天賣出,當天賣出股票又可當天買入的一種交易。
1995年1月1日起,為了保證股票市場的穩定,防止過度投機,中國股市實行"T+1"交易制度,即當日買進的股票,必須要到下一個交易日才能賣出。
同時,對資金仍然實行「T+0」,即當日回籠的資金馬上可以使用。
B股股票使用T+1,資金適用T+3。
當前中國滬、深證券交易所的國債、企業債、可轉債、權證實行的是「T+0」交易制度;A股、基金實行的均是「T+1」的交易制度。
D. 在中國,做量化交易一天的工作是怎樣的
做量化交易一天的工作:
8:00~9:00: 打開交易策略,設置一些運營參數
9:00~9:30: 觀察策略運轉,確保沒有問題
9:30~15:30: 解決已有策略的問題並研究新策略,測試新想法
15:30~17:00: 分析交易記錄, 確定第二天的交易計劃
17:00~18:00: 運動
崗位職責:
分析金融市場(期貨、股票等)數據,尋找可利用的機會;開發與維護量化交易策略;提供機器學習/數據挖掘相應的技術支持;
崗位要求:
1.熟練計算機編程能力,熟練掌握至少一門編程語言,python優先;
理工科背景,具有良好的數理統計、數據挖掘等相關知識儲備,熟悉機器學習方法(分析科學問題和相應數據,建立模型和方法,驗證模型和方法,應用模型和方法並分析結果,改進模型和方法);
有處理分析大量數據的經驗,並能熟練選擇和應用數據挖掘和機器學習方法解決科研和工作中的實際問題;良好的自我學習和快速 學習能力,有工作激情,喜歡金融行業;兩年及以上實驗室研究經驗或研發類工作經驗優先;
(4)python如何計算股票持倉時間擴展閱讀
量化交易是指以先進的數學模型替代人為的主觀判斷,利用計算機技術從龐大的歷史數據中海選能帶來超額收益的多種「大概率」事件以制定策略,
極大地減少了投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下作出非理性的投資決策。
E. python實現資產配置(1)----Markowitz 投資組合模型
現假設有A, B, C, D, E五隻股票的收益率數據((第二日收盤價-第一日收盤價)/第一日收盤價)), 如果投資人的目標是達到20%的年收益率,那麼該如何進行資產配置,才能使得投資的風險最低?
更一般的問題,假設現有x 1 ,x 2 ,...,x n , n支風險資產,且收益率已知,如果投資人的預期收益為goalRet,那麼該如何進行資產配置,才能使得投資的風險最低?
1952年,芝加哥大學的Markowitz提出現代資產組合理論(Modern Portfolio Theory,簡稱MPT),為現代西方證券投資理論奠定了基礎。其基本思想是,證券投資的風險在於證券投資收益的不確定性。如果將收益率視為一個數學上的隨機變數的話,證券的期望收益是該隨機變數的數學期望(均值),而風險可以用該隨機變數的方差來表示。
對於投資組合而言,如何分配各種證券上的投資比例,從而使風險最小而收益最大?
答案是將投資比例設定為變數,通過數學規劃,對每一固定收益率求最小方差,對每一個固定的方差求最大收益率,這個多元方程的解可以決定一條曲線,這條曲線上的每一個點都對應著最優投資組合,即在給定風險水平下,收益率最大,這條曲線稱作「有效前沿」 (Efficient Frontier)。
對投資者而言,不存在比有效前沿更優的投資組合,只需要根據自己的風險偏好在有效前沿上尋找最優策略。
簡化後的公式為:
其中 p 為投資人的投資目標,即投資人期待的投資組合的期望值. 目標函數說明投資人資產分配的原則是在達成投資目標 p 的前提下,要將資產組合的風險最小化,這個公式就是Markowitz在1952年發表的'Portfolio Selection'一文的精髓,該文奠定了現代投資組合理論的基礎,也為Markowitz贏得了1990年的諾貝爾經濟學獎. 公式(1)中的決策變數為w i , i = 1,...,N, 整個數學形式是二次規劃(Quadratic Programming)問題,在允許賣空的情況下(即w i 可以為負,只有等式約束)時,可以用拉格朗日(Lagrange)方法求解。
有效前緣曲線如下圖:
我們考慮如下的二次規劃問題
運用拉格朗日方法求解,可以得到
再看公式(1),則將目標函數由 min W T W 調整為 min 1/2(W T W), 兩問題等價,寫出的求解矩陣為:
工具包: CVXOPT python凸優化包
函數原型: CVXOPT.solvers.qp(P,q,G,h,A,b)
求解時,將對應的P,q,G,h,A,b寫出,帶入求解函數即可.值得注意的是輸入的矩陣必須使用CVXOPT 中的matrix函數轉化,輸出的結果要使用 print(CVXOPT.solvers.qp(P,q,G,h,A,b)['x']) 函數才能輸出。
這里選取五支股票2014-01-01到2015-01-01的收益率數據進行分析.
選取的五支股票分別為: 白雲機場, 華夏銀行, 浙能電力, 福建高速, 生益科技
先大體了解一下五支股票的收益率情況:
看來,20%的預期收益是達不到了。
接下來,我們來看五支股票的相關系數矩陣:
可以看出,白雲機場和福建高速的相關性較高,因為二者同屬於交通版塊。在資產配置時,不利於降低非系統性風險。
接下來編寫一個MeanVariance類,對於傳入的收益率數據,可以進行給定預期收益的最佳持倉配比求解以及有效前緣曲線的繪制。
繪制的有效前緣曲線為:
將數據分為訓練集和測試集,並將隨機模擬的資產配比求得的累計收益與測試集的數據進行對比,得到:
可以看出,在前半段大部分時間用Markowitz模型計算出的收益率要高於隨機模擬的組合,然而在後半段卻不如隨機模擬的數據,可能是訓練的數據不夠或者沒有動態調倉造成的,在後面寫策略的時候,我會加入動態調倉的部分。
股票分析部分:
Markowitz 投資組合模型求解
蔡立專:量化投資——以python為工具. 電子工業出版社