{"cells": [{"metadata": {}, "cell_type": "raw", "source": "\u9996\u5148\u5728\u81ea\u5df1\u672c\u5730\u65b0\u5efa\u201ccsv\u8f6c\u6210py\u4ee3\u7801.py\u201dpython\u6587\u4ef6\uff0c\u5e76\u5c06\u5982\u4e0b\u4ee3\u7801\u590d\u5236\u8fdb\u53bb\uff0c\u4ee5\u751f\u6210\u5305\u542b\u4eceFMZ\u4e0b\u8f7d\u7684\u8d44\u91d1\u66f2\u7ebfCSV\u6587\u4ef6\u7684py\u4ee3\u7801\uff0c\u672c\u5730\u8fd0\u884c\u65b0\u5efa\u7684py\u6587\u4ef6\u4f1a\u751f\u6210\u201cchart_hex.py\u201d\u6587\u4ef6\u3002"}, {"metadata": {}, "cell_type": "raw", "source": "#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport binascii\n\n#\u6587\u4ef6\u540d\u53ef\u6839\u636e\u9700\u8981\u81ea\u5b9a\u4e49,\u672c\u793a\u4f8b\u4f7f\u7528\u9ed8\u8ba4\u6587\u4ef6\u540d\nfilename = 'chart.csv'\nwith open(filename, 'rb') as f:\n    content = f.read()\n#csv\u8f6cpy\nwFile = open(filename.split('.')[0] + '_hex.py', \"w\")\nwFile.write(\"hexstr = bytearray.fromhex('\" +\n            bytes.decode(binascii.hexlify(content))\n            + \"').decode()\\nwFile = open('\" + filename + \"', 'w')\\nwFile.write(hexstr)\\nwFile.close()\")\nwFile.close()"}, {"metadata": {}, "cell_type": "raw", "source": "\u6253\u5f00\u4e0a\u9762\u751f\u6210\u7684\u201cchart_hex.py\u201d\u6587\u4ef6\uff0c\u5c06\u91cc\u9762\u7684\u5185\u5bb9\u590d\u5236\u51fa\u6765\u5168\u90e8\u66ff\u6362\u4e0b\u9762\u7684\u4ee3\u7801\u5757\uff0c\u7136\u540e\u9010\u4e00\u8fd0\u884c\u4e0b\u9762\u4ee3\u7801\u5757\uff0c\u5373\u53ef\u83b7\u53d6chart.csv\u6587\u4ef6"}, {"metadata": {"trusted": true}, "cell_type": "code", "source": "hexstr = bytearray.fromhex('efbbbf224461746554696d65222c22e6b5aee58aa8e79b88e4ba8f222c22e4ba8be4bbb6220a22323031392d31302d33312030303a30303a3030222c300a22323031392d31312d30312030303a30303a3030222c300a22323031392d31312d30322030303a30303a3030222c2d302e3032383434353837303635373338383930350a22323031392d31312d30332030303a30303a3030222c302e3030373431393439393432333839363936390a22323031392d31312d30342030303a30303a3030222c2d302e30323234373732373731373434313231370a22323031392d31312d30352030303a30303a3030222c2d302e30323033393930383333363836353735390a22323031392d31312d30362030303a30303a3030222c2d302e3034393935353039333230393332303435360a22323031392d31312d30372030303a30303a3030222c2d302e303434333232333634383035363033370a22323031392d31312d30382030303a30303a3030222c2d302e3032353631313934393330353935313637360a22323031392d31312d30392030303a30303a3030222c302e3032363331303433393432313739303536360a22323031392d31312d31302030303a30303a3030222c302e3033303232303332383333303436333137350a22323031392d31312d31312030303a30303a3030222c302e3033313230373133363936363633313133330a22323031392d31312d31322030303a30303a3030222c2d302e3031383533323831363136363038333135350a22323031392d31312d31332030303a30303a3030222c2d302e30313736393032353136363738333732320a22323031392d31312d31342030303a30303a3030222c2d302e3032323339313034373338373637393338360a22323031392d31312d31352030303a30303a3030222c2d302e3030383433363137313736363631333438370a22323031392d31312d31362030303a30303a3030222c302e3031373430363536343033313836383133330a22323031392d31312d31372030303a30303a3030222c302e303232393131353234343739303732330a22323031392d31312d31382030303a30303a3030222c302e3033323032363631303538383035373131340a22323031392d31312d31392030303a30303a3030222c302e303138393230323836383338373438380a22323031392d31312d32302030303a30303a3030222c302e30363632363938393337393232363738390a22323031392d31312d32312030303a30303a3030222c302e3036303835343430303337353130313033370a22323031392d31312d32322030303a30303a3030222c302e31343432363035363831333031303231330a22323031392d31312d32332030303a30303a3030222c302e32343239343037303935353332323336370a22323031392d31312d32342030303a30303a3030222c302e32313133303432303033353237373934310a22323031392d31312d32352030303a30303a3030222c302e323735363433303736313138343937380a22323031392d31312d32362030303a30303a3030222c302e323532343832323739343237363235360a22323031392d31312d32372030303a30303a3030222c302e32343931313136313839303039383437370a22323031392d31312d32382030303a30303a3030222c302e31313038373135373939323036393134310a22323031392d31312d32392030303a30303a3030222c302e313633343530313533373233393139390a22323031392d31312d33302030303a30303a3030222c302e31393838303132323332343735393737350a22323031392d31322d30312030303a30303a3030222c302e31363633373536393939313635393038350a22323031392d31322d30322030303a30303a3030222c302e32303638323732383333323337393630370a22323031392d31322d30332030303a30303a3030222c302e32303434323831303032303830393033320a22323031392d31322d30342030303a30303a3030222c302e323030353636323836353230383830360a22323031392d31322d30352030303a30303a3030222c302e31323434363439343330303739303635360a22323031392d31322d30362030303a30303a3030222c302e31303032343339383239393236303637332c302e31303032343339383239393236303637330a22323031392d31322d30372030303a30303a3030222c302e31303637313232383937343130373831360a22323031392d31322d30382030303a30303a3030222c302e31323839363336313133333032313036310a22323031392d31322d30392030303a30303a3030222c302e313337393030323234303239323136320a22323031392d31322d31302030303a30303a3030222c302e31313432333735383637323436303130350a22323031392d31322d31312030303a30303a3030222c302e31323638353037323134353130343038320a22323031392d31322d31322030303a30303a3030222c302e31343139333631313738343432333234330a22323031392d31322d31332030303a30303a3030222c302e31333838333632383537383138383536370a22323031392d31322d31342030303a30303a3030222c302e313136323031343031393435393734350a22323031392d31322d31352030303a30303a3030222c302e31363135333931303631363930313932330a22323031392d31322d31362030303a30303a3030222c302e31343937383138343836363238323231380a22323031392d31322d31372030303a30303a3030222c302e31353734393833333435363438393438320a22323031392d31322d31382030303a30303a3030222c302e32343234393031303233333139323635380a22323031392d31322d31392030303a30303a3030222c302e32313830363838353631363039303035350a22323031392d31322d32302030303a30303a3030222c302e323938383636303034333936303139340a22323031392d31322d32312030303a30303a3030222c302e33303135333036303934383834370a22323031392d31322d32322030303a30303a3030222c302e323938363835393334383634363038370a22323031392d31322d32332030303a30303a3030222c302e333039333035323733383735393130310a22323031392d31322d32342030303a30303a3030222c302e333834363231343935353136383931320a22323031392d31322d32352030303a30303a3030222c302e33343532373534363233383138313130360a22323031392d31322d32362030303a30303a3030222c302e33363235323332383833363737313035330a22323031392d31322d32372030303a30303a3030222c302e33343937363331393933333834333133360a22323031392d31322d32382030303a30303a3030222c302e33303732393733373234353434373938360a22323031392d31322d32392030303a30303a3030222c302e33323238383132323432363135363530370a22323031392d31322d33302030303a30303a3030222c302e33343134363537343239333438363535330a22323031392d31322d33312030303a30303a3030222c302e333435323733393139363237303738320a22323032302d30312d30312030303a30303a3030222c302e33353730313633323035353433343337340a22323032302d30312d30322030303a30303a3030222c302e33343937353937393034363236373934370a22323032302d30312d30332030303a30303a3030222c302e33373032333633333138303534353335370a22323032302d30312d30342030303a30303a3030222c302e33383636373137373837343037313635370a22323032302d30312d30352030303a30303a3030222c302e33383834373536373836393031343634330a22323032302d30312d30362030303a30303a3030222c302e34313331323236353139383433373731340a22323032302d30312d30372030303a30303a3030222c302e34323335323332383237303436333733350a22323032302d30312d30382030303a30303a3030222c302e34363837333531323838353035333330330a22323032302d30312d30392030303a30303a3030222c302e353436373135313832363033383332380a22323032302d30312d31302030303a30303a3030222c302e353530373037323136333937383830310a22323032302d30312d31312030303a30303a3030222c302e35353531373436393236393938310a22323032302d30312d31322030303a30303a3030222c302e353632323130363337343737323731330a22323032302d30312d31332030303a30303a3030222c302e353734373831373030393536383631370a22323032302d30312d31342030303a30303a3030222c302e353632383330303731353536353831350a22323032302d30312d31352030303a30303a3030222c302e363538323839383038313031393136380a22323032302d30312d31362030303a30303a3030222c302e363732323034393830303331333936370a22323032302d30312d31372030303a30303a3030222c302e363537313832383237323238323335380a22323032302d30312d31382030303a30303a3030222c302e363734393831383838383639373536330a22323032302d30312d31392030303a30303a3030222c302e363739373632303637393239383131330a22323032302d30312d32302030303a30303a3030222c302e363334313332373332393636313231370a22323032302d30312d32312030303a30303a3030222c302e363237353837313436323430323734370a22323032302d30312d32322030303a30303a3030222c302e363331313336373230353334393834370a22323032302d30312d32332030303a30303a3030222c302e3630313936323331393931343334360a22323032302d30312d32342030303a30303a3030222c302e363036343239313935383633313431360a22323032302d30312d32352030303a30303a3030222c302e35383130363933393531373337390a22323032302d30312d32362030303a30303a3030222c302e363133313034353130383436353937380a22323032302d30312d32372030303a30303a3030222c302e3632393938323638373737383035350a22323032302d30312d32382030303a30303a3030222c302e363831333134363734333130313533350a22323032302d30312d32392030303a30303a3030222c302e373134303533393533383834313233350a22323032302d30312d33302030303a30303a3030222c302e373433383032353331363031313135360a22323032302d30312d33312030303a30303a3030222c302e373535393639303935383539313330370a22323032302d30322d30312030303a30303a3030222c302e373533383030313630323737353438310a22323032302d30322d30322030303a30303a3030222c302e373534343434333437323732343132350a22323032302d30322d30332030303a30303a3030222c302e373435373138393532343434373738330a22323032302d30322d30342030303a30303a3030222c302e3738373636303035313130343530340a22323032302d30322d30352030303a30303a3030222c302e373935393939343930353732393834360a22323032302d30322d30362030303a30303a3030222c302e373935323037323039363636373034390a22323032302d30322d30372030303a30303a3030222c302e3832393234363232343838363336350a22323032302d30322d30382030303a30303a3030222c302e383239393034373635353939363035350a22323032302d30322d30392030303a30303a3030222c302e383338363639323137313033313436350a22323032302d30322d31302030303a30303a3030222c302e38353830313634373631380a22323032302d30322d31312030303a30303a3030222c302e383130323530393437393936313938330a22323032302d30322d31322030303a30303a3030222c302e383433323631313436333636313030320a22323032302d30322d31332030303a30303a3030222c302e383535383536353834363731333632320a22323032302d30322d31342030303a30303a3030222c302e383337323730363631383738303935360a22323032302d30322d31352030303a30303a3030222c302e383333353332343038383538303234330a22323032302d30322d31362030303a30303a3030222c302e383636383832343034353334343633320a22323032302d30322d31372030303a30303a3030222c302e383836363634323232323038333831310a22323032302d30322d31382030303a30303a3030222c302e393032363430303937303731373033390a22323032302d30322d31392030303a30303a3030222c302e383832373838333631373939333438380a22323032302d30322d32302030303a30303a3030222c302e383530303035363732363738333734320a22323032302d30322d32312030303a30303a3030222c302e3737383436363530373530313739360a22323032302d30322d32322030303a30303a3030222c302e373737383734393835393335313437350a22323032302d30322d32332030303a30303a3030222c302e373731333834393530303532383132330a22323032302d30322d32342030303a30303a3030222c302e373937383030363936353434323134340a22323032302d30322d32352030303a30303a3030222c302e373736383231373934313333363939370a22323032302d30322d32362030303a30303a3030222c302e373938353333313136353336313831310a22323032302d30322d32372030303a30303a3030222c302e383530343335363139343238353239390a22323032302d30322d32382030303a30303a3030222c302e383734333333393138383334393638310a22323032302d30322d32392030303a30303a3030222c302e3838383336363333393338343837380a22323032302d30332d30312030303a30303a3030222c302e383933393737393637343631333438380a22323032302d30332d30322030303a30303a3030222c302e3931323431323035313530303336362c302e3931323431323035313530303336360a22323032302d30332d30332030303a30303a3030222c302e383733353632323939353238363532330a22323032302d30332d30342030303a30303a3030222c302e383532353336353235333030343039310a22323032302d30332d30352030303a30303a3030222c302e383633323633313830363733313335350a22323032302d30332d30362030303a30303a3030222c302e383734303237343632353730373730350a22323032302d30332d30372030303a30303a3030222c302e383634323439323631363431353135360a22323032302d30332d30382030303a30303a3030222c302e38373630353132313331363135333031').decode()\nwFile = open('chart.csv', 'w')\nwFile.write(hexstr)\nwFile.close()", "execution_count": 1, "outputs": []}, {"metadata": {"trusted": true}, "cell_type": "code", "source": "!ls -la", "execution_count": null, "outputs": []}, {"metadata": {"trusted": true}, "cell_type": "code", "source": "cat chart.csv\n", "execution_count": null, "outputs": []}, {"metadata": {}, "cell_type": "raw", "source": "# \u5728\u7814\u7a76\u73af\u5883\u4e0b\u5b89\u88c5pyfolio\u5e93"}, {"metadata": {"trusted": true}, "cell_type": "code", "source": "#\u5728\u7814\u7a76\u73af\u5883\u4e2d\u5b89\u88c5pyfolio\n!pip3 install --user pyfolio", "execution_count": null, "outputs": []}, {"metadata": {"trusted": true}, "cell_type": "code", "source": "import pandas as pd\nimport sys\nsys.path.append('/home/quant/.local/lib/python3.6/site-packages')\nimport pyfolio as pf\nimport matplotlib.pyplot as plt\n%matplotlib inline \nimport warnings\nwarnings.filterwarnings('ignore')\nfrom fmz import * # \u5bfc\u5165\u6240\u6709FMZ\u51fd\u6570\n\n#\u8bfb\u53d6\u8d44\u91d1\u66f2\u7ebf\u6570\u636e\uff0cFMZ\u5e73\u53f0\u4e0b\u8f7d\uff0c\u7d2f\u8ba1\u6536\u76ca\u6570\u636e\ndf=pd.read_csv(filepath_or_buffer='chart.csv')\n#\u8f6c\u6362\u4e3a\u65e5\u671f\u683c\u5f0f\ndf['Date'] = pd.to_datetime(df['DateTime'],format='%Y-%m-%d %H:%M:%S')\n#\u83b7\u53d6\u5f00\u59cb\u4e0e\u7ed3\u675f\u65f6\u95f4\nstartd = df.at[0,'Date']\nendd = df.at[df.shape[0]-1,'Date']\n\n#\u8bfb\u53d6\u6807\u7684\u8d44\u4ea7\u65e5K\u7ebf\u6570\u636e\uff0c\u7528\u4f5c\u5206\u6790\u4e2d\u7684\u57fa\u51c6\u6536\u76ca\u6570\u636e\n#\u4f7f\u7528FMZ\u7814\u7a76\u73af\u5883\u63d0\u4f9b\u7684API\u83b7\u53d6\u4e0e\u6536\u76ca\u6570\u636e\u7b49\u957f\u7684K\u7ebf\u6570\u636e\ndfh = get_bars('bitfinex.btc_usd', '1d', start=str(startd), end=str(endd))\ndfh=dfh[['close']]\n#\u4ee5k\u7ebf\u6570\u636e\u7684\u6536\u76d8\u4ef7\u8ba1\u7b97\u65e5\u6da8\u8dcc\u5e45\ndfh['close_shift'] = dfh['close'].shift(1)\ndfh = dfh.fillna(method='bfill') # \u5411\u4e0b\u5bfb\u627e\u6700\u8fd1\u7684\u4e00\u4e2a\u975e\u7a7a\u503c\uff0c\u4ee5\u8be5\u503c\u6765\u586b\u5145\u786e\u5b9e\u7684\u4f4d\u7f6e\uff0c\u5168\u79f0backward fill\ndfh['changeval']=dfh['close']-dfh['close_shift']\ndfh['change']=dfh['changeval']/dfh['close_shift']\n#\u6da8\u8dcc\u5e45\u4fdd\u75596\u4f4d\u5c0f\u6570\ndfh = dfh.round({'change': 6})\n\n#\u6536\u76ca\u6570\u636e\u5904\u7406\uff0cFMZ\u5e73\u53f0\u83b7\u53d6\u7684\u662f\u7d2f\u8ba1\u6536\u76ca\uff0c\u5c06\u5176\u8f6c\u6362\u4e3a\u65e5\u6536\u76ca\u53d8\u5316\u7387\ndf['return_shift'] = df['\u6d6e\u52a8\u76c8\u4e8f'].shift(1)\ndf['dayly']=df['\u6d6e\u52a8\u76c8\u4e8f']-df['return_shift']\nchushizichan = 3 #FMZ\u56de\u6d4b\u4e2d\u7684\u521d\u59cb\u8d44\u4ea7\u503c\ndf['returns'] = df['dayly']/(df['return_shift']+chushizichan)\ndf=df[['Date','\u6d6e\u52a8\u76c8\u4e8f','return_shift','dayly','returns']]\ndf = df.fillna(value=0.0)\ndf = df.round({'dayly': 3}) #\u4fdd\u7559\u4e09\u4f4d\u5c0f\u6570\ndf = df.round({'returns': 6})\n\n#\u5c06pd.DataFrame,\u8f6c\u6362\u4e3apyfolio\u6536\u76ca\u6240\u9700\u7684pd.Series\ndf['Date'] = pd.to_datetime(df['Date'])\ndf=df[['Date','returns']]\ndf.set_index('Date', inplace=True)\n#\u5904\u7406\u597d\u7684\u6536\u76ca\u6570\u636e\nreturns = df['returns'].tz_localize('UTC')\n\n#\u5c06pd.DataFrame,\u8f6c\u6362\u4e3apyfolio\u57fa\u51c6\u6536\u76ca\u6240\u9700\u7684pd.Series\ndfh=dfh[['change']]\ndfh = pd.Series(dfh['change'].values, index=dfh.index)\n#\u5904\u7406\u597d\u7684\u57fa\u51c6\u6570\u636e\nbenchmark_rets = dfh\n\n#\u7b56\u7565\u7684\u56de\u6d4b\u671f\u540e\u5f00\u59cb\u8fdb\u884c\u5b9e\u65f6\u4ea4\u6613\u7684\u65f6\u95f4\u70b9\u3002\nlive_start_date = '2020-02-01'\n\n#\u8c03\u7528pyfolio\u7684API\u8ba1\u7b97\u5e76\u8f93\u51fa\u8d44\u91d1\u66f2\u7ebf\u5206\u6790\u7ed3\u679c\u56fe\n#returns\u53c2\u6570\u662f\u5fc5\u987b\u7684\uff0c\u5176\u4f59\u53c2\u6570\u53ef\u4ee5\u4e0d\u8f93\u5165\npf.create_returns_tear_sheet(returns,benchmark_rets=benchmark_rets,live_start_date=live_start_date)", "execution_count": null, "outputs": []}], "metadata": {"kernelspec": {"name": "python3", "display_name": "Python 3", "language": "python"}, "language_info": {"name": "python", "version": "3.6.8", "mimetype": "text/x-python", "codemirror_mode": {"name": "ipython", "version": 3}, "pygments_lexer": "ipython3", "nbconvert_exporter": "python", "file_extension": ".py"}}, "nbformat": 4, "nbformat_minor": 2}