0
0
0
0
专栏/.../

我和 TiDB 的故事:十年理财之路之 TiDB 如何让我收益达到30万的

 tidb狂热爱好者  发表于  2024-03-26

作为一个收入一般的程序猿,前几年试着做了股票投资,职业习惯,让我试着用tidb去做了一些关于股票的数据分析,接下来,我想把我的一些想法分析给大家:

我的初步思路按照一下几个方面开始做分析:

0

另外,在股票投资中,需要用到数学公式去理解和管理投资风险。如下面的这个数据公式,只要好好理解该公式原理,能更好的帮助我们在投资中做决策:

  1. 盈利与成本的计算
  2. 股票收益率
  3. 凯利公式 

0

  • ( f^* ) 是应该投资的资金比例。
  • ( b ) 是每次投资的盈利比率。
  • ( p ) 是获胜的概率。
  • ( q ) 是失败的概率,( q = 1 - p )。

如何用数学公式选择出年利率比较高的股票,用那几个数学公式能帮助我更好的投资,用历史收益率购买靠谱吗?

使用历史收益率来选择年利率较高的股票是一种常见的方法,但它有其局限性。历史收益率可以提供关于股票过去表现的信息,但并不总能准确预测未来表现。

以下是一些考虑因素:

0

下面是我写的一些实例,希望可以给大家一些思路:

用python y yfinance 计算纳斯达克前100的净资产收益率 (ROE): pd.concat 写

import yfinance as yf

import pandas as pd

import mysql.connector

from sqlalchemy import create\_engine

定义纳斯达克前100家公司的股票代码列表

nasdaq\_top\_100 = \['AAPL', 'MSFT', 'AMZN' ] # 请补全列表

创建一个空的列表来存储每家公司的DataFrame


dataframes = \[]

遍历股票代码列表

for ticker in nasdaq\_top\_100:

获取股票数据

stock = yf.Ticker(ticker)

获取财务报表数据

balance\_sheet = stock.balance\_sheet

income\_statement = stock.financials

计算ROE

net\_income = income\_statement.loc\['Net Income']

shareholder\_equity = balance\_sheet.loc\['Stockholders Equity']

roe = net\_income / shareholder\_equity

创建一个DataFrame来存储当前公司的ROE

df = pd.DataFrame({'Ticker': \[ticker], 'ROE': \[roe]})

将DataFrame添加到列表中


dataframes.append(df)

# 使用pd.concat合并所有公司的DataFrame

roe_df = pd.concat(dataframes)

输出结果

`print(roe\_df)`

#url = 'mysql+pymysql://username:password\@hostname:port/dbname?charset=utf8'

#engine = sa.create\_engine(url, echo=False)

engine = create\_engine('mysql+pymysql://a:jmdjsj\@127.0.0.1/a')

roe\_df.to\_sql('df', engine, index=False,

method = "multi",chunksize = 10000 ,if\_exists='replace')

如何用tidbserverless 给自己投资理财

一般来说roe高的股票投资收益会好很多


mysql> select \* from df;

\+--------+-----------------------------------------------------------------------------------------------------------+

\| Ticker | ROE |

\+--------+-----------------------------------------------------------------------------------------------------------+

\| AAPL | 2023-09-30 1.56076

2022-09-30 1.969589

2021-09-30 1.500713

2020-09-30 0.878664

dtype: object |

\| MSFT | 2023-06-30 0.350887

2022-06-30 0.436755

2021-06-30 0.431522

2020-06-30 0.374298

dtype: object |

\| AMZN | 2023-12-31 0.150712

2022-12-31 -0.018638

2021-12-31 0.24134

2020-12-31 0.228374

dtype: object |

然后我们用gpt给的另一端计算年化收益率的代码来算他们的历史收益

import yfinance as yf

下载以太坊过去5年的数据

eth\_data = yf.download('AMZN', period='5y')

计算每日收益率

daily\_returns = eth\_data\['Adj Close'].pct\_change()

计算累积收益率

cumulative\_returns = (1 + daily\_returns).cumprod() - 1

计算5年的总收益率

total\_return\_5y = cumulative\_returns.iloc\[-1]

年化收益率

annualized\_return = (1 + total\_return\_5y)\*\*(1/5) - 1

输出结果

print(f"5年总收益率: {total\_return\_5y:.2%}")

print(f"年化收益率: {annualized\_return:.2%}")

从这些数据来说AMZN 的收益比apple 和微软收益都差。我们带入历史收益来看看。

jiangming\@admin\njiangming \~ % python3 apple.py

\[\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*100%%\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*] 1 of 1 completed

5年总收益率: 272.70%

年化收益率: 30.10%

jiangming\@admin\njiangming \~ % python3 AMZN.py

\[\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*100%%\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*] 1 of 1 completed

5年总收益率: 101.90%

年化收益率: 15.09%

我准备用tidb的serverless开发一个理财网站。把各个股票的年华roe都算出来。数据库用tidb的serverless 我主要做内容

类似如下的代码。计算出来各个股票哪个最值得投资。这也算tidb的有效应用之一

import yfinance as yf
import pandas as pd
import mysql.connector
from sqlalchemy import create\_engine

定义纳斯达克前100家公司的股票代码列表

nasdaq\_top\_100 = \['AAPL', 'MSFT', 'AMZN' ] # 请补全列表

创建一个空的列表来存储每家公司的DataFrame

dataframes = \[]

遍历股票代码列表

for ticker in nasdaq\_top\_100:

获取股票数据

stock = yf.Ticker(ticker)

获取财务报表数据

balance_sheet = stock.balance_sheet
income_statement = stock.financials

计算ROE

net_income = income_statement.loc['Net Income']
shareholder_equity = balance_sheet.loc['Stockholders Equity']
roe = net_income / shareholder_equity

创建一个DataFrame来存储当前公司的ROE

df = pd.DataFrame({'Ticker': [ticker], 'ROE': [roe]})

将DataFrame添加到列表中

dataframes.append(df)

使用pd.concat合并所有公司的DataFrame

roe\_df = pd.concat(dataframes)

输出结果

print(roe\_df)
\#url = 'mysql+pymysql://username:password\@hostname:port/dbname?charset=utf8'
\#engine = sa.create\_engine(url, echo=False)
engine = create\_engine('mysql+pymysql://a:jmdjsj\@127.0.0.1/a')
roe\_df.to\_sql('df', engine, index=False,
method = "multi",chunksize = 10000 ,if\_exists='replace')

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论