Fooltrader
quant framework for stock
Install / Use
/learn @foolcage/FooltraderREADME
该项目已停止更新,请移步新项目https://github.com/zvtvz/zvt
如果有人想继续该项目,只需要知道其核心点即可:
构建标准的数据schema,然后实现各种connector导入 你熟悉的系统 进行分析
Read this in other languages: English.
fooltrader:trade as a fool
"要在市场上生存,就必须远离聪明,因为,你的聪明在市场面前一钱不值"------缠中说禅
fooltrader是一个利用大数据技术设计的量化分析交易系统,包括数据的抓取,清洗,结构化,计算,展示,回测和交易.
它的目标是提供一个统一的框架来对全市场(股票,期货,债券,外汇,数字货币,宏观经济等)进行研究,回测,预测,交易.
它的适用对象包括:量化交易员,财经类专业师生,对经济数据感兴趣的人,程序员,喜欢自由而有探索精神的人
1. 能做什么
1.1 自定义分析逻辑和视图

输入你感兴趣的个股,查看其净利润跟股价的关系.

聚合展示你关心的视图
1.2 免费数据源和精心分类的统一api
api输出结果具体字段含义请参考数据协议.
A股数据
In [1]:import fooltrader as ft
In [2]:ft.get_kdata('000778')
#试一试
#ft.get_kdata('300027',start_date='20170630',end_date='20170715')
#ft.get_kdata('300027',start_date='20170630',end_date='20170715')
timestamp code name low open close high volume turnover securityId ... mCap factor hfqClose hfqOpen hfqHigh hfqLow qfqClose qfqOpen qfqHigh qfqLow
timestamp ...
1997-06-06 1997-06-06 000778 新兴铸管 18.00 18.10 19.68 20.70 45335789 8.904533e+08 stock_sz_000778 ... 1.416960e+09 1.000 19.68000 18.10000 20.70000 18.00000 1.497375 1.377159 1.574983 1.369550
1997-06-09 1997-06-09 000778 新兴铸管 18.00 20.00 18.51 20.44 11333248 2.148290e+08 stock_sz_000778 ... 1.332720e+09 1.000 18.51000 20.00000 20.44000 18.00000 1.408354 1.521723 1.555200 1.369550
1997-06-10 1997-06-10 000778 新兴铸管 16.66 18.50 16.75 18.60 6641283 1.155679e+08 stock_sz_000778 ... 1.206000e+09 1.000 16.75000 18.50000 18.60000 16.66000 1.274443 1.407593 1.415202 1.267595
1997-06-11 1997-06-11 000778 新兴铸管 15.90 16.60 17.35 17.40 5560642 9.365633e+07 stock_sz_000778 ... 1.249200e+09 1.000 17.35000 16.60000 17.40000 15.90000 1.320094 1.263030 1.323899 1.209769
1997-06-12 1997-06-12 000778 新兴铸管 16.80 17.68 16.80 17.70 3022235 5.142033e+07 stock_sz_000778 ... 1.209600e+09 1.000 16.80000 17.68000 17.70000 16.80000 1.278247 1.345203 1.346724 1.278247
期货数据
In [3]:ft.get_kdata('rb1601')
timestamp code name low open close high volume turnover securityId preClose change changePct openInterest settlement preSettlement change1 changePct1
timestamp
2015-01-16 20150116 rb1601 螺纹钢rb 2533.0 2545.0 2550.0 2568.0 96.0 244.468 future_shfe_rb1601 2518.0 32.0 0.012708 66.0 2546.0 2518.0 28.0 0.011120
2015-01-19 20150119 rb1601 螺纹钢rb 2515.0 2534.0 2541.0 2558.0 486.0 1231.174 future_shfe_rb1601 2550.0 -5.0 -0.001961 212.0 2533.0 2546.0 -13.0 -0.005106
2015-01-20 20150120 rb1601 螺纹钢rb 2521.0 2554.0 2529.0 2554.0 134.0 339.290 future_shfe_rb1601 2541.0 -4.0 -0.001574 286.0 2532.0 2533.0 -1.0 -0.000395
2015-01-21 20150121 rb1601 螺纹钢rb 2516.0 2520.0 2516.0 2540.0 294.0 743.266 future_shfe_rb1601 2529.0 -16.0 -0.006327 410.0 2528.0 2532.0 -4.0 -0.001580
2015-01-22 20150122 rb1601 螺纹钢rb 2515.0 2519.0 2521.0 2530.0 310.0 782.114 future_shfe_rb1601 2516.0 -7.0 -0.002782 576.0 2522.0 2528.0 -6.0 -0.002373
数字货币
In [4]: ft.get_kdata('BTC-USD',exchange='kraken')
timestamp code name low open close high volume securityId preClose change changePct
timestamp
2016-07-08 2016-07-08 BTC-USD BTC/USD 634.0 640.4 671.4 671.4 1651.592635 cryptocurrency_kraken_BTC-USD NaN NaN NaN
2016-07-09 2016-07-09 BTC-USD BTC/USD 622.0 671.9 652.0 671.9 1908.295953 cryptocurrency_kraken_BTC-USD 671.4 -19.4 -0.029755
2016-07-10 2016-07-10 BTC-USD BTC/USD 642.4 652.0 650.0 655.6 429.290787 cryptocurrency_kraken_BTC-USD 652.0 -2.0 -0.003077
2016-07-11 2016-07-11 BTC-USD BTC/USD 645.3 652.5 650.7 663.3 814.157258 cryptocurrency_kraken_BTC-USD 650.0 0.7 0.001076
2016-07-12 2016-07-12 BTC-USD BTC/USD 647.1 650.7 666.0 675.9 923.800268 cryptocurrency_kraken_BTC-USD 650.7 15.3 0.022973
tick
In [5]: for item in ft.get_ticks('000338'):
...: print(item)

