{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a4e177b0-0478-447f-9088-1d6fc9c253b3",
"metadata": {},
"outputs": [],
"source": [
"import polars as pl\n",
"from perspective.widget import PerspectiveWidget"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "65c8c5f2-6795-4728-b4fb-11c7ecdb1dd3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (363, 18)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>序号</th><th>券商</th><th>交易日期</th><th>交易时间</th><th>证券代码</th><th>证券名称</th><th>买卖标志</th><th>成交价格</th><th>成交数量</th><th>成交金额</th><th>手续费</th><th>印花税</th><th>过户费</th><th>其他费</th><th>发生金额</th><th>手续费率</th><th>印花税率</th><th>过户费率</th></tr><tr><td>u32</td><td>str</td><td>date</td><td>str</td><td>str</td><td>str</td><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>1</td><td>"湘财"</td><td>2022-07-11</td><td>"09:33:37"</td><td>"000900"</td><td>"现代投资"</td><td>"买入"</td><td>4.05</td><td>34400.0</td><td>139320.0</td><td>22.29</td><td>0.0</td><td>1.39</td><td>0.0</td><td>-139342.29</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>2</td><td>"湘财"</td><td>2022-07-11</td><td>"09:34:24"</td><td>"601077"</td><td>"渝农商行"</td><td>"买入"</td><td>3.65</td><td>38300.0</td><td>139795.0</td><td>22.37</td><td>0.0</td><td>1.38</td><td>0.0</td><td>-139818.75</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>3</td><td>"湘财"</td><td>2022-07-11</td><td>"09:36:30"</td><td>"600894"</td><td>"广日股份"</td><td>"买入"</td><td>6.54</td><td>21400.0</td><td>139956.0</td><td>22.39</td><td>0.0</td><td>1.41</td><td>0.0</td><td>-139979.8</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>4</td><td>"湘财"</td><td>2022-07-11</td><td>"09:37:25"</td><td>"601992"</td><td>"金隅集团"</td><td>"买入"</td><td>2.59</td><td>54000.0</td><td>139860.0</td><td>22.38</td><td>0.0</td><td>1.42</td><td>0.0</td><td>-139883.8</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>5</td><td>"湘财"</td><td>2022-07-11</td><td>"09:38:16"</td><td>"002462"</td><td>"嘉事堂"</td><td>"买入"</td><td>13.51</td><td>10400.0</td><td>140504.0</td><td>22.48</td><td>0.0</td><td>1.41</td><td>0.0</td><td>-140526.48</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>359</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:31:53"</td><td>"002956"</td><td>"西麦食品"</td><td>"卖出"</td><td>14.13</td><td>5000.0</td><td>70650.0</td><td>6.74</td><td>35.35</td><td>0.0</td><td>0.0</td><td>70607.91</td><td>0.000095</td><td>0.0005</td><td>0.0</td></tr><tr><td>360</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:39:57"</td><td>"603214"</td><td>"爱婴室"</td><td>"买入"</td><td>15.84</td><td>3100.0</td><td>49104.0</td><td>5.0</td><td>0.0</td><td>0.51</td><td>0.0</td><td>-49109.51</td><td>0.000102</td><td>0.0</td><td>0.00001</td></tr><tr><td>361</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:40:55"</td><td>"300132"</td><td>"青松股份"</td><td>"买入"</td><td>5.21</td><td>9600.0</td><td>50016.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-50021.0</td><td>0.0001</td><td>0.0</td><td>0.0</td></tr><tr><td>362</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:43:13"</td><td>"002492"</td><td>"恒基达鑫"</td><td>"买入"</td><td>5.91</td><td>8400.0</td><td>49644.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-49649.0</td><td>0.000101</td><td>0.0</td><td>0.0</td></tr><tr><td>363</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:44:45"</td><td>"002111"</td><td>"威海广泰"</td><td>"买入"</td><td>9.24</td><td>5400.0</td><td>49896.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-49901.0</td><td>0.0001</td><td>0.0</td><td>0.0</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (363, 18)\n",
"┌──────┬──────────┬────────────┬──────────┬───┬────────────┬──────────┬──────────┬──────────┐\n",
"│ 序号 ┆ 券商 ┆ 交易日期 ┆ 交易时间 ┆ … ┆ 发生金额 ┆ 手续费率 ┆ 印花税率 ┆ 过户费率 │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ u32 ┆ str ┆ date ┆ str ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞══════╪══════════╪════════════╪══════════╪═══╪════════════╪══════════╪══════════╪══════════╡\n",
"│ 1 ┆ 湘财 ┆ 2022-07-11 ┆ 09:33:37 ┆ … ┆ -139342.29 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 2 ┆ 湘财 ┆ 2022-07-11 ┆ 09:34:24 ┆ … ┆ -139818.75 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 3 ┆ 湘财 ┆ 2022-07-11 ┆ 09:36:30 ┆ … ┆ -139979.8 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 4 ┆ 湘财 ┆ 2022-07-11 ┆ 09:37:25 ┆ … ┆ -139883.8 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 5 ┆ 湘财 ┆ 2022-07-11 ┆ 09:38:16 ┆ … ┆ -140526.48 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 359 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:31:53 ┆ … ┆ 70607.91 ┆ 0.000095 ┆ 0.0005 ┆ 0.0 │\n",
"│ 360 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:39:57 ┆ … ┆ -49109.51 ┆ 0.000102 ┆ 0.0 ┆ 0.00001 │\n",
"│ 361 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:40:55 ┆ … ┆ -50021.0 ┆ 0.0001 ┆ 0.0 ┆ 0.0 │\n",
"│ 362 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:43:13 ┆ … ┆ -49649.0 ┆ 0.000101 ┆ 0.0 ┆ 0.0 │\n",
"│ 363 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:44:45 ┆ … ┆ -49901.0 ┆ 0.0001 ┆ 0.0 ┆ 0.0 │\n",
"└──────┴──────────┴────────────┴──────────┴───┴────────────┴──────────┴──────────┴──────────┘"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pl.read_parquet(\"stock_trades.parquet\")\n",
"df = df.sort(\"交易日期\",\"交易时间\")\n",
"df = df.with_columns(\n",
" pl.col(\"交易时间\").cast(pl.String),\n",
" 手续费率=pl.col(\"手续费\") / pl.col(\"成交金额\"),\n",
" 印花税率=pl.col(\"印花税\") / pl.col(\"成交金额\"),\n",
" 过户费率=pl.col(\"过户费\") / pl.col(\"成交金额\"),\n",
")\n",
"df = df.with_row_index(\"序号\", 1)\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "654e1e85-4579-4324-a232-5d40fcf47140",
"metadata": {},
"outputs": [],
"source": [
"d1 = df.join(\n",
" df.group_by(\"证券代码\", \"证券名称\")\n",
" .agg(\n",
" 结余数量=(\n",
" pl.when(pl.col(\"买卖标志\") == \"卖出\")\n",
" .then(-pl.col(\"成交数量\"))\n",
" .when(pl.col(\"买卖标志\") == \"买入\")\n",
" .then(pl.col(\"成交数量\"))\n",
" .sum()\n",
" )\n",
" )\n",
" .filter(pl.col(\"结余数量\") < 0),\n",
" on=\"证券代码\",\n",
" how=\"anti\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7b580120-b4df-4b58-a059-327efb239516",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (358, 18)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>序号</th><th>券商</th><th>交易日期</th><th>交易时间</th><th>证券代码</th><th>证券名称</th><th>买卖标志</th><th>成交价格</th><th>成交数量</th><th>成交金额</th><th>手续费</th><th>印花税</th><th>过户费</th><th>其他费</th><th>发生金额</th><th>手续费率</th><th>印花税率</th><th>过户费率</th></tr><tr><td>u32</td><td>str</td><td>date</td><td>str</td><td>str</td><td>str</td><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>1</td><td>"湘财"</td><td>2022-07-11</td><td>"09:33:37"</td><td>"000900"</td><td>"现代投资"</td><td>"买入"</td><td>4.05</td><td>34400.0</td><td>139320.0</td><td>22.29</td><td>0.0</td><td>1.39</td><td>0.0</td><td>-139342.29</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>2</td><td>"湘财"</td><td>2022-07-11</td><td>"09:34:24"</td><td>"601077"</td><td>"渝农商行"</td><td>"买入"</td><td>3.65</td><td>38300.0</td><td>139795.0</td><td>22.37</td><td>0.0</td><td>1.38</td><td>0.0</td><td>-139818.75</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>3</td><td>"湘财"</td><td>2022-07-11</td><td>"09:36:30"</td><td>"600894"</td><td>"广日股份"</td><td>"买入"</td><td>6.54</td><td>21400.0</td><td>139956.0</td><td>22.39</td><td>0.0</td><td>1.41</td><td>0.0</td><td>-139979.8</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>4</td><td>"湘财"</td><td>2022-07-11</td><td>"09:37:25"</td><td>"601992"</td><td>"金隅集团"</td><td>"买入"</td><td>2.59</td><td>54000.0</td><td>139860.0</td><td>22.38</td><td>0.0</td><td>1.42</td><td>0.0</td><td>-139883.8</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>5</td><td>"湘财"</td><td>2022-07-11</td><td>"09:38:16"</td><td>"002462"</td><td>"嘉事堂"</td><td>"买入"</td><td>13.51</td><td>10400.0</td><td>140504.0</td><td>22.48</td><td>0.0</td><td>1.41</td><td>0.0</td><td>-140526.48</td><td>0.00016</td><td>0.0</td><td>0.00001</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>359</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:31:53"</td><td>"002956"</td><td>"西麦食品"</td><td>"卖出"</td><td>14.13</td><td>5000.0</td><td>70650.0</td><td>6.74</td><td>35.35</td><td>0.0</td><td>0.0</td><td>70607.91</td><td>0.000095</td><td>0.0005</td><td>0.0</td></tr><tr><td>360</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:39:57"</td><td>"603214"</td><td>"爱婴室"</td><td>"买入"</td><td>15.84</td><td>3100.0</td><td>49104.0</td><td>5.0</td><td>0.0</td><td>0.51</td><td>0.0</td><td>-49109.51</td><td>0.000102</td><td>0.0</td><td>0.00001</td></tr><tr><td>361</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:40:55"</td><td>"300132"</td><td>"青松股份"</td><td>"买入"</td><td>5.21</td><td>9600.0</td><td>50016.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-50021.0</td><td>0.0001</td><td>0.0</td><td>0.0</td></tr><tr><td>362</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:43:13"</td><td>"002492"</td><td>"恒基达鑫"</td><td>"买入"</td><td>5.91</td><td>8400.0</td><td>49644.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-49649.0</td><td>0.000101</td><td>0.0</td><td>0.0</td></tr><tr><td>363</td><td>"海通两融"</td><td>2023-10-31</td><td>"09:44:45"</td><td>"002111"</td><td>"威海广泰"</td><td>"买入"</td><td>9.24</td><td>5400.0</td><td>49896.0</td><td>5.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>-49901.0</td><td>0.0001</td><td>0.0</td><td>0.0</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (358, 18)\n",
"┌──────┬──────────┬────────────┬──────────┬───┬────────────┬──────────┬──────────┬──────────┐\n",
"│ 序号 ┆ 券商 ┆ 交易日期 ┆ 交易时间 ┆ … ┆ 发生金额 ┆ 手续费率 ┆ 印花税率 ┆ 过户费率 │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ u32 ┆ str ┆ date ┆ str ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞══════╪══════════╪════════════╪══════════╪═══╪════════════╪══════════╪══════════╪══════════╡\n",
"│ 1 ┆ 湘财 ┆ 2022-07-11 ┆ 09:33:37 ┆ … ┆ -139342.29 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 2 ┆ 湘财 ┆ 2022-07-11 ┆ 09:34:24 ┆ … ┆ -139818.75 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 3 ┆ 湘财 ┆ 2022-07-11 ┆ 09:36:30 ┆ … ┆ -139979.8 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 4 ┆ 湘财 ┆ 2022-07-11 ┆ 09:37:25 ┆ … ┆ -139883.8 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ 5 ┆ 湘财 ┆ 2022-07-11 ┆ 09:38:16 ┆ … ┆ -140526.48 ┆ 0.00016 ┆ 0.0 ┆ 0.00001 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 359 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:31:53 ┆ … ┆ 70607.91 ┆ 0.000095 ┆ 0.0005 ┆ 0.0 │\n",
"│ 360 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:39:57 ┆ … ┆ -49109.51 ┆ 0.000102 ┆ 0.0 ┆ 0.00001 │\n",
"│ 361 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:40:55 ┆ … ┆ -50021.0 ┆ 0.0001 ┆ 0.0 ┆ 0.0 │\n",
"│ 362 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:43:13 ┆ … ┆ -49649.0 ┆ 0.000101 ┆ 0.0 ┆ 0.0 │\n",
"│ 363 ┆ 海通两融 ┆ 2023-10-31 ┆ 09:44:45 ┆ … ┆ -49901.0 ┆ 0.0001 ┆ 0.0 ┆ 0.0 │\n",
"└──────┴──────────┴────────────┴──────────┴───┴────────────┴──────────┴──────────┴──────────┘"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "cb8048e0-0225-4d98-b94f-09df75b0b603",
"metadata": {},
"outputs": [],
"source": [
"start_date = df[\"交易日期\"].min()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "2e112b33-dc5c-444b-8d33-e501c5de41a0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.date(2022, 7, 11)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"start_date"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "2d0d391e-58dd-463c-850c-eac1fe22db69",
"metadata": {},
"outputs": [],
"source": [
"end_date = df[\"交易日期\"].max()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "9aa1a0c5-10d1-428e-881e-8e49ff1ec180",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.date(2023, 10, 31)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"end_date"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "cc00268c-b747-49b2-bc78-3979f35260b1",
"metadata": {},
"outputs": [],
"source": [
"k1 = pl.select(\n",
" 日期=pl.date_range(start_date, end_date)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3576a9e4-5634-459e-913f-87721346a446",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (478, 1)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>日期</th></tr><tr><td>date</td></tr></thead><tbody><tr><td>2022-07-11</td></tr><tr><td>2022-07-12</td></tr><tr><td>2022-07-13</td></tr><tr><td>2022-07-14</td></tr><tr><td>2022-07-15</td></tr><tr><td>…</td></tr><tr><td>2023-10-27</td></tr><tr><td>2023-10-28</td></tr><tr><td>2023-10-29</td></tr><tr><td>2023-10-30</td></tr><tr><td>2023-10-31</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (478, 1)\n",
"┌────────────┐\n",
"│ 日期 │\n",
"│ --- │\n",
"│ date │\n",
"╞════════════╡\n",
"│ 2022-07-11 │\n",
"│ 2022-07-12 │\n",
"│ 2022-07-13 │\n",
"│ 2022-07-14 │\n",
"│ 2022-07-15 │\n",
"│ … │\n",
"│ 2023-10-27 │\n",
"│ 2023-10-28 │\n",
"│ 2023-10-29 │\n",
"│ 2023-10-30 │\n",
"│ 2023-10-31 │\n",
"└────────────┘"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k1"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "ac597a81-f20a-450d-87b7-438102e05f6e",
"metadata": {},
"outputs": [],
"source": [
"k2 = df[\"证券代码\"].unique().sort().to_frame()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "28152203-82c1-4669-bf0f-199964560550",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (152, 1)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>证券代码</th></tr><tr><td>str</td></tr></thead><tbody><tr><td>"000096"</td></tr><tr><td>"000532"</td></tr><tr><td>"000559"</td></tr><tr><td>"000599"</td></tr><tr><td>"000655"</td></tr><tr><td>…</td></tr><tr><td>"688299"</td></tr><tr><td>"688321"</td></tr><tr><td>"688360"</td></tr><tr><td>"688393"</td></tr><tr><td>"688660"</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (152, 1)\n",
"┌──────────┐\n",
"│ 证券代码 │\n",
"│ --- │\n",
"│ str │\n",
"╞══════════╡\n",
"│ 000096 │\n",
"│ 000532 │\n",
"│ 000559 │\n",
"│ 000599 │\n",
"│ 000655 │\n",
"│ … │\n",
"│ 688299 │\n",
"│ 688321 │\n",
"│ 688360 │\n",
"│ 688393 │\n",
"│ 688660 │\n",
"└──────────┘"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k2"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "5f5d6ad6-b9dd-44c5-81af-0e8b5b9b4958",
"metadata": {},
"outputs": [],
"source": [
"k = k1.join(k2, how=\"cross\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "d26b1415-6764-4589-83b3-de9cf2bf3e3d",
"metadata": {},
"outputs": [],
"source": [
"d2=(\n",
" k.join(\n",
" d1, \n",
" left_on=[\"日期\", \"证券代码\"], \n",
" right_on=[\"交易日期\", \"证券代码\"], \n",
" how=\"left\"\n",
").sort(\"日期\", \"证券代码\").with_columns(\n",
" 结余数量=(\n",
" pl.when(pl.col(\"买卖标志\") == \"买入\")\n",
" .then(pl.col(\"成交数量\"))\n",
" .when(pl.col(\"买卖标志\") == \"卖出\")\n",
" .then(-pl.col(\"成交数量\"))\n",
" .otherwise(0)\n",
" .cum_sum()\n",
" .over(\"证券代码\")\n",
" ),\n",
").filter(\n",
" pl.col(\"结余数量\") > 0\n",
")\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "0d724086-5c62-4d8d-82e3-496ba5116123",
"metadata": {},
"outputs": [],
"source": [
"import tushare as ts"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "fec705bd-ff9b-4048-ab09-841fd14323f1",
"metadata": {},
"outputs": [],
"source": [
"pro = ts.pro_api()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "5ce15a58-c9b2-42b1-bcc1-52616d7a355b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.date(2022, 7, 11)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"start_date"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "d0e85e05-938b-448d-98c4-d185f3ddebb7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'20220711'"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f\"{start_date:%Y%m%d}\""
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "02e5c67c-5c35-4bcb-8607-f11ef56e8532",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.date(2023, 10, 31)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"end_date"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "b077bf65-3458-4154-9548-4c9bcb01728f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'20231031'"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"format(end_date, \"%Y%m%d\")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "4cda94d5-f585-4f2e-8161-68160f9097fa",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (318, 11)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>ts_code</th><th>trade_date</th><th>open</th><th>high</th><th>low</th><th>close</th><th>pre_close</th><th>change</th><th>pct_chg</th><th>vol</th><th>amount</th></tr><tr><td>str</td><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>"002462.SZ"</td><td>"20231031"</td><td>14.75</td><td>14.9</td><td>14.59</td><td>14.7</td><td>14.75</td><td>-0.05</td><td>-0.339</td><td>65859.96</td><td>96984.271</td></tr><tr><td>"002462.SZ"</td><td>"20231030"</td><td>13.88</td><td>14.89</td><td>13.88</td><td>14.75</td><td>13.93</td><td>0.82</td><td>5.8866</td><td>123932.16</td><td>180119.372</td></tr><tr><td>"002462.SZ"</td><td>"20231027"</td><td>13.7</td><td>13.98</td><td>13.51</td><td>13.93</td><td>13.64</td><td>0.29</td><td>2.1261</td><td>35782.0</td><td>49386.168</td></tr><tr><td>"002462.SZ"</td><td>"20231026"</td><td>13.49</td><td>13.68</td><td>13.4</td><td>13.64</td><td>13.62</td><td>0.02</td><td>0.1468</td><td>19215.0</td><td>26005.866</td></tr><tr><td>"002462.SZ"</td><td>"20231025"</td><td>13.65</td><td>13.77</td><td>13.58</td><td>13.62</td><td>13.67</td><td>-0.05</td><td>-0.3658</td><td>18484.0</td><td>25274.163</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>"002462.SZ"</td><td>"20220715"</td><td>13.61</td><td>13.66</td><td>13.12</td><td>13.13</td><td>13.59</td><td>-0.46</td><td>-3.3848</td><td>32967.65</td><td>44114.064</td></tr><tr><td>"002462.SZ"</td><td>"20220714"</td><td>13.54</td><td>13.75</td><td>13.5</td><td>13.59</td><td>13.54</td><td>0.05</td><td>0.3693</td><td>21967.0</td><td>29851.164</td></tr><tr><td>"002462.SZ"</td><td>"20220713"</td><td>13.55</td><td>13.63</td><td>13.39</td><td>13.54</td><td>13.61</td><td>-0.07</td><td>-0.5143</td><td>22793.0</td><td>30714.624</td></tr><tr><td>"002462.SZ"</td><td>"20220712"</td><td>13.65</td><td>13.69</td><td>13.41</td><td>13.61</td><td>13.65</td><td>-0.04</td><td>-0.293</td><td>29679.0</td><td>40146.31</td></tr><tr><td>"002462.SZ"</td><td>"20220711"</td><td>13.2</td><td>13.96</td><td>13.07</td><td>13.65</td><td>13.18</td><td>0.47</td><td>3.566</td><td>62827.0</td><td>85869.11</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (318, 11)\n",
"┌───────────┬────────────┬───────┬───────┬───┬────────┬─────────┬───────────┬────────────┐\n",
"│ ts_code ┆ trade_date ┆ open ┆ high ┆ … ┆ change ┆ pct_chg ┆ vol ┆ amount │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ str ┆ str ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞═══════════╪════════════╪═══════╪═══════╪═══╪════════╪═════════╪═══════════╪════════════╡\n",
"│ 002462.SZ ┆ 20231031 ┆ 14.75 ┆ 14.9 ┆ … ┆ -0.05 ┆ -0.339 ┆ 65859.96 ┆ 96984.271 │\n",
"│ 002462.SZ ┆ 20231030 ┆ 13.88 ┆ 14.89 ┆ … ┆ 0.82 ┆ 5.8866 ┆ 123932.16 ┆ 180119.372 │\n",
"│ 002462.SZ ┆ 20231027 ┆ 13.7 ┆ 13.98 ┆ … ┆ 0.29 ┆ 2.1261 ┆ 35782.0 ┆ 49386.168 │\n",
"│ 002462.SZ ┆ 20231026 ┆ 13.49 ┆ 13.68 ┆ … ┆ 0.02 ┆ 0.1468 ┆ 19215.0 ┆ 26005.866 │\n",
"│ 002462.SZ ┆ 20231025 ┆ 13.65 ┆ 13.77 ┆ … ┆ -0.05 ┆ -0.3658 ┆ 18484.0 ┆ 25274.163 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 002462.SZ ┆ 20220715 ┆ 13.61 ┆ 13.66 ┆ … ┆ -0.46 ┆ -3.3848 ┆ 32967.65 ┆ 44114.064 │\n",
"│ 002462.SZ ┆ 20220714 ┆ 13.54 ┆ 13.75 ┆ … ┆ 0.05 ┆ 0.3693 ┆ 21967.0 ┆ 29851.164 │\n",
"│ 002462.SZ ┆ 20220713 ┆ 13.55 ┆ 13.63 ┆ … ┆ -0.07 ┆ -0.5143 ┆ 22793.0 ┆ 30714.624 │\n",
"│ 002462.SZ ┆ 20220712 ┆ 13.65 ┆ 13.69 ┆ … ┆ -0.04 ┆ -0.293 ┆ 29679.0 ┆ 40146.31 │\n",
"│ 002462.SZ ┆ 20220711 ┆ 13.2 ┆ 13.96 ┆ … ┆ 0.47 ┆ 3.566 ┆ 62827.0 ┆ 85869.11 │\n",
"└───────────┴────────────┴───────┴───────┴───┴────────┴─────────┴───────────┴────────────┘"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hq = pro.daily(\n",
" ts_code=\"002462.SZ\",\n",
" start_date=format(start_date, \"%Y%m%d\"),\n",
" end_date=format(end_date, \"%Y%m%d\"),\n",
")\n",
"hq=pl.from_pandas(hq)\n",
"hq"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "4b3c2c4d-030d-4af3-a19c-2e837e7e43ae",
"metadata": {},
"outputs": [],
"source": [
"ts_codes = d1.select(\n",
" 证券代码=(\n",
" pl.when(pl.col(\"证券代码\").str.head(1).is_in([\"0\", \"3\"]))\n",
" .then(pl.format(\"{}.SZ\", pl.col(\"证券代码\")))\n",
" .when(pl.col(\"证券代码\").str.head(1) == \"6\")\n",
" .then(pl.format(\"{}.SH\", pl.col(\"证券代码\")))\n",
" ),\n",
").to_series().unique().sort().to_list()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "9eade94d-ae3f-4e26-8324-2f48a225a859",
"metadata": {},
"outputs": [],
"source": [
"from tqdm.notebook import tqdm\n",
"import time"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "90aad882-d0cf-4545-b60b-b13894bb10ac",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f09c1eb252244e2ebd98f767cda259b7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/149 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hq = []\n",
"for ts_code in tqdm(ts_codes):\n",
" df_pd = pro.daily(\n",
" ts_code=ts_code,\n",
" start_date=format(start_date, \"%Y%m%d\"),\n",
" end_date=format(end_date, \"%Y%m%d\"),\n",
" )\n",
" hq.append(pl.from_pandas(df_pd))\n",
" time.sleep(1.3)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "2b824666-d946-48ee-849b-7eb66c6c5d86",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"149"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(hq)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "77c8e138-0d45-41e7-86ee-d18f6e731539",
"metadata": {},
"outputs": [],
"source": [
"hq=pl.concat(hq)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "f33a96ac-ac9c-42e4-a3cb-c7d4e55df1af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/c/Users/18518/repo/week08\n"
]
}
],
"source": [
"!pwd"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "e92354c4-558d-4062-b96c-495bfaf28d77",
"metadata": {},
"outputs": [],
"source": [
"hq.write_parquet(\"daily.parquet\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "5461cdb3-6112-4ef1-bd9f-053a4a0679db",
"metadata": {},
"outputs": [],
"source": [
"hq = pl.read_parquet(\"daily.parquet\")\n",
"hq = hq.with_columns(\n",
" pl.col(\"ts_code\").str.head(6),\n",
" pl.col(\"trade_date\").str.to_date(\"%Y%m%d\"),\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "5995623f-15e9-4aba-96cf-f062a0372668",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (47_355, 11)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>ts_code</th><th>trade_date</th><th>open</th><th>high</th><th>low</th><th>close</th><th>pre_close</th><th>change</th><th>pct_chg</th><th>vol</th><th>amount</th></tr><tr><td>str</td><td>date</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>"000096"</td><td>2023-10-31</td><td>8.95</td><td>9.25</td><td>8.88</td><td>8.95</td><td>8.84</td><td>0.11</td><td>1.2443</td><td>45191.22</td><td>40697.722</td></tr><tr><td>"000096"</td><td>2023-10-30</td><td>8.72</td><td>8.94</td><td>8.68</td><td>8.84</td><td>8.78</td><td>0.06</td><td>0.6834</td><td>33567.85</td><td>29716.156</td></tr><tr><td>"000096"</td><td>2023-10-27</td><td>8.97</td><td>8.98</td><td>8.75</td><td>8.78</td><td>8.94</td><td>-0.16</td><td>-1.7897</td><td>30035.5</td><td>26547.822</td></tr><tr><td>"000096"</td><td>2023-10-26</td><td>9.12</td><td>9.13</td><td>8.83</td><td>8.94</td><td>9.06</td><td>-0.12</td><td>-1.3245</td><td>28794.0</td><td>25735.179</td></tr><tr><td>"000096"</td><td>2023-10-25</td><td>9.04</td><td>9.2</td><td>8.92</td><td>9.06</td><td>8.99</td><td>0.07</td><td>0.7786</td><td>31960.0</td><td>29019.019</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>"688660"</td><td>2022-07-15</td><td>9.73</td><td>10.11</td><td>9.65</td><td>9.76</td><td>9.73</td><td>0.03</td><td>0.3083</td><td>338386.93</td><td>334715.635</td></tr><tr><td>"688660"</td><td>2022-07-14</td><td>9.67</td><td>9.84</td><td>9.55</td><td>9.73</td><td>9.67</td><td>0.06</td><td>0.6205</td><td>329943.3</td><td>319289.544</td></tr><tr><td>"688660"</td><td>2022-07-13</td><td>9.06</td><td>9.86</td><td>9.0</td><td>9.67</td><td>9.06</td><td>0.61</td><td>6.7329</td><td>550236.58</td><td>524088.481</td></tr><tr><td>"688660"</td><td>2022-07-12</td><td>8.99</td><td>9.39</td><td>8.89</td><td>9.06</td><td>9.04</td><td>0.02</td><td>0.2212</td><td>288562.46</td><td>264062.174</td></tr><tr><td>"688660"</td><td>2022-07-11</td><td>9.0</td><td>9.2</td><td>8.89</td><td>9.04</td><td>9.02</td><td>0.02</td><td>0.2217</td><td>166819.63</td><td>150747.732</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (47_355, 11)\n",
"┌─────────┬────────────┬──────┬───────┬───┬────────┬─────────┬───────────┬────────────┐\n",
"│ ts_code ┆ trade_date ┆ open ┆ high ┆ … ┆ change ┆ pct_chg ┆ vol ┆ amount │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ str ┆ date ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞═════════╪════════════╪══════╪═══════╪═══╪════════╪═════════╪═══════════╪════════════╡\n",
"│ 000096 ┆ 2023-10-31 ┆ 8.95 ┆ 9.25 ┆ … ┆ 0.11 ┆ 1.2443 ┆ 45191.22 ┆ 40697.722 │\n",
"│ 000096 ┆ 2023-10-30 ┆ 8.72 ┆ 8.94 ┆ … ┆ 0.06 ┆ 0.6834 ┆ 33567.85 ┆ 29716.156 │\n",
"│ 000096 ┆ 2023-10-27 ┆ 8.97 ┆ 8.98 ┆ … ┆ -0.16 ┆ -1.7897 ┆ 30035.5 ┆ 26547.822 │\n",
"│ 000096 ┆ 2023-10-26 ┆ 9.12 ┆ 9.13 ┆ … ┆ -0.12 ┆ -1.3245 ┆ 28794.0 ┆ 25735.179 │\n",
"│ 000096 ┆ 2023-10-25 ┆ 9.04 ┆ 9.2 ┆ … ┆ 0.07 ┆ 0.7786 ┆ 31960.0 ┆ 29019.019 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 688660 ┆ 2022-07-15 ┆ 9.73 ┆ 10.11 ┆ … ┆ 0.03 ┆ 0.3083 ┆ 338386.93 ┆ 334715.635 │\n",
"│ 688660 ┆ 2022-07-14 ┆ 9.67 ┆ 9.84 ┆ … ┆ 0.06 ┆ 0.6205 ┆ 329943.3 ┆ 319289.544 │\n",
"│ 688660 ┆ 2022-07-13 ┆ 9.06 ┆ 9.86 ┆ … ┆ 0.61 ┆ 6.7329 ┆ 550236.58 ┆ 524088.481 │\n",
"│ 688660 ┆ 2022-07-12 ┆ 8.99 ┆ 9.39 ┆ … ┆ 0.02 ┆ 0.2212 ┆ 288562.46 ┆ 264062.174 │\n",
"│ 688660 ┆ 2022-07-11 ┆ 9.0 ┆ 9.2 ┆ … ┆ 0.02 ┆ 0.2217 ┆ 166819.63 ┆ 150747.732 │\n",
"└─────────┴────────────┴──────┴───────┴───┴────────┴─────────┴───────────┴────────────┘"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hq"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "02a66db9-e20e-4b69-9195-9a182ff36cb7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (358, 28)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>序号</th><th>券商</th><th>交易日期</th><th>交易时间</th><th>证券代码</th><th>证券名称</th><th>买卖标志</th><th>成交价格</th><th>成交数量</th><th>成交金额</th><th>手续费</th><th>印花税</th><th>过户费</th><th>其他费</th><th>发生金额</th><th>手续费率</th><th>印花税率</th><th>过户费率</th><th>open</th><th>high</th><th>low</th><th>close</th><th>pre_close</th><th>change</th><th>pct_chg</th><th>vol</th><th>amount</th><th>vratio</th></tr><tr><td>u32</td><td>str</td><td>date</td><td>str</td><td>str</td><td>str</td><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>237</td><td>"湘财"</td><td>2023-05-09</td><td>"09:33:16"</td><td>"601166"</td><td>"兴业银行"</td><td>"卖出"</td><td>17.75</td><td>3000.0</td><td>53250.0</td><td>8.52</td><td>53.25</td><td>0.53</td><td>0.0</td><td>53187.7</td><td>0.00016</td><td>0.001</td><td>0.00001</td><td>17.77</td><td>17.94</td><td>17.5</td><td>17.56</td><td>17.63</td><td>-0.07</td><td>-0.3971</td><td>1.6276e6</td><td>2.8810e6</td><td>0.000018</td></tr><tr><td>48</td><td>"湘财"</td><td>2022-10-25</td><td>"09:30:19"</td><td>"300368"</td><td>"汇金股份"</td><td>"卖出"</td><td>6.2</td><td>100.0</td><td>620.0</td><td>0.1</td><td>0.62</td><td>0.01</td><td>0.0</td><td>619.28</td><td>0.000161</td><td>0.001</td><td>0.000016</td><td>6.18</td><td>6.25</td><td>5.95</td><td>6.06</td><td>6.2</td><td>-0.14</td><td>-2.2581</td><td>49219.99</td><td>29911.915</td><td>0.00002</td></tr><tr><td>49</td><td>"湘财"</td><td>2022-10-25</td><td>"09:30:39"</td><td>"002996"</td><td>"顺博合金"</td><td>"卖出"</td><td>13.64</td><td>100.0</td><td>1364.0</td><td>0.22</td><td>1.36</td><td>0.01</td><td>0.0</td><td>1362.42</td><td>0.000161</td><td>0.000997</td><td>0.000007</td><td>13.57</td><td>13.93</td><td>13.26</td><td>13.82</td><td>13.64</td><td>0.18</td><td>1.3196</td><td>38258.22</td><td>52122.119</td><td>0.000026</td></tr><tr><td>235</td><td>"湘财"</td><td>2023-04-25</td><td>"13:35:07"</td><td>"601166"</td><td>"兴业银行"</td><td>"买入"</td><td>17.15</td><td>3000.0</td><td>51450.0</td><td>8.23</td><td>0.0</td><td>0.51</td><td>0.0</td><td>-51458.74</td><td>0.00016</td><td>0.0</td><td>0.00001</td><td>16.96</td><td>17.29</td><td>16.96</td><td>17.27</td><td>16.93</td><td>0.34</td><td>2.0083</td><td>995234.22</td><td>1.7071e6</td><td>0.00003</td></tr><tr><td>46</td><td>"湘财"</td><td>2022-10-25</td><td>"09:25:00"</td><td>"002998"</td><td>"优彩资源"</td><td>"卖出"</td><td>6.73</td><td>100.0</td><td>673.0</td><td>0.11</td><td>0.67</td><td>0.01</td><td>0.0</td><td>672.22</td><td>0.000163</td><td>0.000996</td><td>0.000015</td><td>6.73</td><td>6.73</td><td>6.56</td><td>6.64</td><td>6.72</td><td>-0.08</td><td>-1.1905</td><td>16145.0</td><td>10687.614</td><td>0.000062</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>30</td><td>"湘财"</td><td>2022-10-11</td><td>"09:41:06"</td><td>"600231"</td><td>"凌钢股份"</td><td>"买入"</td><td>2.2</td><td>62700.0</td><td>137940.0</td><td>22.07</td><td>0.0</td><td>1.29</td><td>0.0</td><td>-137963.36</td><td>0.00016</td><td>0.0</td><td>0.000009</td><td>2.21</td><td>2.22</td><td>2.15</td><td>2.2</td><td>2.21</td><td>-0.01</td><td>-0.4525</td><td>61371.2</td><td>13386.328</td><td>0.010217</td></tr><tr><td>3</td><td>"湘财"</td><td>2022-07-11</td><td>"09:36:30"</td><td>"600894"</td><td>"广日股份"</td><td>"买入"</td><td>6.54</td><td>21400.0</td><td>139956.0</td><td>22.39</td><td>0.0</td><td>1.41</td><td>0.0</td><td>-139979.8</td><td>0.00016</td><td>0.0</td><td>0.00001</td><td>6.57</td><td>6.57</td><td>6.49</td><td>6.51</td><td>6.57</td><td>-0.06</td><td>-0.9132</td><td>20737.5</td><td>13537.134</td><td>0.010319</td></tr><tr><td>142</td><td>"湘财"</td><td>2023-02-21</td><td>"09:37:16"</td><td>"300385"</td><td>"雪浪环境"</td><td>"买入"</td><td>6.5293</td><td>11500.0</td><td>75087.0</td><td>12.01</td><td>0.0</td><td>0.77</td><td>0.0</td><td>-75099.01</td><td>0.00016</td><td>0.0</td><td>0.00001</td><td>6.53</td><td>6.59</td><td>6.45</td><td>6.52</td><td>6.5</td><td>0.02</td><td>0.3077</td><td>11136.0</td><td>7250.686</td><td>0.010327</td></tr><tr><td>152</td><td>"湘财"</td><td>2023-03-01</td><td>"09:31:46"</td><td>"688069"</td><td>"德林海环保"</td><td>"卖出"</td><td>28.2838</td><td>2600.0</td><td>73538.0</td><td>11.77</td><td>73.58</td><td>0.77</td><td>0.0</td><td>73451.88</td><td>0.00016</td><td>0.001001</td><td>0.00001</td><td>28.52</td><td>28.86</td><td>28.27</td><td>28.67</td><td>28.54</td><td>0.13</td><td>0.4555</td><td>2416.06</td><td>6897.976</td><td>0.010761</td></tr><tr><td>27</td><td>"湘财"</td><td>2022-10-11</td><td>"09:37:32"</td><td>"600261"</td><td>"阳光照明"</td><td>"买入"</td><td>3.1134</td><td>44600.0</td><td>138857.0</td><td>22.22</td><td>0.0</td><td>1.33</td><td>0.0</td><td>-138880.55</td><td>0.00016</td><td>0.0</td><td>0.00001</td><td>3.14</td><td>3.15</td><td>3.06</td><td>3.13</td><td>3.11</td><td>0.02</td><td>0.6431</td><td>41397.03</td><td>12872.499</td><td>0.010774</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (358, 28)\n",
"┌──────┬──────┬────────────┬──────────┬───┬─────────┬───────────┬───────────┬──────────┐\n",
"│ 序号 ┆ 券商 ┆ 交易日期 ┆ 交易时间 ┆ … ┆ pct_chg ┆ vol ┆ amount ┆ vratio │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ u32 ┆ str ┆ date ┆ str ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞══════╪══════╪════════════╪══════════╪═══╪═════════╪═══════════╪═══════════╪══════════╡\n",
"│ 237 ┆ 湘财 ┆ 2023-05-09 ┆ 09:33:16 ┆ … ┆ -0.3971 ┆ 1.6276e6 ┆ 2.8810e6 ┆ 0.000018 │\n",
"│ 48 ┆ 湘财 ┆ 2022-10-25 ┆ 09:30:19 ┆ … ┆ -2.2581 ┆ 49219.99 ┆ 29911.915 ┆ 0.00002 │\n",
"│ 49 ┆ 湘财 ┆ 2022-10-25 ┆ 09:30:39 ┆ … ┆ 1.3196 ┆ 38258.22 ┆ 52122.119 ┆ 0.000026 │\n",
"│ 235 ┆ 湘财 ┆ 2023-04-25 ┆ 13:35:07 ┆ … ┆ 2.0083 ┆ 995234.22 ┆ 1.7071e6 ┆ 0.00003 │\n",
"│ 46 ┆ 湘财 ┆ 2022-10-25 ┆ 09:25:00 ┆ … ┆ -1.1905 ┆ 16145.0 ┆ 10687.614 ┆ 0.000062 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 30 ┆ 湘财 ┆ 2022-10-11 ┆ 09:41:06 ┆ … ┆ -0.4525 ┆ 61371.2 ┆ 13386.328 ┆ 0.010217 │\n",
"│ 3 ┆ 湘财 ┆ 2022-07-11 ┆ 09:36:30 ┆ … ┆ -0.9132 ┆ 20737.5 ┆ 13537.134 ┆ 0.010319 │\n",
"│ 142 ┆ 湘财 ┆ 2023-02-21 ┆ 09:37:16 ┆ … ┆ 0.3077 ┆ 11136.0 ┆ 7250.686 ┆ 0.010327 │\n",
"│ 152 ┆ 湘财 ┆ 2023-03-01 ┆ 09:31:46 ┆ … ┆ 0.4555 ┆ 2416.06 ┆ 6897.976 ┆ 0.010761 │\n",
"│ 27 ┆ 湘财 ┆ 2022-10-11 ┆ 09:37:32 ┆ … ┆ 0.6431 ┆ 41397.03 ┆ 12872.499 ┆ 0.010774 │\n",
"└──────┴──────┴────────────┴──────────┴───┴─────────┴───────────┴───────────┴──────────┘"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1.join(\n",
" hq, left_on=[\"交易日期\", \"证券代码\"], right_on=[\"trade_date\", \"ts_code\"], how=\"left\"\n",
").with_columns(\n",
" vratio=pl.col(\"成交数量\") / 100 / pl.col(\"vol\"),\n",
").sort(\"vratio\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "fe966fb1-3748-4d2a-8ca0-76f8691f31e5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (72_671, 19)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>日期</th><th>证券代码</th><th>序号</th><th>券商</th><th>交易时间</th><th>证券名称</th><th>买卖标志</th><th>成交价格</th><th>成交数量</th><th>成交金额</th><th>手续费</th><th>印花税</th><th>过户费</th><th>其他费</th><th>发生金额</th><th>手续费率</th><th>印花税率</th><th>过户费率</th><th>结余数量</th></tr><tr><td>date</td><td>str</td><td>u32</td><td>str</td><td>str</td><td>str</td><td>str</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>2022-07-11</td><td>"000096"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2022-07-11</td><td>"000532"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2022-07-11</td><td>"000559"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2022-07-11</td><td>"000599"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2022-07-11</td><td>"000655"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>2023-10-31</td><td>"688299"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2023-10-31</td><td>"688321"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2023-10-31</td><td>"688360"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2023-10-31</td><td>"688393"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>0.0</td></tr><tr><td>2023-10-31</td><td>"688660"</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>20200.0</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (72_671, 19)\n",
"┌────────────┬──────────┬──────┬──────┬───┬──────────┬──────────┬──────────┬──────────┐\n",
"│ 日期 ┆ 证券代码 ┆ 序号 ┆ 券商 ┆ … ┆ 手续费率 ┆ 印花税率 ┆ 过户费率 ┆ 结余数量 │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ date ┆ str ┆ u32 ┆ str ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n",
"╞════════════╪══════════╪══════╪══════╪═══╪══════════╪══════════╪══════════╪══════════╡\n",
"│ 2022-07-11 ┆ 000096 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2022-07-11 ┆ 000532 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2022-07-11 ┆ 000559 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2022-07-11 ┆ 000599 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2022-07-11 ┆ 000655 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 2023-10-31 ┆ 688299 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2023-10-31 ┆ 688321 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2023-10-31 ┆ 688360 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2023-10-31 ┆ 688393 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 0.0 │\n",
"│ 2023-10-31 ┆ 688660 ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ 20200.0 │\n",
"└────────────┴──────────┴──────┴──────┴───┴──────────┴──────────┴──────────┴──────────┘"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d3=(\n",
" k.join(d1, left_on=[\"日期\", \"证券代码\"], right_on=[\"交易日期\", \"证券代码\"], how=\"left\"\n",
" )\n",
" .sort(\"日期\", \"证券代码\")\n",
" .with_columns(\n",
" 结余数量=(\n",
" pl.when(pl.col(\"买卖标志\") == \"买入\")\n",
" .then(pl.col(\"成交数量\"))\n",
" .when(pl.col(\"买卖标志\") == \"卖出\")\n",
" .then(-pl.col(\"成交数量\"))\n",
" .otherwise(0)\n",
" .cum_sum()\n",
" .over(\"证券代码\")\n",
" ),\n",
" )\n",
")\n",
"d3"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "eac93ff7-63c3-4bd7-82c0-e8f39e83f369",
"metadata": {},
"outputs": [],
"source": [
"d4 = (\n",
" d3.join(\n",
" hq,\n",
" left_on=[\"日期\", \"证券代码\"],\n",
" right_on=[\"trade_date\", \"ts_code\"],\n",
" how=\"left\",\n",
" )\n",
" .sort(\"证券代码\", \"日期\")\n",
" .with_columns(close=pl.col(\"close\").fill_null(strategy=\"forward\").over(\"证券代码\"))\n",
" .with_columns(\n",
" 持股市值=pl.col(\"结余数量\") * pl.col(\"close\")\n",
" )\n",
" .group_by(\"日期\")\n",
" .agg(\n",
" pl.col(\"持股市值\").sum(),\n",
" pl.col(\"发生金额\").sum(),\n",
" )\n",
" .sort(\"日期\")\n",
" .with_columns(\n",
" 转账金额=pl.when(pl.int_range(0, pl.len()) == 0).then(100_0000).otherwise(0),\n",
" )\n",
" .with_columns(\n",
" 现金余额=(pl.col(\"转账金额\") + pl.col(\"发生金额\")).cum_sum(),\n",
" )\n",
" .with_columns(\n",
" 总资产=pl.col(\"持股市值\") + pl.col(\"现金余额\")\n",
" )\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "aa36fa00-c27c-448f-bc97-f6b1d132e25b",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cb855fcf6866426486ea100457a32841",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"PerspectiveWidget(binding_mode='server', columns=['index', '日期', '持股市值', '发生金额', '转账金额', '现金余额', '总资产'], table…"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"PerspectiveWidget(d4.to_pandas())"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "49b8f4cb-79c7-46c9-a304-309ac98f170c",
"metadata": {},
"outputs": [],
"source": [
"lhq = pro.index_daily(\n",
" ts_code=\"000300.SH\",\n",
" start_date=format(start_date, \"%Y%m%d\"),\n",
" end_date=format(end_date, \"%Y%m%d\"),\n",
" fields=\"ts_code,trade_date,pct_chg\",\n",
")\n",
"\n",
"pl.from_pandas(lhq).write_parquet(\"index_daily.parquet\")\n",
"\n",
"lhq = pl.read_parquet(\"index_daily.parquet\")"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "85081797-6bbb-486a-a39a-7ccd851385de",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (318, 5)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>ts_code</th><th>trade_date</th><th>pct_chg</th><th>car</th><th>沪深300</th></tr><tr><td>str</td><td>date</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>"000300.SH"</td><td>2022-07-11</td><td>0.983254</td><td>0.983254</td><td>983254.0</td></tr><tr><td>"000300.SH"</td><td>2022-07-12</td><td>0.990585</td><td>0.973997</td><td>973996.66359</td></tr><tr><td>"000300.SH"</td><td>2022-07-13</td><td>1.001818</td><td>0.975767</td><td>975767.389524</td></tr><tr><td>"000300.SH"</td><td>2022-07-14</td><td>1.000142</td><td>0.975906</td><td>975905.948494</td></tr><tr><td>"000300.SH"</td><td>2022-07-15</td><td>0.982983</td><td>0.959299</td><td>959298.956968</td></tr><tr><td>…</td><td>…</td><td>…</td><td>…</td><td>…</td></tr><tr><td>"000300.SH"</td><td>2023-10-25</td><td>1.004969</td><td>0.791288</td><td>791288.453778</td></tr><tr><td>"000300.SH"</td><td>2023-10-26</td><td>1.002764</td><td>0.793476</td><td>793475.575065</td></tr><tr><td>"000300.SH"</td><td>2023-10-27</td><td>1.013727</td><td>0.804368</td><td>804367.614284</td></tr><tr><td>"000300.SH"</td><td>2023-10-30</td><td>1.006003</td><td>0.809196</td><td>809196.233072</td></tr><tr><td>"000300.SH"</td><td>2023-10-31</td><td>0.996856</td><td>0.806652</td><td>806652.120115</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (318, 5)\n",
"┌───────────┬────────────┬──────────┬──────────┬───────────────┐\n",
"│ ts_code ┆ trade_date ┆ pct_chg ┆ car ┆ 沪深300 │\n",
"│ --- ┆ --- ┆ --- ┆ --- ┆ --- │\n",
"│ str ┆ date ┆ f64 ┆ f64 ┆ f64 │\n",
"╞═══════════╪════════════╪══════════╪══════════╪═══════════════╡\n",
"│ 000300.SH ┆ 2022-07-11 ┆ 0.983254 ┆ 0.983254 ┆ 983254.0 │\n",
"│ 000300.SH ┆ 2022-07-12 ┆ 0.990585 ┆ 0.973997 ┆ 973996.66359 │\n",
"│ 000300.SH ┆ 2022-07-13 ┆ 1.001818 ┆ 0.975767 ┆ 975767.389524 │\n",
"│ 000300.SH ┆ 2022-07-14 ┆ 1.000142 ┆ 0.975906 ┆ 975905.948494 │\n",
"│ 000300.SH ┆ 2022-07-15 ┆ 0.982983 ┆ 0.959299 ┆ 959298.956968 │\n",
"│ … ┆ … ┆ … ┆ … ┆ … │\n",
"│ 000300.SH ┆ 2023-10-25 ┆ 1.004969 ┆ 0.791288 ┆ 791288.453778 │\n",
"│ 000300.SH ┆ 2023-10-26 ┆ 1.002764 ┆ 0.793476 ┆ 793475.575065 │\n",
"│ 000300.SH ┆ 2023-10-27 ┆ 1.013727 ┆ 0.804368 ┆ 804367.614284 │\n",
"│ 000300.SH ┆ 2023-10-30 ┆ 1.006003 ┆ 0.809196 ┆ 809196.233072 │\n",
"│ 000300.SH ┆ 2023-10-31 ┆ 0.996856 ┆ 0.806652 ┆ 806652.120115 │\n",
"└───────────┴────────────┴──────────┴──────────┴───────────────┘"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lhq = pl.read_parquet(\"index_daily.parquet\")\n",
"lhq = (\n",
" lhq.with_columns(\n",
" pl.col(\"trade_date\").str.to_date(\"%Y%m%d\"),\n",
" pl.col(\"pct_chg\") / 100 + 1,\n",
" )\n",
" .sort(\"trade_date\")\n",
" .with_columns(\n",
" car=pl.col(\"pct_chg\").cum_prod(),\n",
" )\n",
" .with_columns(\n",
" 沪深300=pl.col(\"car\") * 1_000_000,\n",
" )\n",
")\n",
"lhq"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "c2d90136-18b7-43c6-9bd3-ff81b65b275c",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d9d1851f7f3945a9b42725a897477ef4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"PerspectiveWidget(binding_mode='server', columns=['index', 'ts_code', 'trade_date', 'pct_chg', 'car', '沪深300']…"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"PerspectiveWidget(lhq.to_pandas())"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "50235c23-646a-449b-9945-e6f3096929ac",
"metadata": {},
"outputs": [],
"source": [
"d5 = d4.join(lhq, left_on=\"日期\", right_on=\"trade_date\")\n",
"d5=d5.unpivot(on=[\"总资产\", \"沪深300\"], index=\"日期\",variable_name=\"资产类型\", value_name=\"财富\")"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "e0898e40-df84-471d-a052-698910d708ce",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><style>\n",
".dataframe > thead > tr,\n",
".dataframe > tbody > tr {\n",
" text-align: right;\n",
" white-space: pre-wrap;\n",
"}\n",
"</style>\n",
"<small>shape: (636, 3)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>日期</th><th>资产类型</th><th>财富</th></tr><tr><td>date</td><td>str</td><td>f64</td></tr></thead><tbody><tr><td>2022-07-11</td><td>"总资产"</td><td>1.0035e6</td></tr><tr><td>2022-07-12</td><td>"总资产"</td><td>1.0082e6</td></tr><tr><td>2022-07-13</td><td>"总资产"</td><td>1.0143e6</td></tr><tr><td>2022-07-14</td><td>"总资产"</td><td>1.0105e6</td></tr><tr><td>2022-07-15</td><td>"总资产"</td><td>992825.88</td></tr><tr><td>…</td><td>…</td><td>…</td></tr><tr><td>2023-10-25</td><td>"沪深300"</td><td>791288.453778</td></tr><tr><td>2023-10-26</td><td>"沪深300"</td><td>793475.575065</td></tr><tr><td>2023-10-27</td><td>"沪深300"</td><td>804367.614284</td></tr><tr><td>2023-10-30</td><td>"沪深300"</td><td>809196.233072</td></tr><tr><td>2023-10-31</td><td>"沪深300"</td><td>806652.120115</td></tr></tbody></table></div>"
],
"text/plain": [
"shape: (636, 3)\n",
"┌────────────┬──────────┬───────────────┐\n",
"│ 日期 ┆ 资产类型 ┆ 财富 │\n",
"│ --- ┆ --- ┆ --- │\n",
"│ date ┆ str ┆ f64 │\n",
"╞════════════╪══════════╪═══════════════╡\n",
"│ 2022-07-11 ┆ 总资产 ┆ 1.0035e6 │\n",
"│ 2022-07-12 ┆ 总资产 ┆ 1.0082e6 │\n",
"│ 2022-07-13 ┆ 总资产 ┆ 1.0143e6 │\n",
"│ 2022-07-14 ┆ 总资产 ┆ 1.0105e6 │\n",
"│ 2022-07-15 ┆ 总资产 ┆ 992825.88 │\n",
"│ … ┆ … ┆ … │\n",
"│ 2023-10-25 ┆ 沪深300 ┆ 791288.453778 │\n",
"│ 2023-10-26 ┆ 沪深300 ┆ 793475.575065 │\n",
"│ 2023-10-27 ┆ 沪深300 ┆ 804367.614284 │\n",
"│ 2023-10-30 ┆ 沪深300 ┆ 809196.233072 │\n",
"│ 2023-10-31 ┆ 沪深300 ┆ 806652.120115 │\n",
"└────────────┴──────────┴───────────────┘"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d5"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "bd9ab7b1-15cc-49c5-b1f4-789a00cb2d83",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7bff58ee269e4b3c8c8626fba4ad2833",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"PerspectiveWidget(binding_mode='server', columns=['index', '日期', '资产类型', '财富'], table_name='0.8738299284184246…"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"PerspectiveWidget(d5.to_pandas())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "953b5f61-ac15-4a81-bd14-7a2643f9dec4",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}