SkillAgentSearch skills...

Fooltrader

quant framework for stock

Install / Use

/learn @foolcage/Fooltrader

README

Build Status

该项目已停止更新,请移步新项目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

View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated5d ago
Forks329

Languages

Python

Security Score

100/100

Audited on Apr 2, 2026

No findings