基本面数据
In [5]: ft.get_income_statement_items('300027',report_period='2017-06-30')
#试一试
#ft.get_balance_sheet_items('300027',,report_event_date='2017-01-01')
#ft.get_cash_flow_statement_items('300027')
Out[2]:
{'EPS': 0.15,
'ManagingCosts': 257005115.85,
'accumulatedOtherComprehensiveIncome': 471486112.3,
'assetsDevaluation': -21647912.31,
'attributableToMinorityShareholders': 90255906.93,
'attributableToOwnersOfParentCompany': 381230205.37,
'businessTaxesAndSurcharges': 80033207.21,
'code': '300027',
'dilutedEPS': 0.15,
'disposalLossOnNonCurrentLiability': 281050.25,
'exchangeGains': 0.0,
'financingExpenses': 132202866.43,
'id': 'stock_sz_300027_20170630',
'incomeFromChangesInFairValue': 0.0,
'incomeTaxExpense': 111864455.56,
'investmentIncome': 541478955.17,
'investmentIncomeFromRelatedEnterpriseAndJointlyOperating': '45035770.67',
'minorityInterestIncome': 91203287.92,
'netProfit': 521516997.38,
'netProfitAttributedToParentCompanyOwner': 430313709.46,
'nonOperatingExpenditure': 13775609.35,
'nonOperatingIncome': 27864700.17,
'operatingCosts': 679308123.4,
'operatingProfit': 619292362.12,
'operatingRevenue': 1465863805.45,
'operatingTotalCosts': 1388050398.5,
'otherComprehensiveIncome': -50030885.08,
'reportDate': '2017-06-30',
'reportEventDate': '2017-08-29',
'securityId': 'stock_sz_300027',
'sellingExpenses': 261148997.92,
'totalProfits': 633381452.94}
财务报表的勾稽关系验证
# 营业利润=营业收入-营业成本-营业税金及附加-销售费用-管理费用-财务费用-资产减值损失+公允价值变动收益(损失的话用减)+投资收益
def check_operating_profit(security_item):
income_statement_list = get_income_statement_items(security_item=security_item)
for income_statement in income_statement_list:
operatingProfit = income_statement["operatingRevenue"] \
- income_statement["operatingCosts"] \
- income_statement["businessTaxesAndSurcharges"] \
- income_statement["sellingExpenses"] \
- income_statement["ManagingCosts"] \
- income_statement["financingExpenses"] \
- income_statement["assetsDevaluation"] \
+ income_statement["incomeFromChangesInFairValue"] \
+ income_statement["investmentIncome"]
diff = operatingProfit - income_statement["operatingProfit"]
if abs(diff) >= 1:
print("{} operating profit calculating not pass,calculating result:{},report result:{}".format(
income_statement['id'], operatingProfit, income_statement["operatingProfit"]))
else:
print("{} operating profit calculating pass".format(income_statement['id']))
可以用该工具迅速检查财务报表的质量,同时也可以让你对财务报表有更深入的认识.更多例子
In [3]: from fooltrader.datamanager import finance_check
In [4]: finance_check.check_operating_profit('300027')
stock_sz_300027_20061231 operating profit calculating pass
...
stock_sz_300027_20170630 operating profit calculating pass
stock_sz_300027_20170930 operating profit calculating pass
我的博客介绍fooltrader投资之财务指标
事件(消息)数据
In [12]: ft.get_finance_forecast_event('000002')
timestamp reportPeriod securityId type description preEPS changeStart change id
timestamp
2004-04-02 2004-04-02 2004-03-31 stock_sz_000002 预增 预计公司2004年第1季度净利润较去年同期增长幅度超过150%。 NaN NaN 1.50 stock_sz_000002_2004-04-02
2004-07-05 2004-07-05 2004-06-30 stock_sz_000002 预增 预计公司2004年上半年度净利润较去年同期增长幅度将超过50%。 NaN NaN 0.50 stock_sz_000002_2004-07-05
2005-01-12 2005-01-12 2004-12-31 stock_sz_000002 预增 预计本公司2004年全年净利润较去年增长50%-65%之间。 NaN NaN 0.65 stock_sz_000002_2005-01-12
2005-04-06 2005-04-06 2005-03-31 stock_sz_000002 预增 预计本公司2005年1季度净利润较上年同期增长100%-150%。 NaN NaN 1.50 stock_sz_000002_2005-04-06
2005-04-25 2005-04-25 2005-06-30 stock_sz_000002 预增 预计本公司2005年上半年净利润较去年同期增长150—200%。 NaN NaN 2.00 stock_sz_000002_2005-04-25
2005-08-01 2005-08-01 2005-09-30 stock_sz_000002 预增 预计2005年1~9月份可实现净利润将较去年同期增长110~130%。 NaN NaN 1.30 stock_sz_000002_2005-08-01
2006-01-06 2006-01-06 2005-12-31 stock_sz_000002
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
